Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: [C++] задача на одномерный массив  (Прочитано 8111 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
ArniLand
Интересующийся

ua
Offline Offline

« : 12-03-2011 21:30 » 

Разбираюсь с массивами. Вот попробовал первое задание сделать. Прошу высказать замечания к моей программе.Задание взял с книги Павловской.
В одномерном массиве, состоящем из n целых вещественных чисел, вычислить:
1. сумму отрицательных чисел
2. произведение элементов массива, расположенным между максимальным и минимальным элементом массива.
3. Упорядочить массив по возрастанию
Для сортировки я использовал пузырьковую сортировку. Правда когда писал код по сортировке,я подглядывал в код реализации данного алгоритма сортировки. Такой подход к решению задач не страшен?

Код: (C++)
#include <iostream>

using namespace std;

double sumArray(double a[], int size)
{
        double total = 0;
        for (int i = 0; i < size; i++)
        {
                if (a[i] < 0)
                {
                        total += a[i];
                }
        }
        cout << "Sum is: " << total << endl;
        return total;
}

double findMin(double b[], int size)
{
        double min = b[0];
        for (int j = 0; j < size; j++)
        {
                if (min > b[j])
                {
                        min = b[j];
                }
        }
        return min;
}

double findMax(double c[], int size)
{
        double max = c[0];
        for (int z = 0; z < size; z++)
        {
                if (max < c[z])
                {
                        max = c[z];
                }
        }
        return max;
}

double productArr(double d[], int size)
{
        double product = 1;
        for (int k = 0; k < size; k++)
        {
                if(d[k] >= findMin(d, size) &&  d[k] <= findMax(d, size))
                {
                        product *= d[k];
                }
        }
        cout << "Product is: " << product << endl;
        return product;
}

void bubbleSort(double e[], int size)
{
        int j;
        for (int i = 0; i < size; i++)
        {
                for (j = 0; j < size - 1; j++)
                {
                        if (e[j] > e[j + 1])
                        {
                                int temp = e[j + 1];
                                e[j + 1] = e[j];
                                e[j] = temp;
                        }
                       
                }
        }
        for (int h = 0; h < size; h++)
        cout << "Sort :" << e[h] << endl;
}

int main()
{
        const int N = 10;
        double arr[N] = {2, -3, 5, -8, 9, 10 , -6, 4, -7, 6};

        for (int i = 0; i < N; i++)
        {
                cout << arr[i] << ' ';
        }
        cout << "\n";
        sumArray(arr, N);
        productArr(arr, N);
        bubbleSort(arr, N);
        cin.ignore().get();
        return 0;
}
Записан
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 12-03-2011 21:57 » 

Для начала лучше, наверное, не подглядывать, а попробовать-таки по одному описанию алгоритмы реализовывать. Из подглядывания вряд ли родится понимание, что же на самом деле происходит, а также навык аккуратно реализовывать поведение, до того существовавшее только в виде словесного описания.

Если уж подглядывать - то по-крупному: попытаться (в идеале - по одному только коду) разобраться, каким образом действует алгоритм, и почему это приводит к нужному результату. Не писать свой код, а просто понять, как работает чужой. Это, я считаю, весьма полезное упражнение.

Потом уже, вооружившись пониманием, попробовать без подглядывания реализовать свой вариант.
« Последнее редактирование: 12-03-2011 22:00 от Вад » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines