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

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

Восстановить пароль Регистрация
 
CHELOVEKPAUK
 Аватар для CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
16.10.2013, 21:30     Ошибка в цикле #1
(Задание - см. вложение)

Почему функция 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';
}
Миниатюры
Ошибка в цикле  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2013, 21:30     Ошибка в цикле
Посмотрите здесь:

файлы в С (Ошибка в цикле) C++
C++ Ошибка в цикле while
Ошибка в цикле C++
Арифметическая ошибка в цикле C++
C++ Ошибка в цикле
Ошибка в цикле C++
Ошибка в цикле C++
C++ Ошибка в цикле с очередью
C++ Ошибка в цикле
Strtok ошибка в цикле C++
C++ Ошибка в цикле while
C++ Ошибка в цикле

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

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

UPD: нашел ошибку. Лишний cin в цикле.
alsav22
5284 / 4803 / 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++;
    }
B@R_LOG
 Аватар для 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 ( ) 
    }
Не успел)
Yandex
Объявления
16.10.2013, 21:48     Ошибка в цикле
Ответ Создать тему
Опции темы

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