Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++] Работа с одномерными массивами


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




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

Тема перенесена! 

Автор: borisbn 10.2.2012, 11:15
http://liveworkspace.org/code/5c659b08633c8e638bc093ead1c832fe

Автор: darkart 10.2.2012, 11:18
Код

#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;
}

Автор: t_gran 10.2.2012, 13:15
Мой вариант на 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;
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)