Ребят помогите исправить код...
задание такое
Имеется файл, содержащий информацию о программном обеспечении, установленном в компьютерном классе: номер ПО, название, фирма-производитель, требуемый размер оперативной памяти, занимаемый объём диска, категория пользователей. Написать программу, предоставляющую информацию о ПО (полный список с возможностью сортировки по необходимому полю) или по указанному номеру и добавляющую в список новый вид ПО. Вид операции вводить с клавиатуры.
вот наработанный код:
Код:
// 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;
}
уже все мысли перебрал...
заранее благодарен )