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

Работа с структурами и файлами - C++

Восстановить пароль Регистрация
 
Freezy
1 / 1 / 1
Регистрация: 12.10.2010
Сообщений: 6
02.05.2011, 21:53     Работа с структурами и файлами #1
Условие задачи:
Создать структру "работники фирмы" с полями "имя" "фамилия" "отчество" "оклад" "стаж" и записать её в файл.
Вывести список "работодателей" :
1)Стаж которых больше 10 лет и оклад меньше 180
2)Фамилия которых начинается на гласную букву
3)Вывести информацыю "работодателя" методом поиска


Проблема с выводом всего этого!Помогите пожалуста,но просьба не усложнять мой код если возможно!
Код
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <string.h>
#include <dos.h>
struct rob
	{char sname[30];
	 char name[20];
	 char pname[20];
	 int oklad;
	 int stag;
	 float suma;};
struct rob mas_rob;int i,k,key,n=0;
FILE *list;
void main()
{clrscr();
if ((list=fopen("T:\\list.txt","r+"))==NULL)
	{printf("File not found!\n");
	printf("Creating new file...");
	delay(2000);
	list=fopen("T:\\list.txt","w+");
	printf("File created succesfully!");
	getch();}
m:clrscr();
printf("1)Stag bilshiy za 10 rokiv ta oklad menshe 180\n");
printf("2)Prizvisha na golosnu pochinayutsya\n");
printf("3)Dodatu prazivnuka\n");
printf("4)Pokazatu prazivnuka\n");
printf("5)Vuxid\n\n");
scanf("%d",&key);
switch(key)

{case 1:{list=fopen("T:\\list.txt","r");rewind(list);
	fseek(list,SEEK_SET,1);
	fread(&mas_rob,sizeof(struct rob),1,list);
	if ((mas_rob.stag>10)&&(mas_rob.oklad<180))
	{printf("Prizvische: %s\n",mas_rob.sname);
	printf("Imya: %s\n",mas_rob.name);
	printf("Pobatkovi: %s\n",mas_rob.pname);
	printf("Oklad: %d\n",mas_rob.oklad);
	printf("Stagh: %d\n",mas_rob.stag);
	printf("Summa do vuplatu: %0.2f\n",mas_rob.suma);
	printf("\n");}
	else {printf("Noone found!\n");}
	getch();fclose(list);
	goto m;}

case 2:{list=fopen("T:\\list.txt","r");rewind(list);
	fseek(list,SEEK_SET,1);
	fread(&mas_rob,sizeof(struct rob),1,list);
	if ((mas_rob.sname[0]=='A')||(mas_rob.sname[0]=='E')||
	(mas_rob.sname[0]=='Y')||(mas_rob.sname[0]=='U')||
	(mas_rob.sname[0]=='I')||(mas_rob.sname[0]=='O'))
	{printf("Prizvische: %s\n",mas_rob.sname);
	printf("Imya: %s\n",mas_rob.name);
	printf("Pobatkovi: %s\n",mas_rob.pname);
	printf("Oklad: %d\n",mas_rob.oklad);
	printf("Stagh: %d\n",mas_rob.stag);
	printf("Summa do vuplatu: %0.2f\n",mas_rob.suma);
	printf("\n");}
	else {printf("Noone found!\n");}
	getch();fclose(list);
	goto m;}

case 3:{m2:list=fopen("T:\\list.txt","r+");rewind(list);
	while(!(feof(list)))
	{fread(&mas_rob,sizeof(struct rob),1,list);
	i++;}
	clrscr();
	printf("Prizvusche: ");scanf("%s",&mas_rob.sname);
	printf("Imya: ");scanf("%s",&mas_rob.name);
	printf("Pobatkovi: ");scanf("%s",&mas_rob.pname);
	printf("Oklad: ");scanf("%d",&mas_rob.oklad);
	printf("Stagh: ");scanf("%d",&mas_rob.stag);
	printf("\n\r");
	mas_rob.suma=mas_rob.oklad+mas_rob.oklad/100*5;
	fseek(list,sizeof(struct rob),0);
	fwrite(&mas_rob,sizeof(struct rob),1,list);
	printf("Dodatu sche?");char ch;ch=getch();
	if (ch=='y') {goto m2;}
	getch();fclose(list);
	goto m;}

case 4:{list=fopen("T:\\list.txt","r");rewind(list);char pr[20];
	printf("Vvedit Prizvishe\n");scanf("%s",&pr);
	fseek(list,SEEK_SET,1);
	fread(&mas_rob,sizeof(struct rob),1,list);
	if (mas_rob.sname==pr)
	{clrscr();
	printf("\n%15s%15s%15s\n",mas_rob.sname,mas_rob.name,mas_rob.pname);
	printf("\n%d %d\n",mas_rob.oklad,mas_rob.stag);}
        else {printf("Noone found!\n");}
	getch();
	fclose(list);
	goto m;}

case 5:{goto e;}}

e:getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2011, 21:53     Работа с структурами и файлами
Посмотрите здесь:

C++ Работа с файлами и структурами
Работа с файлами и структурами. C++
Работа со структурами(файлами) C++
C++ Работа с файлами и структурами
Visual c++. Работа с бинарными файлами и структурами C++
Работа с бинарными файлами и структурами C++
C++ Работа с файлами и структурами. Найти среднее количество жителей для стран на заданном континенте
Работа с файлами и структурами. Найти название предприятия, заплатившего меньше всего налогов C++

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

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

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