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

Ошибка в WHILE при обработке массива - C++

Восстановить пароль Регистрация
 
Nik.Shinkareff
 Аватар для Nik.Shinkareff
2 / 2 / 0
Регистрация: 15.03.2011
Сообщений: 35
07.06.2011, 04:47     Ошибка в WHILE при обработке массива #1
Проблема в коде:
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
59
60
#include <fstream.h>
#include <iostream.h>
#include <conio.h>
#include <vcl.h>
#include <windows.h>
#include <locale.h>
 
void main ()
{
        SetConsoleCP(1251);
        SetConsoleOutputCP(1251);
        const N=3; int i, n=0; char inst[15];
        struct student { char familiy[15]; char ima[15]; char instrument[15];
                         char konkursi[20]; int god;
                             };
cout<<"БАЗА ДАННЫХ СТУДЕНТОВ\n";
student stud;
system ("cls");
ifstream fin("student.txt", ios::in);
if (!fin)
              { printf("База пуста!\n\n\Введите колличество студентов: ");
                scanf("%d",&N);
                student stud[N];
                for(i=0;i<N;i++)
                  { n=n+1;
                    printf("\n%d студент",n);
                    printf("\nФамилия:"); scanf("%s",&stud[i].familiy);
                    printf("Имя:"); scanf("%s", &stud[i].ima);
                    printf("Инструмент:") ; scanf("%s",&stud[i].instrument);
                    printf("Конкурсы:"); scanf("%s",&stud[i].konkursi);
                    printf("Год приема:"); scanf("%d",&stud[i].god);
              };
                int i=0;
                printf("\nУкажите инструмент:"); scanf("%s",&inst);
                while (i<N && stud.instrument==inst)
                    {
                            printf("\n%s",stud[i].familiy);
                        printf("\n%s",stud[i].ima);
                        printf("\n%s",stud[i].instrument);
                        printf("\n%s",stud[i].konkursi);
                        printf("\n%d",stud[i].god);
                                i=i+1;
                    }   }
else
                {
                int n=1;
                printf("\nУкажите инструмент:"); scanf("%s",&inst);
                while (!fin.eof() && stud.instrument==inst)
                {        fin>>stud.familiy>>stud.ima>>stud.instrument>>stud.konkursi>>stud.god;
                        cout<<stud.familiy;
                        cout<<'|'<<'\t'<<stud.ima;
                        cout<<'|'<<'\t'<<stud.instrument;
                        cout<<"| "<<stud.konkursi;
                        cout<<" | "<<stud.god;
                        n++;
                }
                fin.close();
        }      
getch ();
}

Ругается на строку
C++
1
while (!fin.eof() && stud.instrument==inst)
structure required on left side of . or .*

В чем закралась ошибка?
Я пытаюсь ему задать условие на перебор цикла,
при выполнеии двух условий i<N и значение в массиве stud.instrument равно введенному ранее inst

P.S.
Компилирую в Borland C++ Builder 5.0
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
solar_wind
 Аватар для solar_wind
740 / 731 / 39
Регистрация: 06.07.2009
Сообщений: 2,937
Завершенные тесты: 1
07.06.2011, 06:18     Ошибка в WHILE при обработке массива #2
stud[i] это структура

stud это ссылка на структуру

stud.instrument это вообще незнамо что

пиши либо
C++
1
stud->instrument
либо
C++
1
stud[0].instrument
что ли.
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
07.06.2011, 06:30     Ошибка в WHILE при обработке массива #3
Nik.Shinkareff, во-первых для сравнения строк используется strcmp:

Если (strcmp(stud.instrument, inst) == 0), то строки равны.

Во вторых, stud у вас - это массив, обращение должно быть такого вида: stud[i].instrument

Добавлено через 1 минуту
а.. или может ты хочешь обратиться к структуре stud из 17 сторки? Не используй одинаковые имена для разных переменных (строки 17 и 23).
Nik.Shinkareff
 Аватар для Nik.Shinkareff
2 / 2 / 0
Регистрация: 15.03.2011
Сообщений: 35
07.06.2011, 16:17  [ТС]     Ошибка в WHILE при обработке массива #4
То что нужно, вот только он у меня ругается на библиотеку varchar(255).h - если не ошибаюсь ее нужно подключить для функции strcmp. Как еще можно проверить их идентичность.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
07.06.2011, 16:19     Ошибка в WHILE при обработке массива #5
Для strcmp нужно подключить string.h
Yandex
Объявления
07.06.2011, 16:19     Ошибка в WHILE при обработке массива
Ответ Создать тему
Опции темы

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