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

Ввод массива в цикле while - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 5.00
v0l0d1ka
9 / 9 / 0
Регистрация: 14.12.2010
Сообщений: 127
24.03.2011, 21:25     Ввод массива в цикле while #1
У меня в представленном коде, цикл while должен запрашивать ввод массива объектов, и прерываться по достижении конца массива или при вводе пустой строки.
Но, при всем моем старании код не работает должным образом. подскажите, в чем моя ошибка.

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
52
53
54
55
56
57
58
#include<iostream>
#include<cstring>
using namespace std;
 
const int Len = 40;
struct golf{
       char fullname[Len];
       int handicap;
};
void setgolf(golf & g, const char * name, int hc);
int setgolf(golf & g);
void handicap(golf & g, int hc);
void showgolf(const golf & g);
 
void setgolf(golf & g,  char * name, int hc)    // перегруженная ф-ия
{
     strcpy(g.fullname, name);
     g.handicap = hc;
}
     
int setgolf(golf & g)                  //заполняем структуру значениями
{
    cout << "Enter fullname: ";        
    cin.get(g.fullname, Len);
    
    if (*(g.fullname) != '\n')    
    {
       cout << "Enter a handicap: ";
       cin >> g.handicap;
       cout << "\n"; 
       return 1;                  //ф-ия возвр. 1, если введены все значения
    }
    else 
       return 0;                      //И 0, если вместо имени введена пустая строка
}
void handicap(golf & g, int hc)
{
     g.handicap = hc;
}
void showgolf(const golf & g)
{
     cout << g.fullname << "\t" << g.handicap;
}
 
 
int main()
{
    golf players[3];
    int i = 0;
    while (setgolf(players[i]) && i < 3 )  //заполняем массив 
    {
        ++i;
        cin.get();
    }
    showgolf(players[1]);
    
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2011, 21:25     Ввод массива в цикле while
Посмотрите здесь:

C++ Ввод данных в цикле
как обнулить значение массива в цикле?(с++) C++
C++ ввод двумерного массива,ввод размерности массива,заполнение массива случайными числами
Заполнение массива случайными числами в цикле C++
C++ Написать программу, которая вычисляет сумму элементов двумерного массива по столбцам. Организовать ввод массива с клавиатуры по строкам
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
LaГushan
123 / 123 / 14
Регистрация: 12.03.2011
Сообщений: 227
25.03.2011, 09:49     Ввод массива в цикле while #2
C++
1
 while (setgolf(players[i]) && i < 2 )
надо так, а то вы в массив из трёх элементов, помещаете 4.
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
25.03.2011, 10:20     Ввод массива в цикле while #3
Цитата Сообщение от LaГushan Посмотреть сообщение
надо так, а то вы в массив из трёх элементов, помещаете 4.
неверно, так поместиться два элемента.
C++
1
while (i < 3 && setgolf(players[i]))
v0l0d1ka
9 / 9 / 0
Регистрация: 14.12.2010
Сообщений: 127
25.03.2011, 13:19  [ТС]     Ввод массива в цикле while #4
Цитата Сообщение от LaГushan Посмотреть сообщение
C++
1
 while (setgolf(players[i]) && i < 2 )
надо так, а то вы в массив из трёх элементов, помещаете 4.
Вот аналогичный код, который работает верно

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cstdlib>
using namespace std;
 
int main()
{
    int arr[3];
    int i = 0;
    while (i < 3)
    {
        arr[i] = 5;
        cout << arr[i] << " ";
        i++;
    }
    cout << endl;
    system("pause");
return 0;
}
т.е. i < 2 не правильное логическое выражение
Yandex
Объявления
25.03.2011, 13:19     Ввод массива в цикле while
Ответ Создать тему
Опции темы

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