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

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

Войти
Регистрация
Восстановить пароль
 
Любовь777
0 / 0 / 0
Регистрация: 24.05.2014
Сообщений: 9
#1

Подскажите пожалуйста в чем ошибка?(С++,структуры,стек) - C++

28.05.2014, 19:13. Просмотров 223. Ответов 2
Метки нет (Все метки)

Подскажите пожалуйста, в чем ошибка
При считывании из файла единственной записи
5группа
"Anokhin
Viktor
petrovich

4
5
3
4 "

,программа выдает
list after elements removing
Group:9966824
Familia:*
Name:Viktor
Otchestvoetrovich
B1:4
B2:55
B3:7
B4:8
,

судя по всему он просто не считывает фамилию и группу и заполняет их рандомом.
текст проги
C++ (Qt)
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#include <stdio.h>
#include <string.h>
 
#include <limits.h>
#include <windows.h>
#include <locale>
 
#ifdef Q_OS_WIN32
const char* codecName = "IBM866";
#endif
 
 
 
 
 
#define Lmax 20
#define CLR while(fgetc(f)!='\n')
 
struct Student
{
 
    char Group[Lmax];
    struct
    {
        char Famil[Lmax], Name[Lmax], Otch[Lmax];
                                                        //s_name - surname
    }FIO; //manufacturer - производитель
    struct
    {
        int B[Lmax];
    }uspevaemost;
 
    Student *next; //поле указателя на следующую запись
};
//формирование стека стульев. На входе - имя входного файла
 
Student* stack(char _name[])
{
    Student *tek, *stack=NULL; //изначально список пуст
    FILE *f;
    if (!(f=fopen(_name, "r")))
    puts("File not found");
    else
    {
        while(!feof(f))
        {
        tek = new Student;
        if (fgets(tek->Group, Lmax, f))
        {   CLR;
            tek->Group[strlen(tek->Group)-1]='\0';
 
            fgets(tek->FIO.Famil, Lmax, f);
            tek->FIO.Famil[strlen(tek->FIO.Famil)-1]='\0';
 
            fgets(tek->FIO.Name, Lmax, f);
            tek->FIO.Name[strlen(tek->FIO.Name)-1]='\0';
 
            fgets(tek->FIO.Otch, Lmax, f);
            tek->FIO.Otch[strlen(tek->FIO.Otch)-1]='\0';
            puts("File schitan ne vec");
            CLR;
 
            fscanf(f,"%d %d %d %d",&tek->uspevaemost.B[0],&tek->uspevaemost.B[1],&tek->uspevaemost.B[2],&tek->uspevaemost.B[3]);
 
            puts("File schitan vec");
 
            tek->next=stack;
            stack=tek;
            }
        }
delete tek;
}
     puts("File schitan");
return(stack); //возвращается указатель на вершину стека
}
 
 
 
void vivod(Student* stack, char name[]) //вывод списка в файл
{FILE *f2=fopen(name, "w");
if (!stack)
{
fprintf(f2," list after elements removing is empty\n");
}
else
{
fprintf(f2, " list after elements removing\n");
//вывод списка в файл
while(stack!=NULL)
{
fprintf(f2, "Group:%d\n", stack->Group);
fprintf(f2, "Familia:%s\n", stack->FIO.Famil);
fprintf(f2, "Name:%s\n", stack->FIO.Name);
fprintf(f2, "Otchestvo:%s\n", stack->FIO.Otch);
fprintf(f2, "B1:%d\n",stack->uspevaemost.B[0] );
fprintf(f2, "B2:%d\n",stack->uspevaemost.B[1] );
fprintf(f2, "B3:%d\n",stack->uspevaemost.B[2] );
fprintf(f2, "B4:%d\n",stack->uspevaemost.B[3] );
stack=stack->next; //движение по списку
}
}
puts("File sohranen");
fclose(f2);
}
 
 
 
using namespace std;
 
int main()
{
Student *first; //указатель на вершину стека
char name1[Lmax], name2[Lmax]; /* имена входного и
выходного файла */
printf("Input file name: ");
gets(name1);
printf("Output file name: ");
gets(name2);
first=stack(name1); //формирование стека
if (first!=NULL)
{
 
vivod(first, name2); //вывод результата в файл
printf("Results saved in file %s\n", name2);
}
return 0;
}
текст задания прикрепила


Добавлено через 2 минуты
каждая запись добавляется в стек*
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2014, 19:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Подскажите пожалуйста в чем ошибка?(С++,структуры,стек) (C++):

подскажите пожалуйста в чем ошибка) - C++
при написании программы вылезла ошибка &quot;...Возможно, вы забыли добавить директиву &quot;#include &quot;stdafx.h&quot;&quot; в источник&quot; - добавил #include...

Пожалуйста, подскажите в чем у меня ошибка? - C++
У меня вот такая задача: &quot;Дана символьная матрица размера 4 х 5. Из последовательности её строк сформировать новую строку и определить ее...

подскажите пожалуйста, в чем моя ошибка? - C++
подскажите пожалуйста, в чем моя ошибка? надо определить точки принадлежащие и не пренадлежащие темной фигуре... ...

Подскажите пожалуйста, я тут новенький в чем ошибка? - C++
&quot;int main (void){int х, *р; х = 10; *р = х;return 0;}&quot; Я долгое время не как не пойму... У казатель &quot;р&quot; не получает адреса, как мне...

Подскажите пожалуйста где можно почитать про структуры - C++
Подскажите пожалуйста где можно почитать про структуры Добавлено через 1 минуту Структуры – это составные типы данных, построенные с...

Выскакивает ошибка Stack around the voriable 'text' was corrupted. Подскажите пожалуйста в чём ошибка - C++
Выскакивает ошибка Stack around the voriable 'text' was corrupted. Подскажите пожалуйста в чём ошибка. #include &lt;iostream&gt; #include...

2
nmcf
5677 / 4987 / 1700
Регистрация: 14.04.2014
Сообщений: 20,335
28.05.2014, 19:21 #2
Я тебе вроде уже объяснял, что 71-ю строку надо убрать. Ты удалишь начальный элемент, связь потеряется и возвратишь неизвестно что.
0
Любовь777
0 / 0 / 0
Регистрация: 24.05.2014
Сообщений: 9
28.05.2014, 19:58  [ТС] #3
нет,она просто освобождает память для указателя,
т.к здесь создается стек.

71 строка,и ее отсутствие не повлияло на результат программы

Добавлено через 17 минут
После того как убрала 71 строку,программа стала считывать из файла нормально только 1 запись, а все остальные съезжают

Исх.файл

group5
Anokhin
Viktor
petrovich
4
5
5
3
group6
Ivanov
Ivan
Ivanich
4
5
5
5
group1
Gorbilin
Dima
Livanov
4
5
3
3
group7
Lolin
Lol
petrovich
5
5
5
5


результат

list after elements removing
Group:Lol
Familia:petrovich
Name:5
Otchestvo:5
B1:5
B2:5
B3:0
B4:0
Group:
Familia:
Name:group7
Otchestvo:Lolin
B1:0
B2:0
B3:0
B4:0
Group:group1
Familia:Gorbilin
Name:Dima
Otchestvo:Livanov
B1:4
B2:5
B3:3
B4:3
Group:Ivan
Familia:Ivanich
Name:4
Otchestvo:5
B1:5
B2:5
B3:0
B4:0
Group:
Familia:
Name:group6
Otchestvo:Ivanov
B1:0
B2:0
B3:0
B4:0
Group:group5
Familia:Anokhin
Name:Viktor
Otchestvo:petrovich
B1:4
B2:5
B3:5
B4:3
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2014, 19:58
Привет! Вот еще темы с ответами:

Подскажите пожалуйста в чем может быть трабл при компиляции класса выдает ошибку - C++
Подскажите пожалуйста в чем может быть проблема: при компиляции класса выдает ошибку: (Ошибка LNK2001 неразрешенный внешний символ...

в чем ошибка наидите пожалуйста - C++
#include &quot;stdafx.h&quot; #include &quot;math.h&quot; #include &quot;conio.h&quot; #include &quot;locale.h&quot; #include &quot;stdlib.h&quot; int _tmain(int argc,...

В чем ошибка помогите пожалуйста. - C++
В чем ошибка помогите пожалуйста. # include &lt;iostream.h&gt; # include &lt;stdio.h&gt; # include &lt;math.h&gt; void main() {int a; cout &lt;&lt;&quot;...

посмотрите пожалуйста в чем ошибка - C++
посмотрите пожалуйста в чем ошибка #include &lt;fstream.h&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; #define n 1 struct Krainu { ...


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

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

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