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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Задания на строки http://www.cyberforum.ru/cpp-beginners/thread314707.html
Помогите сделать 4 задачки на строки! Я в языке С по строкам вообще не понимаю(( Есть все коды на Паскале) 1. Дан непустой ряд. Вывести коды его символов через пробел. 2. Дан ряд символов, которые изображают целое позитивное число. Если оно представляет собой запись целого числа со значением последней цифры равной 0, то вывести «Данное число делится на 10 нацело», в противном...
C++ Решение уравнения методом половинного деления Уравнение x^5-5=0 методом половинного деления нужно найти приблизительный корень #include <cstdlib> #include <iostream> #include <cmath> using namespace std; int main(int argc, char *argv) http://www.cyberforum.ru/cpp-beginners/thread314691.html
C++ перегрузка операций для однонаправленных списков
Задача вот в чём: АТД - однонаправленный список в элементами char. Дополнительно перегрузить следущие операции: + объединить списки; -- удалить элемент из начала; ==проверка на равенство. Проблема с перегрузкой операций. Ругается на часть кода где перегружается ==, если закоментить, то при выводе объединнёного списка и списка с удалённым элементом, выводит иероглифы. Помогите кто может!...
C++ Работа с файлами. Обработка исключений
Будьте добры, помогите с решением задач. Заранее благодарю откликнувшихся! :) 1. Создать класс для работы с файлами. В классе реализовать функцию поиска в исходном текстовом файле слова max длины. Найденное слово переписать в новый файл. 2. Реализовать шаблон класса Stack, реализующий стек. Для представления элемента стека использовать шаблон класса Node. Определить функции добавления,...
C++ Одномерные массивы. http://www.cyberforum.ru/cpp-beginners/thread314681.html
Объявить два динамических массива целых чисел.Написать функции для заполнения их случайными значениями и вывода результатов на экран.Первым на печать вывести массив, содержащий наибольшее значение(с помощью функций). Напечатать также это значение и его порядковый номер.Отсортировать по не возрастанию с помощью включения. Диапозон значений (-50:150). P.S. Прошу помогите как можно скорее....
C++ Вычислить с заданной точностью http://i22.***********/big/2011/0607/95/02db2277e85b5a1d8e82919de7293995.jpg подробнее

Показать сообщение отдельно
Nik.Shinkareff
2 / 2 / 0
Регистрация: 15.03.2011
Сообщений: 36

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

07.06.2011, 04:47. Просмотров 362. Ответов 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
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
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru