Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2015, 14:07   #1
Creston
Новичок
Джуниор
 
Регистрация: 10.03.2015
Сообщений: 3
По умолчанию Проблема с массивами на C++.

Здравствуйте, помогите, пожалуйста, решить задачку, у меня что-то не хочет.
Задача: Ввести в массив оценки студентов, посчитать среднее арифметическое, если оно меньше 2,5 написать, что студент должен быть отчислен.
Вот код, который я написал:
Код:
#include<iostream>
using namespace std;
int main ()
{
    setlocale (0,"rus");
    const int n=4;
    int A[n];    
    int i,m=0;
    double avg=0;
    for (i=1;i<=4; i++) {
        cout << "Введите оценку студента";
        cin>>A[m];
        }
        for (i=1;i<=4;i++) {
        avg = (avg +A[m])/4;
        }
        
        cout << avg << ' ';
        cout << A[n];
        if (avg<=2.5) cout << "Студент должен быть отчислен" << endl;
        else cout << "Пусть учится" << endl;
        system ("pause");
return 0;
}
Он неправильно считает и выдает неправильный результат. Скажите, в чем ошибка*+?

Последний раз редактировалось Stilet; 10.03.2015 в 16:29.
Creston вне форума Ответить с цитированием
Старый 10.03.2015, 14:44   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Ошибка в том, что массивы нумеруются с 0
p51x вне форума Ответить с цитированием
Старый 10.03.2015, 15:04   #3
Creston
Новичок
Джуниор
 
Регистрация: 10.03.2015
Сообщений: 3
По умолчанию

Исправил на нули в цикле for все равно та же ерунда, укажите, в каких строчках ошибка?
Creston вне форума Ответить с цитированием
Старый 10.03.2015, 16:15   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Во-первых, у вас в задании "оценки студентов", т.е. скорее всего надо не массив оценок, а массив студентов с оценками.

Во-вторых, "Исправил на нули в цикле for" этого мало. Надо и вторую границу правильную сделать.

В-третьих,
Код:
for (i=1;i<=4; i++) {
cout << "Введите оценку студента";
cin>>A[m];
}
Зачем вам цикл, если вы индекс его не используете? Почему вы все оценки пишите в один и тот же элемент?

В-четвертых,
Код:
for (i=1;i<=4;i++) {
avg = (avg +A[m])/4;
}
Вы уверены, что знаете значение термина "среднее арифметическое"? Сколько раз вы тут поделите на 4? Почему вы прибавляете один и тот же элемент массива?

В-пятых,
Код:
cout << A[n];
Зачем выводить один элемент массива? Тем более, что его не существует (нумерация с 0)...

В-шестых,
Код:
avg<=2.5
Так сравнивать даблы плохая практика, но в качестве домашнего задание прокатить может.
p51x вне форума Ответить с цитированием
Старый 10.03.2015, 17:41   #5
Creston
Новичок
Джуниор
 
Регистрация: 10.03.2015
Сообщений: 3
По умолчанию

"Во-первых, у вас в задании "оценки студентов", т.е. скорее всего надо не массив оценок, а массив студентов с оценками"

Напишите, пжлст, как его сделать?

"В-третьих,
Код:

for (i=1;i<=4; i++) {
cout << "Введите оценку студента";
cin>>A[m];
}

Зачем вам цикл, если вы индекс его не используете? Почему вы все оценки пишите в один и тот же элемент?"

Для того, чтобы строку "Введите оценку студента" он ввел i раз. Оценки в один элемент: как на уровне кода написать в разные элементы?


"Почему вы прибавляете один и тот же элемент массива?"
А как прибавить другой элемент? Написать m+1?

"В-пятых,
Код:

cout << A[n];

Зачем выводить один элемент массива? Тем более, что его не существует (нумерация с 0)..."

Как вывести все элементы массива?

Это не домашнее задание, я изучаю С++ самостоятельно, в перерывах на работе, и срок моего программирования только 2 недели. Поэтому много ошибок
Creston вне форума Ответить с цитированием
Старый 10.03.2015, 17:58   #6
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Код:
for (i = 0; i < n; i++) // смотри внимательно
и выкинуть переменную m.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 10.03.2015, 19:47   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
Напишите, пжлст, как его сделать?
Вариантов много. Например, можно сделать структуру/класс студент и в нем поля для оценок, у же их будет массив.

Цитата:
Для того, чтобы строку "Введите оценку студента" он ввел i раз.
Тогда хотя бы писали б "Введите iтую оценку студента".

Цитата:
Оценки в один элемент: как на уровне кода написать в разные элементы?
Вы серьезно? Вы почтовые ящики видели? А квартиры? И многое другое? Вот с массивами таже фигня. Есть имя и есть номер элемента. А теперь сами ответьте как писать не в а[0], а в другой.

Цитата:
А как прибавить другой элемент? Написать m+1?
У вас есть массив с элементами под номерами 0, 1, 2, ... и есть счетчик цикла, который бегает 0, 1, 2, ... И теперь самое сложное это их совместить.

Цитата:
Как вывести все элементы массива?
По старинке в цикле или по модному, типа
Код:
copy(Arr,Arr+5,ostream_iterator<int>(cout,"\n"));
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с массивами rbkblhjy Паскаль, Turbo Pascal, PascalABC.NET 6 31.08.2011 18:59
Проблема с массивами Seran4ek Общие вопросы Delphi 1 11.04.2010 17:48
проблема с массивами Dimanduc Общие вопросы Delphi 4 31.03.2009 20:16
Проблема с МАССИВАМИ! Help! GorNikSar Паскаль, Turbo Pascal, PascalABC.NET 3 19.12.2008 13:43