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

Ошибка в программе. Структура "Автомобиль" - C++

Восстановить пароль Регистрация
 
Bogdan_Fateev
0 / 0 / 0
Регистрация: 07.04.2014
Сообщений: 10
23.04.2014, 21:50     Ошибка в программе. Структура "Автомобиль" #1
Нуждаюсь в помощи. Сделал программу, но есть проблема с поиском.
Задание: создать программу, которая бы обеспечивала создание, просмотр, дополнения и извлечение данных из файла, содержащего сведения об автомобиле состоящие из названия его марки, номера, фамилии владельца. Данная информация о 20 автомобилей. Организовать поиск количества автомобилей каждой марки.
Проблема в том, что при поиске выводит "0" вместо нужного количества марок.
Например, я введу 2 машины с маркой "лада", а выводит вместо "2" "0".

Вот код:

Кликните здесь для просмотра всего текста
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
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
//---------------------------------------------------------------------------
struct ant
{
int kod;
char mark[15];
char fam[15];
double nomer;
};
FILE *f,*g;
ant x;
 
//stvorenn9
void stv(void)
{ if ((f=fopen("x.dat","w"))==NULL)
{perror("Fail uje suwestvuet");
getch();
exit(1);
}
cout<<"\n Vvedite inform avtomobilya\n";
do
{cout<<"\n Vvedite marku avtomobilya: ";
cin>>x.mark;
cout<<"\n Vvedite nomer avtomobilya: ";
cin>>x.nomer;
cout<<"\n Vvedite familiu vladelca: ";
cin>>x.fam;
fwrite(&x,sizeof(x),1,f);
}
while(getch()!=27);
fclose(f);
}
 
//dopolnenie
void dop(void)
{ if ((f=fopen("x.dat","a"))==NULL)
{perror("Fail uje sywestvuet");
getch();
exit(1);
}
cout<<"\n Vvedite inform avtomobilya\n";
do
{cout<<"\n Vvedite marku avtomobilya: ";
cin>>x.mark;
cout<<"\n Vvedite nomer avtomobilya: ";
cin>>x.nomer;
cout<<"\n Vvedite prizvuwe vladelca: ";
cin>>x.fam;
fwrite(&x,sizeof(x),1,f);
}
while(getch()!=27);
fclose(f);
}
 
//peresmotr
void per(void)
{ if ((f=fopen("x.dat","r"))==NULL)
{perror("Fail uje suwestvuet");
getch();
exit(1);
}
cout<<"\n Vvedite inform avtomobilya: \n";
while(fread(&x,sizeof(x),1,f)!=NULL)
{cout<<"\n Vvedite marku avtomobilya: "<<x.mark;
cout<<"\n Vvedite nomer avtomobilya: "<<x.nomer;
cout<<"\n Vvedite prizvuwe vladelca: "<<x.fam;
getch();
}
fclose(f);
}
 
//DEl
void del(void)
{ if ((f=fopen("x.dat","r"))==NULL)
{perror("Fail uje suwestvuet");
getch();
exit(1);
}
if((g=fopen("x1.dat","w"))==NULL)
{perror("Fail uje suwestvuet");
getch();
exit(1);
}
cout<<"\n Vvedite inform avtomobilya: \n";
while(fread(&x,sizeof(x),1,f)!=NULL)
{cout<<"\n Vvedite marku avtomobilya: "<<x.mark;
cout<<"\n Vvedite nomer avtomobilya: "<<x.nomer;
cout<<"\n Vvedite prizvuwe vladelca: "<<x.fam;
cout<<"\n\n UDALITE(y/n)?";
if(getch()=='n') fwrite(&x,sizeof(x),1,g);
}
fclose(f);
fclose(g);
unlink("x.dat");
rename("x1.dat","x.dat");
}
 
//dolg
void count(void)
{ char vodmark[15];
if((f=fopen("x.dat","r"))==NULL)
{perror("Fail uje sywestvuet");
getch();
exit(1);
}
cout<<"\nvvedite marku\n";
cin>>vodmark;
 int k=0;
while(fread(&x,sizeof(x),1,f))
if(vodmark==x.mark) k++;
cout<<"\n Kolichestvo marok: "<<k;
getch();
}
#pragma argsused
int main(int argc, char* argv[])
{
 int r;
clrscr();
do
{
clrscr();
cout<<"\n\n\n\t\t GLAVNOE MEHU \n\t1-SOZDANIE\n\t2-PERESMOTR";
cout<<"\n\t3-DOPOLNENIE\n\t4-DELETE\n\t5-PODSCHET\n\t6-BUXOD\n\t REGUM?\n\t";
cin>>r;
switch(r)
{case 1:{stv();break;}
case 2:{per();break;}
case 3:{dop();break;}
case 4:{del();break;}
case 5:{count();break;}
case 6:exit(1);
}
}
while(1);
 
        return 0;
}
//---------------------------------------------------------------------------
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2014, 21:50     Ошибка в программе. Структура "Автомобиль"
Посмотрите здесь:

Ошибка в программе, где создается шаблон класса "стек" C++
C++ Структура ORDER с полями "номер счета плательщика", "номер счета получателя" и "сумма платежа"
C++ Структура: Вывести тех студентов, кто сдал оба экзамена либо на "4" либо на "5"
ошибка в программе dev c++ пишет что-то на манеру:"нельзя будет откомпилировать ничего " C++
C++ Ошибка "Необработанное исключение" в программе с strlen и strtok
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5947 / 5552 / 1784
Регистрация: 18.12.2011
Сообщений: 14,184
Завершенные тесты: 1
23.04.2014, 21:54     Ошибка в программе. Структура "Автомобиль" #2
Стандартная ошибка.
if(vodmark==x.mark)
При сравнении текстов надо сравнивать строки, а не их адреса
C++
1
if(strcmp(vodmark,x.mark)==0)
Bogdan_Fateev
0 / 0 / 0
Регистрация: 07.04.2014
Сообщений: 10
23.04.2014, 22:01  [ТС]     Ошибка в программе. Структура "Автомобиль" #3
C++
1
2
1
if(strcmp(vodmark,x.mark)==0)
Эм, да нет, все равно. Может ошибка есть до этого? Все равно 0.
Изменилось только то, что если я ввожу 2 одинаковые марки автомобилей, то выводится 2 сообщения, что марок 0. Если введу 3 маки, выводит 3 одинаковых сообщений.
zss
Модератор
Эксперт С++
 Аватар для zss
5947 / 5552 / 1784
Регистрация: 18.12.2011
Сообщений: 14,184
Завершенные тесты: 1
23.04.2014, 22:05     Ошибка в программе. Структура "Автомобиль" #4
Посмотрите строки в отладчике.
Возможно в одной из них нет символа '\n' в конце, а в другой есть.
Bogdan_Fateev
0 / 0 / 0
Регистрация: 07.04.2014
Сообщений: 10
23.04.2014, 22:57  [ТС]     Ошибка в программе. Структура "Автомобиль" #5
Да не в этом суть. 2 одинаковых сообщений выбивает.
Ну и к тому же, все равно дает 0.
Yandex
Объявления
23.04.2014, 22:57     Ошибка в программе. Структура "Автомобиль"
Ответ Создать тему
Опции темы

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