Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2010, 20:02   #1
klykovka
Пользователь
 
Регистрация: 14.04.2010
Сообщений: 33
По умолчанию структура

меню: Создание файла, Просмотр файла, Поиск, Выход. В файле содержатся структуры со сведениями об абитуриентах: № абитуриента, ФИО, адрес, название предмета, оценка. Вывести информацию об абитуриентах, получивших по заданному предмету положительные оценки.
Код:
	#include <stdio.h>
#include<conio.h>
#include<string.h>
 
struct abityrent{int nomer;char fio[50];char adres[50];char predmet[20]; int ocenka[1];} a1,styd ;
void cozdat (FILE*);
void prosmotr (FILE*);
void poisk (FILE*);
void exit (FILE*);
main()
{
char c;
FILE*nf;
while (1)
{clrscr();
puts("++++ меню ++++");
puts("1-создание");
puts("2-просмотра");
puts("3-поиск");
puts("0-выход");
c=getch();
switch(c)
{case '1':cozdat(nf); break;
case '2' :prosmotr(nf); break;
case '3' :poisk(nf); break;
case '0' :return 0;
defaults: puts("*неверный ввод ");
}
}
}
///////////////////////////////////////////////////////////////
void  cozdat(FILE*nf)
{char ch;
nf=fopen("file.dat","wb");
clrscr();
printf("\n ввод абитуриентов\n");
do
{printf("\n-введите номер*:\n");
scanf("%d",a1.nomer);
printf("\n введите фио:\n");
scanf("%s",a1.fio);
printf ("\n-адрес*:\n");
scanf("%s",a1.adres);
printf ("\n предмет  :\n");
scanf("%s", a1.predmet);
printf("\n оценка: \n");
scanf("%d",a1.ocenka);
fwrite(&a1, sizeof(a1),1,nf);
printf("\n закончить? д/н* \n");
ch=getch();
}
while(ch !='¤');
fclose(nf);
}
/////////////////////////////////////////////////////////////////////////
void prosmotr (FILE*nf)
{ int i;
clrscr();
nf=fopen("file1.dat","rb");
i=1;
fread(&a1, sizeof(a1),1,nf);
while(!feof(nf))
{printf("\n %d %s %s %s %d",i,a1.nomer,a1.fio,a1.adres,a1.predmet,a1.ocenka);
fread(&a1, sizeof(a1),1,nf);
i++;
}
fclose(nf);
getch();
}
////////////////////////////////////////////////////////////////////////////
void poisk(FILE*nf)
{int i;
clrscr();
a1=styd[i];
nf=fopen("file1.dat","rb");
printf("\n поиск хорошистов \n");
printf("\n введите предмет");
scanf("%s",a1.predmet);
for(i=0,i++;)
не могу организовать вывод абитуриентов с положительными оценками, подскажите
klykovka вне форума Ответить с цитированием
Старый 31.05.2010, 13:03   #2
klykovka
Пользователь
 
Регистрация: 14.04.2010
Сообщений: 33
По умолчанию

В этом виде все работает, в пункте poisk выполняется абитуриента с оценкой больше или равной 3
мне нужно реализовать поиск всех абитуриентов с оценками выше 3 по заданному предмету. Подскажите как подправить?
Код:
#include <stdio.h>
#include<conio.h>
#include<string.h>
struct abityrent{int nomer;char fio[50];char adres[50];char predmet[20]; int ocenka;} a1,styd ;
void cozdat (FILE*);
void prosmotr (FILE*);
void poisk (FILE*);
void exit (FILE*);
main()
{
char c;
FILE*nf;
while (1)
{clrscr();
puts("++++ меню ++++");
puts("1-создать");
puts("2-посмотреть");
puts("3-поиск");
puts("0-выход");
c=getch();
switch(c)
{case '1':cozdat(nf); break;
case '2' :prosmotr(nf); break;
case '3' :poisk(nf); break;
case '0' :return 0;
defaults: puts("*неверный ввод");
}
}
}
///////////////////////////////////////////////////////////////
void  cozdat(FILE*nf)
{char ch;
nf=fopen("file1.dat","wb");
clrscr();
printf("\n ввод абитуриентов\n");
do
{printf("\n номер*:\n");
scanf("%d",&a1.nomer);
printf("\n фио:\n");
scanf("%s",a1.fio);
printf ("\n-адрес*:\n");
scanf("%s",a1.adres);
printf ("\n предмет :\n");
scanf("%s", a1.predmet);
printf("\n оценка: \n");
scanf("%d",&a1.ocenka);
fwrite(&a1, sizeof(a1),1,nf);
printf("\n закончить? д/н* \n");
ch=getch();
}
while(ch !='д');
fclose(nf);
}
/////////////////////////////////////////////////////////////////////////
void prosmotr (FILE*nf)
{
clrscr();
nf=fopen("file1.dat","rb");
{fread(&a1, sizeof(a1),1,nf);
while(!feof(nf))
{printf("\n %d %s %s %s %d",a1.nomer,a1.fio,a1.adres,a1.predmet,a1.ocenka);
fread(&a1, sizeof(a1),1,nf);
 
}
fclose(nf);
getch();
}
 
}
///////////////////////////////////////////////////////////////////////////
void poisk(FILE*nf)
{
clrscr();
nf=fopen("file1.dat","rb");
if feof(nf)
{
puts("*нет данных");
}
else
{
fread(&a1,sizeof(a1),1,nf);
styd=a1;
while(!feof(nf))
{
fread(&a1,sizeof(a1),1,nf);
 
if(styd.ocenka<3)
styd=a1;
}
puts("студенты с положительными оценками л:");
printf("\n %d %s %s %s %d",styd.nomer, styd.fio, styd.adres,styd.predmet, styd.ocenka);
}
fclose(nf);
getch();
}
klykovka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
структура на С++ yula92 Помощь студентам 0 25.05.2010 17:39
Структура Telec Помощь студентам 2 20.01.2010 12:46
Структура на С++ Darh Помощь студентам 3 16.12.2009 23:27
C++. Структура. bpystep Помощь студентам 12 24.11.2009 00:28
структура hungry Общие вопросы C/C++ 11 25.06.2009 20:31