Ребята помогите пожалуйста. Никак не получается разобраться с проблемой подсчета количества рожденных людей в каждой области.
Код:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <tchar.h>
//#pragma hdrstop
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <windows.h>
#include <locale.h>
#include <fstream.h>
//---------------------------------------------------------------------------
#pragma argsused
//---------------------------------------------------------------------------
#pragma hdrstop
//---------------------------------------------------------------------------
struct human1
{
char name[150];
int year;
char obl[30];
}man;
FILE *cfPtr;
VOID write();
VOID read ();
VOID scan();
VOID print();
void main()
{
setlocale(LC_ALL, "Russian");
int ch=0;
do
{
clrscr();
wcout<<L"Меню:\n1-ввести данi\n2-переглянути весь список\n3-пошук по областi\n4-вихiд\n";
scanf("%d", &ch);
switch (ch)
{
case 1: {
clrscr();
wcout<<L"Ввести данi\n";
write();
getch();
break;
}
case 2: {
clrscr();
wcout<<L"Данi для перегляду\n";
read();
getch();
break;
}
case 3: {
clrscr();
wcout<<L"Пошук по областi\n";
scan();
getch();
break;
}
case 4: {
clrscr();
wcout<<L"Вихiд\n";
getch();
break;
}
}
}
while(ch!=4);
getch();
}
VOID read ()
{
if ((cfPtr=fopen("F:\\ b\\spisok3.txt","rb"))==NULL)
wcout<<L"Файл не відкрився!!!\n";
else
{
while(!feof(cfPtr))
{
fread(&man,sizeof (struct human1),1,cfPtr);
if (man.year!=0) {
// printf ("%s %d %s", man.name, man.year, man.obl);
wcout<<man.name;
wcout<<man.year;
wcout<<man.obl<<endl;
}
}
fclose(cfPtr);
}
}
VOID write()
{
if ((cfPtr=fopen("F:\\ b\\spisok3.txt","a+"))==NULL)
wcout<<L"Файл не вiдкрився!!!\n";
else
{
wcout<<L"Введiть рiк народження\n";
wcout<<L"Для вихoду натиснiть- 0\n";
cin>>man.year;
while (man.year!=0) {
wcout<<L"Введiть iм'я\n";
cin>>man.name;
wcout<<L"Введiть область\n";
print();
//gotoxy(0, 12);
cin>>man.obl;
fwrite(&man, sizeof (struct human1),1,cfPtr);
wcout<<L"Введiть рiк народження\n";
wcout<<L"Для вихoду натиснiть- 0\n";
cin>>man.year;
}
fwrite(&man, sizeof (struct human1),1,cfPtr);
fclose(cfPtr);
}
}
VOID scan()
{
int AR=0; int Vin=0;
int Vol=0; int Dn=0;
int Don=0; int Zhut=0;
int Zak=0; int Zap=0;
int Iv=0; int Kyiv=0;
int Kir=0; int Lug=0;
int Lv=0; int Muk=0;
int Od=0; int Pol=0;
int Rivn=0; int Sum=0;
int Tern=0; int Khar=0;
int Kher=0; int Khmel=0;
int Chercaska=0; int Chernivecka=0;
int Chernihivska=0;
if ((cfPtr=fopen("F:\\ b\\spisok3.txt","r"))==NULL)
wcout<<L"Файл не відкрився!!!\n";
else
{
while(!feof(cfPtr))
{
fread(&man,sizeof (struct human1),1,cfPtr);
if (strcmp("AR",man.obl)&&(man.year!=0)) {
AR++;
}
if (strcmp("Vin",man.obl)&&(man.year!=0)) {
Vin++;
}
if (strcmp("Don",man.obl)&&(man.year!=0)) {
Don++;
}
}
cout<<"AR %d\n",AR;
cout<<"V %d\n",Vin;
cout<<"D %d\n",Don;
}
fclose(cfPtr);
}
VOID print()
{
wcout<<L"AR - АР Крим"<<endl;
wcout<<L"Vin - Вiнницька область"<<endl;
wcout<<L"Vol - Волинська область"<<endl;
wcout<<L"Dn - Днiпропетровська область"<<endl;
wcout<<L"Don - Донецька область"<<endl;
wcout<<L"Zhut - Житомирська область"<<endl;
wcout<<L"Zak - Закарпатська область"<<endl;
wcout<<L"Zap - Запорізька область"<<endl;
wcout<<L"Iv - Івано-Франківська область"<<endl;
wcout<<L"Kyiv - Київська область"<<endl;
wcout<<L"Kir - Кіровоградська область"<<endl;
wcout<<L"Lug - Луганська область"<<endl;
wcout<<L"Lv - Львівська область"<<endl;
wcout<<L"Muk - Миколаївська область"<<endl;
wcout<<L"Od - Одеська область"<<endl;
wcout<<L"Pol - Полтавська область"<<endl;
wcout<<L"Rivn - Рівненська область"<<endl;
wcout<<L"Sum - Сумська область"<<endl;
wcout<<L"Tern - Тернопільська область"<<endl;
wcout<<L"Khar - Харківська область"<<endl;
wcout<<L"Kher - Херсонська область"<<endl;
wcout<<L"Khmel - Хмельницька область"<<endl;
wcout<<L"Chercaska - Черкаська область"<<endl;
wcout<<L"Chernivecka - Чернівецька область"<<endl;
wcout<<L"Chernihivska - Чернігівська область"<<endl;
}
//---------------------------------------------------------------------------
Проблема в функции VOID scan() - она не правильно считает данные которые выводит на экран функция VOID read ().