Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Toshik_
1 / 1 / 0
Регистрация: 17.08.2013
Сообщений: 91
#1

При введении больше 20 чисел программа выдает странный результат - C++

20.08.2013, 16:35. Просмотров 274. Ответов 4
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
#include <locale>
using namespace std;
 
double t1, t2;
 
int main()
{
    setlocale(LC_ALL, "RUS");
 
    int b, i, f,g;
    double c, c1;
 
    cout << "Введите кол-во учащихся: ";
    cin >> b;
 
    int* mas = new int [b];
    int* mas_1 = new int [b];
 
    cout << "Введите оценки 1 класса" << '\n';
    for (i=1; i<=b; i++){
        cout << i << ": ";
        cin >> f;
        if (f<1 || f >5){
        cout << "\nВведите оценку от 1 до 5: ";
        cin >> f;
        }
        else mas[i] = f;
    }
    cout << "\nВведите оценки 2 класса" << '\n';
    for (g=1; g<=b; g++){
        cout << g << ": ";
        cin >> f;
        if (f<1 || f >5){
        cout << "\nВведите оценку от 1 до 5: ";
        cin >> f;
        }
        else mas_1[g] = f;
    }
    c=c1=0;
    for (i=1; i<=b; i++) {
        c=c+mas[i];
    }
    for (g=1; g<=b; g++) {
        c1=c1+mas_1[g];
    }
    cout << "Средняя оценка 1 класса: " << (int)c/b << '\n';
    cout << "Средняя оценка 2 класса: " << (int)c1/b << '\n';
    system("pause");
    return 0;
}
При введении больше 20 чисел выдает странный результат, в чем ошибка?
И как сделать чтобы был цикл вечен, т.е. вот например пользователь вводит 0, а потом опять 0, и чтобы он вводил до тех пор пока не введет правильно.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.08.2013, 16:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос При введении больше 20 чисел программа выдает странный результат (C++):

При использовании оператора GOTO зацикливается программа при введении букв. - C++
Приветствую всех новых знакомых в этом храме программирования. Я новичек, пытаюсь программировать в С++ недавно. У меня возник вопрос...

Программа выдает не правильный результат - C++
Задание: Задана прямоугольная матрица размером N x M вещественных 8-ми байтовых чисел и вектор B(M) вещественных 8-ми байтовых чисел. ...

Почему программа выдает такой результат - C++
Всем привет. У меня в голове образовалась каша с полиморфизмом. Вот такой код: class A { public: virtual void Test() { ...

Метод Ньютона (касательных), программа выдает неправильный результат - C++
Здравствуйте. Проблема в том, что с моей функцией программа выдает неверный результат(хотя если написать функцию, например x*x-2, то все...

Программа для подсчета калорий выдает неправильный результат - C++
Здравствуйте. Недавно начал изучать c++. Написал простую программу для подсчета калорий. Она выдаёт неправильный результат. При вводе...

неверно выдает результат при компилировании - C++
добрый вечер, дана задача :&quot;1. Вычислить медианы треугольника со сторонами a, b, c по формулам(фото)&quot; но при отладке вне зависимости от...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Croessmah
Модератор
Эксперт CЭксперт С++
13132 / 7395 / 828
Регистрация: 27.09.2012
Сообщений: 18,226
Записей в блоге: 3
Завершенные тесты: 1
20.08.2013, 16:36 #2
Цитата Сообщение от Toshik_ Посмотреть сообщение
в чем ошибка?
В том, что индексация в массиве начинается с нуля. У Вас выход за пределы выделенной памяти
Toshik_
1 / 1 / 0
Регистрация: 17.08.2013
Сообщений: 91
20.08.2013, 16:38  [ТС] #3
Цитата Сообщение от Croessmah Посмотреть сообщение
В том, что индексация в массиве начинается с нуля. У Вас выход за пределы выделенной памяти
А как исправить?
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.08.2013, 16:50 #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Toshik_ Посмотреть сообщение
А как исправить?
C++
1
2
3
4
5
6
7
8
9
10
cout << "Введите оценки 1 класса" << '\n';
    for (i=0; i<b; i++){
        cout << i << ": ";
        cin >> f;
        if (f<1 || f >5){
        cout << "\nВведите оценку от 1 до 5: ";
        cin >> f;
        }
        else mas[i] = f;
}
Croessmah
Модератор
Эксперт CЭксперт С++
13132 / 7395 / 828
Регистрация: 27.09.2012
Сообщений: 18,226
Записей в блоге: 3
Завершенные тесты: 1
20.08.2013, 16:53 #5
Цитата Сообщение от Toshik_ Посмотреть сообщение
А как исправить?
Почитать учебник или хотя бы главу о массивах
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.08.2013, 16:53
Привет! Вот еще темы с ответами:

Найти сумму первых непарных 11 чисел в заданном массиве (выдает результат не по условию) - C++
Дан одномерный массив из 25 чисел. Найти сумму первых непарных 11 чисел. Вот мои два кода (наброски): #include &lt;iostream&gt; #include...

При работе с программой выдает не результат, а какие то непонятные символы - C++
Вот скриншот: Собственно что это и как убрать ?

При значении больше 10 выводит неверный результат - C++
При вводе чисел до 10, например 4 выводится результат 4 = 4.02725. Начина с 10 результат такой 10=10. Почему так ? #include &lt;iostream&gt; ...

Компилятор выдает странный ответ - C++
#include &lt;iostream&gt; int main() { std::cout &lt;&lt; &quot;Введи 2 числа&quot; &lt;&lt; std::endl; int x = 0, y = 0; std::cin &gt;&gt; x &gt;&gt; y; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.08.2013, 16:53
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru