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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.06.2012, 23:28   #1
СтёпышЪ
Пользователь
 
Аватар для СтёпышЪ
 
Регистрация: 20.04.2012
Сообщений: 16
По умолчанию C++ работа со структорой и файлами

Ребят помогите исправить код...
задание такое

Имеется файл, содержащий информацию о программном обеспечении, установленном в компьютерном классе: номер ПО, название, фирма-производитель, требуемый размер оперативной памяти, занимаемый объём диска, категория пользователей. Написать программу, предоставляющую информацию о ПО (полный список с возможностью сортировки по необходимому полю) или по указанному номеру и добавляющую в список новый вид ПО. Вид операции вводить с клавиатуры.


вот наработанный код:
Код:
// RGR2.5.cpp: главный файл проекта.

#include "stdafx.h"
#include<iostream>
using namespace std;
void prmenu();
FILE*f;
int i=0;
//char next;
typedef struct	
{
int nom;
	char name [10];
	char firm [15];
	char ram [40];
	char disk [15];
	char polz [40];
}po;

po pokomp[sizeof(i)];
void dobav()
{
	system("cls");
	cout<<"Vvedite nomer PO:";
	cin>>pokomp[i].nom;
	cout<<"Vvedite nazvanie modeli PO :";
	cin>>pokomp[i].name;
 	cout<<"Vvedite firmu-proizvoditeliya PO:";
	cin>>pokomp[i].firm;
	cout<<"Vvedite razmer operativnoi pamyati PO:";
cin>>pokomp[i].ram;
	cout<<"Vvedite ob'em zhestkogo diska PO:";
	cin>>pokomp[i].disk;
	cout<<"Vvedite kategoriyu pol'zovatelei PO:";
cin>>pokomp[i].polz;
	i++;
	return;
}

void rw()
{

	f=fopen("komp.txt", "r");
	while (!feof (f))
	{
fscanf(f,"%i %s %s %s %s %s \n",&pokomp[i].nom, &pokomp[i].name,&pokomp[i].firm,&pokomp[i].ram,&pokomp[i].disk,&pokomp[i].polz);
		i++;
	}
	fclose(f);
	return;
}
 
void vivod()	
{
rw();
	system("cls");
	char next;
	printf("nomer\tNazvanie\tFirma\tRazmer operativnoi pamiyati\tOb'em diska\tKategoriya pol'zovatelei\n");
	for (int k=0; k<i; k++)
	{
		printf("%d\t%i\t%s\t%s\t%s\t%s\t%s\n", k+1,pokomp[k].nom,pokomp[k].name,pokomp[k].firm,pokomp[k].ram,pokomp[k].disk,pokomp[k].polz);
	}
	printf("\nDlia prodolzheniya vvedite'0' i nazhmite Enter\n");
	cin>>next;
	prmenu();		
	return;
}
void write()
{
	f=fopen("komp.txt", "a+");
	for (int k=0; k<i; k++)
	{
		fprintf(f, "%i %s %s %s %s %s\n", pokomp[k].nom,pokomp[k].name,pokomp[k].firm,pokomp[k].ram,pokomp[k].disk,pokomp[k].polz);
	}
	fclose(f);
	return;
}
	int edit;
void red()
{
	 
	 if (feof(f)) 
{
cout<<"fail pust"; 
exit(0);
}
	system("cls");
	cout<<"Vvedite №stroki dlia redoktirovaniiya: ";
	cin>>edit;	
	edit--;
	printf("Zamenit' nomer PO: на:,%i ",pokomp[edit].nom);
	cin>>pokomp[edit].nom;
	printf("Zamenit' nazvanie modeli PO:  на:,%s ",pokomp[edit].name);
	cin>>pokomp[edit].name;
	printf("Zamenit' proizvoditelya:  на:,%s ",pokomp[edit].firm);
	cin>>pokomp[edit].firm;
	printf("Zamenit' razmer operativnoi pamiati:  на:,%s ",pokomp[edit].ram);
	cin>>pokomp[edit].ram;
	printf("Zamenit' ob'em diska:  на:,%s ",pokomp[edit].disk);
	cin>>pokomp[edit].disk;
	printf("Zamenit' kategoriyu pol'zovatelei: на:,%s ",pokomp[edit].polz);
	cin>>pokomp[edit].polz;
	return;
}
void prmenu()
{
	int d;
	system("cls");
	printf("1:\tDobavit' informaciyu o PO\n2:\tRedaktirovat' informaciyu o PO\n3:\tVihod\n\nVvedite kod nuzhnoi komandi:");
	cin>>d;
	switch(d)
	{
	case 1:{
		      dobav();
			  prmenu();
			  break;
		   }
	case 2:{
			 vivod();
		     red();
			 prmenu();
			 break;
		   }
	case 3:{
		    write();
			exit(0);
			break;
		   }
    default : prmenu();	
   }
   return;
}
void main()
{
	setlocale(LC_ALL,"russian_russia");
	if((f=fopen("komp.txt", "rt")) == NULL)
	{
		printf("Ne poluchaetsa otkrit' fail:komp.txt\n");
		exit(0);
	}
	else
	{
		rw();
		prmenu();
	}
	return;
}

уже все мысли перебрал...
заранее благодарен )
СтёпышЪ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами. iCaesy Паскаль, Turbo Pascal, PascalABC.NET 1 21.10.2011 17:31
работа с файлами nikcpp Общие вопросы Delphi 2 11.05.2011 15:04
Работа с файлами 123456789igor Паскаль, Turbo Pascal, PascalABC.NET 5 06.05.2011 19:44
Работа с файлами Gen_r_questions PHP 1 04.05.2011 14:27
Работа с файлами МартинИ Паскаль, Turbo Pascal, PascalABC.NET 3 23.12.2008 21:36