Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Задача по массиву


Автор: Creston 21.3.2015, 17:26
Здравствуйте, у меня вот такой код:

Код

#include<iostream>
using namespace std;
int main ()
{
    int i,a[80],n=0;
    double avg=0;
    for (i=1;i<=4;i++) {
        cout << "Vvedite otsenky studenta" << endl;
        cin>>n;
        n=a[n];
        }
        avg+=a[n];
        avg/=4;
       cout << avg << endl;
 if (avg<=2.5) cout << "Student doljen bit otchislen" << endl;
        else cout << "Pust ychitsya" << endl;
        system("pause");
        return 0;
        }


В коде какая-то ошибка. Задача: ввести 4 оценки учащегося, если средний бал, не превышает 2.5, выдать сообщение, что он должен быть отчислен, если нет, то что пусть учится. У меня же неправильно считает переменную avg, не могу понять почему, то ли из-за массива, то ли еще хрен знает почему. Помогите, пжлст, кто чем сможет

Автор: kemiisto 21.3.2015, 17:36
Строки 9-10:
Код
cin>>n;
n=a[n];

Вы считываете значение, введённое с клавиатуры в переменную n, назначение которой совершенно непонятно из её названия. Затем Вы совершаете ещё более непонятное присваивание этой переменной n значение массива a с индексом n. Каким бы целям не служила переменная n, этот кусок кода - бред собачий.

Автор: Creston 21.3.2015, 17:40
kemiisto,  Все дело в том, что задача на массивы. n нужно исключительно, чтобы в нее записать файл, если то же самое делать без массива, все равно переменная avg принимает какие угодно значения, кроме правильных.
Я только новичок (3 недели как), как это лучше переписать, с учетом того, что дошел пока только до массивов?

Автор: kemiisto 21.3.2015, 18:10
Цитата(Creston @  21.3.2015,  16:40 Найти цитируемый пост)
n нужно исключительно, чтобы в нее записать файл, если то же самое делать без массива, все равно переменная avg принимает какие угодно значения, кроме правильных.

Бессмыслица полная, уж извините. Да и массивы тут вообще не нужны, строго говоря. Но уж если так хочется с массивом, то что-то вроде:

Код

#include<iostream>

int main()
{
    int a[4];
    double avg = 0;
    
    for (int i = 0; i < 4; ++i) {
        std::cout << "Vvedite otsenky studenta" << std::endl;
        std::cin >> a[i];
        avg += a[i];
    }
    
    avg /= 4;
    std::cout << avg << std::endl;
    
    if (avg <= 2.5) {
        std::cout << "Student doljen bit otchislen" << std::endl;
    } else {
        std::cout << "Pust ychitsya" << std::endl;
    }
    
    system("pause");
    
    return 0;
}

Автор: Creston 21.3.2015, 18:23
kemiisto, Огромное спасибо. 

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