Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
#1

Ошибка в цикле - C++

16.10.2013, 21:30. Просмотров 212. Ответов 4
Метки нет (Все метки)

(Задание - см. вложение)

Почему функция fill_array() возвращает неправильные значения?
Когда ввожу 1 или 2 числа, выводит цифру 1; когда ввожу 3 числа - выводит 2. В чем ошибка?

Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <Windows.h>
using namespace std;
 
#define rus setlocale(0,"rus");SetConsoleCP(1251);SetConsoleOutputCP(1251);
 
int fill_array(double *arr, int n);
void show_array (double *arr, int n);
 
int main()
{
    rus;
    double arr[10] = {0};
    cout << fill_array(arr, 10);
    system("pause");
    return 0;
}
 
int fill_array(double *arr, int n)
{
    rus;
    int i = 0;
    while ((i < n) && (cin >> arr[i]))
    {
        cin >> arr[i];
        i++;
    }
    return i;
}
 
void show_array(double *arr, int n)
{
    for (int i = 0; i < n; i++)
        cout << arr[i] << '\n';
}
0
Миниатюры
Ошибка в цикле  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2013, 21:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка в цикле (C++):

Ошибка в цикле - C++
Задание: Написать цикл программы. от К=1 до К=10 #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main () ...

Ошибка в цикле - C++
Суть задачи: Разработать программу для приближенного вычисления величины y=Ʃ(1/((2*n+1)*(2*n-1))) , n=1,2,3,... Процесс вычисления...

Ошибка в цикле - C++
Суть программы: создаёт динамический список, каждый новый элемент списка заносится в конец. Ну, там далее ещё функций по мелочи, но не...

Ошибка в цикле - C++
Здравствуйте. Нужно вычислить факториал неотрицательного числа. К примеру: n! = n * (n - 1) * (n - 2) * ... (для значений n &gt; 1) ...

Ошибка в цикле while - C++
//--------------------------------------------------------------------------- #pragma hdrstop #include &lt;locale&gt; #include &lt;stdio.h&gt; ...

Ошибка в цикле while - C++
Привет всем! Ниже приведен код программы, в программе две функции одна change() переводит Ф.И.О в формат фамилия - инициалы, а вторая...

4
alsav22
5429 / 4824 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.10.2013, 21:44 #2
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
Когда ввожу 1 или 2 числа
Это вы как регулируете? Вводите нечисловое значение?
0
CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
16.10.2013, 21:45  [ТС] #3
Цитата Сообщение от alsav22 Посмотреть сообщение
Это вы как регулируете?
Ну в задании написано: пока не переполнится массив до конца, либо до ввода нечислового значения. Вот я ввожу два числовых значения, и букву например.

UPD: нашел ошибку. Лишний cin в цикле.
0
alsav22
5429 / 4824 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.10.2013, 21:47 #4
Если так:
C++
1
2
3
4
5
while ((i < n) && (cin >> arr[i]))
    {
        //cin >> arr[i];
        i++;
    }
1
B@R_LOG
18 / 18 / 0
Регистрация: 03.07.2013
Сообщений: 49
16.10.2013, 21:48 #5
Замени на
C++
1
2
3
4
5
6
7
int fill_array(double *arr, int n)
{
    rus;
    int i = 0;
    while ((i < n) && (cin >> arr[i++])) {}
    return i;
}
Как работает твой вариант:
C++
1
2
3
4
5
while ((i < 10) && (cin >> arr[i])) // пусть i=0. Значит здесь вводим arr[0].
    {
        cin >> arr[i]; //здесь опять вводим arr[0]
        i++; //в следующем заходе ты вводишь третье число как букву и он выходит на строчке while ( ) 
    }
Не успел)
1
16.10.2013, 21:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2013, 21:48
Привет! Вот еще темы с ответами:

Ошибка в цикле - C++
Помогите найти ошибку в цикле, пожалуйста #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; #include &lt;windows.h&gt; ...

Ошибка в цикле - C++
Хочу создать массив из 10 чисел. void main() { char a,i; for (i=0; i&lt;10; i++) { printf (&quot;Enter...

Арифметическая ошибка в цикле - C++
for (double i = .01; i &lt;= 1; i+=.01) { sum += i; cout&lt;&lt;i&lt;&lt;endl; } cout &lt;&lt; &quot;The sum is &quot; &lt;&lt; sum; и результат 49.5, а не 50.5 Но...

Ошибка в цикле с очередью - C++
Добрый день! Придумал глупый, но рабочий цикл проверки элементов очереди queue Моя очередь содержит числа с плавающей запятой...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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