Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите новечку (Требуется разъеснение) / 7 сообщений из 7, страница 1 из 1
12.09.2005, 13:44
    #33264073
BioIgor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новечку (Требуется разъеснение)
Дана задача: Найти минимум и максимум в масиве, а также расположение в масиве.
#include <iostream.h>
void main ()
{ double sum, min, max, a[10];
int i, b, c;
cout << "Введите числа" << endl;
cin >> a[0] >> a[1] >> a[2] >> a[3] >> a[4] >> a[5] >> a[6] >> a[7] >> a[8] >> a[9];
// вычесление суммы
for (i=sum=0; i<10; i++) sum += a ;

cout << "Сумма = " << sum << endl;
sum /= 2;
cout << "Среднее арифметическое = " << sum << endl;

// минимум и максимум
cout << "Минимум и Максимум: " << endl;

for (i=0, min=max=a[0]; i<10; i++)
{
if (a < min)
{ min = a;
c = i+1;
}
else if (a > max)
{ max = a;
b = i+1;
}

}

cout << "Минимум = " << min << "\tНомер в массиве " << c << endl;
cout << "Максимум = " << max << "\tНомер в массиве " << b << endl;
}


Теперь сам вопрос. Почему выдаётся число -858993460, если место расположения в массиве a[0]?????????
...
Рейтинг: 0 / 0
12.09.2005, 13:58
    #33264132
Станислав C.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новечку (Требуется разъеснение)
BioIgorДана задача: Найти минимум и максимум в масиве, а также расположение в масиве.
#include <iostream.h>
void main ()
{ double sum, min, max, a[10];
int i, b, c;
cout << "Введите числа" << endl;
cin >> a[0] >> a[1] >> a[2] >> a[3] >> a[4] >> a[5] >> a[6] >> a[7] >> a[8] >> a[9];
// вычесление суммы
for (i=sum=0; i<10; i++) sum += a ;

cout << "Сумма = " << sum << endl;
sum /= 2;
cout << "Среднее арифметическое = " << sum << endl;

// минимум и максимум
cout << "Минимум и Максимум: " << endl;

for (i=0, min=max=a[0]; i<10; i++)
{
if (a < min)
{ min = a;
c = i+1;
}
else if (a > max)
{ max = a;
b = i+1;
}

}

cout << "Минимум = " << min << "\tНомер в массиве " << c << endl;
cout << "Максимум = " << max << "\tНомер в массиве " << b << endl;
}


Теперь сам вопрос. Почему выдаётся число -858993460, если место расположения в массиве a[0]?????????
1. Среднее арифметическое=сумма значений/ число элементов
2. Объявление переменной не гарантирует, что ее значение равно 0 (это относительно переменных b и c, используемы при поиске максимума и минимума). Обнулите их перед циклом и все встанет на свои места...
...
Рейтинг: 0 / 0
12.09.2005, 13:59
    #33264138
IKV
IKV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новечку (Требуется разъеснение)
Может потому, что у тебя для этого случая (min = a[0]) нигде не заполняется переменная c? ;-)
...
Рейтинг: 0 / 0
12.09.2005, 14:03
    #33264152
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новечку (Требуется разъеснение)
2 Biolgor

Алгоритм такой. Для нахождения минимального
элемента в массиве:
1) первый элемент считаешь минимальным c:=a[0]
2) для всех остальных a[1]...a[n] выполняешь типовую проверку.
...
Рейтинг: 0 / 0
12.09.2005, 14:10
    #33264176
BioIgor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новечку (Требуется разъеснение)
С этим вроде разобрался, но от куда взялось такое неслабое число. Насколько я знаю комп неумеет брать данные из неба. Или технология настолько поднялась?!
...
Рейтинг: 0 / 0
12.09.2005, 14:18
    #33264193
Станислав C.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новечку (Требуется разъеснение)
BioIgorС этим вроде разобрался, но от куда взялось такое неслабое число. Насколько я знаю комп неумеет брать данные из неба. Или технология настолько поднялась?!
Повторяю еще раз:
Код: plaintext
1.
 Объявление переменной не гарантирует, что ее значение равно  0  !!!
При объявлении переменной Вам выделяется некоторая область памяти. Там может быть записана любая информация ("мусор"). В своей программе Вы эту переменную явно (b=с=0;) не обнуляете (ну не получает у Вас управление этот блок при условии min=a[0]!!!). Поэтому, когда приходит время печатать значение переменной, Вам выдается интерпретация "мусора" в зависимости от типа переменной (в данном случае int)...
...
Рейтинг: 0 / 0
12.09.2005, 14:20
    #33264201
BioIgor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новечку (Требуется разъеснение)
Вот теперь понял! Огромное спасибо!
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите новечку (Требуется разъеснение) / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]