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

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

Войти
Регистрация
Восстановить пароль
 
cruzel
0 / 0 / 0
Регистрация: 20.02.2012
Сообщений: 18
#1

Фильтрация данных в структуре - C++

24.05.2012, 17:51. Просмотров 258. Ответов 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
#include <stdio.h>
int Nmenu = 5;
char filename[]="bd.dat";
struct record {
char fam[20];
char ima[20];
int bi,bu;
};
 
int menu(){
int otvet;
printf("----====MENU====------\n");
printf("1 Sozdat' bazy dannix\n");
printf("2 Dobavit' zapis\n");
printf("3 Prosmotr vsex zapisey\n");
printf("4 Poisk\n");
printf("0 Vixod\n");
 
printf("Vash vibor:");
scanf( "%d",&otvet);
    return otvet;
}//menu
 
int testbd(){
FILE *f;
if (f=fopen(filename,"r")) 
  {fclose(f); return 1;}
else return 0;
}//testbd
 
void sozdat(){
FILE *f;
if (testbd()==1)
  {printf("Baza dannix %s yje suhestvyet!\n",filename);}
else
   {f=fopen(filename,"w"); fclose(f);}
}//sozdat
 
void dobavit(){
FILE *f;
record rec;
if (testbd()==1){
  printf("Strana:"); scanf("%s",&rec.fam);
  printf("Stolica:"); scanf("%s",&rec.ima);
  printf("Naselenie:"); scanf("%d",&rec.bi);
  printf("Ploshad':"); scanf("%d",&rec.bu);
  f=fopen(filename,"ab");
  fwrite(&rec,sizeof rec, 1, f);
  fclose(f);}
else printf("Sozdat' bazy dannix!!!\n");
}//dobavit
 
void pokazat(){
FILE *f;
record rec;
if (testbd()==1){
f=fopen(filename,"rb");
printf("\t\tStrana \t\t Stolica \t\t Naselenie\t Ploshad' \n");
while (!feof(f)) {
 if(fread(&rec,sizeof rec, 1, f)==1){
   printf("%25s  %25s  %8d   %8d \n",rec.fam, rec.ima, rec.bi, rec.bu);
 };
};
fclose(f);}
else printf("Sozdaite bazy dannix!!!\n");
}//pokazat
 
void poisk(){
FILE *f;
record rec;
double key,srb;
if (testbd()==1){
   printf("Vvesti nyjnyu plotnost' naseleniya:"); 
   scanf("%f",&key);
 
   f=fopen(filename,"rb");
   printf("\t\tStrana \t\t Stolica \t\t Plotnost' naseleniya\n");
   while (!feof(f)) {
     if(fread(&rec,sizeof rec, 1, f)==1){
        srb=(rec.bi+rec.bu)/2;
         if (srb>=key) printf("%25s  %25s  %f \n",rec.fam, rec.ima, srb);
     };
   };
 
   fclose(f);}
else printf("Sozdat' bazy dannix!!!\n");
}//poisk
void main(){
int vybor=0;
do{
    vybor=menu();
    switch(vybor){
      case 1: sozdat();break;
      case 2: dobavit(); break;
      case 3: pokazat(); break;
      case 4: poisk(); break;
      default: printf( "Vibranno:%d \n", vybor);
    }
    
}while (vybor!=0);
}//main
Не работает эта часть кода:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void poisk(){
FILE *f;
record rec;
double key,srb;
if (testbd()==1){
   printf("Vvesti nyjnyu plotnost' naseleniya:"); 
   scanf("%f",&key);
 
   f=fopen(filename,"rb");
   printf("\t\tStrana \t\t Stolica \t\t Plotnost' naseleniya\n");
   while (!feof(f)) {
     if(fread(&rec,sizeof rec, 1, f)==1){
        srb=(rec.bi+rec.bu)/2;
         if (srb>=key) printf("%25s  %25s  %f \n",rec.fam, rec.ima, srb);
     };
   };
 
   fclose(f);}
else printf("Sozdat' bazy dannix!!!\n");
}//poisk
Не зависимо от числа выводит все страны, которые есть. Надеюсь на вашу помощь
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2012, 17:51     Фильтрация данных в структуре
Посмотрите здесь:

Сортировка данных в структуре C++
C++ Упорядочивание данных в структуре
Объявление в структуре C++
Сортировка данных в Структуре С++ C++
C++ Файл: Фильтрация входных данных
Задача по структуре данных - вычисление функции C++
C++ В структуре данных вывести на экран чей стаж работы превышает введенный на консоли
Сортировка и поиск данных в структуре C++
C++ Непонятки с сортировкой данных в структуре (Осторожно, увиденного не развидеть.)
C++ Фильтрация Базы Данных
Ошибка в структуре данных C++
Сортировка в линейной структуре данных C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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