Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Работа с одномерными массивами, Нужно составить программу 
:(
    Опции темы
Dzhabrail
Дата 10.2.2012, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 3.2.2012

Репутация: нет
Всего: нет



Помогите пожалуйста не могу решить задачу
                    Задан одномерный массив. Используя функцию вычислить сумму максимального и минимального элементов массива. Все данные распечатать




PM MAIL   Вверх
bsa
Дата 10.2.2012, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 1
Всего: 196



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 
PM   Вверх
borisbn
Дата 10.2.2012, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 11
Всего: 135





--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
darkart
Дата 10.2.2012, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 9.11.2005

Репутация: 26
Всего: 31



Код

#include <iostream>

const size_t MAX_ARRAY_SIZE = 1024;

bool InputArray( int* arr, size_t arraySize )
{
    if( arr == NULL )
        return false;

    for( size_t index = 0; index < arraySize; ++index )
        std::cin >> arr[ index ];

    return true;
}

bool PrintArray( const int* arr, size_t arraySize )
{
    if( arr == NULL )
        return false;

    for( size_t index = 0; index < arraySize; ++index )
        std::cout << arr[ index ] << " ";
    std::cout << std::endl;

    return true;
}

bool GetMin( const int* arr, size_t arraySize, int& min )
{
    if( arr == NULL || arraySize == 0 )
        return false;

    min = arr[ 0 ];

    for( size_t index = 1; index < arraySize; ++index )
    {
        if( arr[ index ] < min )
            min = arr[ index ];
    }

    return true;
}

bool GetMax( const int* arr, size_t arraySize, int& max )
{
    if( arr == NULL || arraySize == 0 )
        return false;

    max = arr[ 0 ];

    for( size_t index = 1; index < arraySize; ++index )
    {
        if( arr[ index ] > max )
            max = arr[ index ];
    }

    return true;
}

int main( int argc, char* argv[] )
{
    int arr[ MAX_ARRAY_SIZE ];
    size_t arraySize;
    int min, max;
    bool result;
    
    setlocale( LC_ALL, "Russian" );
    
    do
    {
        std::cout << "Количество элементов массива( 0 - " << MAX_ARRAY_SIZE << " )?" << std::endl;
        std::cin >> arraySize;
        if( arraySize > MAX_ARRAY_SIZE )
            std::cout << "Количество элементов должно быть в пределах от 0 до " << MAX_ARRAY_SIZE << "..." << std::endl;
    }
    while( arraySize > MAX_ARRAY_SIZE );

    std::cout << "Массив из " << arraySize << " элементов?" << std::endl;
    InputArray( arr, arraySize );

    std::cout << "Исходный массив:" << std::endl;
    PrintArray( arr, arraySize );

    result = GetMin( arr, arraySize, min );
    result = result && GetMax( arr, arraySize, max );

    if( result )
    {
        std::cout << "max + min = " << max << " + " << min << " = " << max + min << std::endl;
    }
    else
    {
        std::cout << "Недостаточно данных. Ошибка..." << std::endl;
    }

    system( "pause" );

    return 0;
}

PM MAIL WWW ICQ Skype GTalk   Вверх
t_gran
Дата 10.2.2012, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 621
Регистрация: 13.11.2007
Где: г.Усть-Илимск

Репутация: 33
Всего: 37



Мой вариант на C
Код

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <stdbool.h>

//----------------------------------------------//
void Fill(int* array, size_t size)
{
   size_t i;
   for (i=0; i<size; ++i)
   {
      array[i] = rand();
   }
}
//----------------------------------------------//
void Print(const int* array, size_t size)
{
   size_t i;
   for (i=0; i<size; ++i)
   {
      printf("%d ", array[i]);
   }
   printf("\n");
}
//----------------------------------------------//
bool IsLeft(int a, int b)
{
   return a > b;
}
//----------------------------------------------//
bool IsRight(int a, int b)
{
   return a < b;
}
//----------------------------------------------//
int GetValue(const int* array, size_t size, bool (*func)(int, int))
{
   int val = 0;

   if (size)
   {
      val = array[0];
      
      size_t i;
      for (i=1; i<size; ++i)
      {
         if (func(val, array[i]))
         {
            val = array[i];
         }
      }
   }
   return val;
}
//----------------------------------------------//
int main()
{
   srand(time(NULL));

   size_t size;
   printf("array size: ");
   scanf("%u", &size);

   int* array = (int*) malloc(sizeof(int) * size);

   Fill(array, size);
   Print(array, size);

   int min = GetValue(array, size, IsLeft);
   int max = GetValue(array, size, IsRight);

   printf("%d + %d = %d\n", min, max, min+max);
   
   free(array);

   system("pause");
   
   return 0;
}



--------------------
Я знаю, что ничего не знаю© Сократ
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0483 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.