Turbo C

Програмирование, WEb-програмирование...и всё что связано с програмированием

Модератор: FreШ

Turbo C

Сообщение botvot » 10 ноя 2012, 19:50

Дан файл, содержащий информацию о поступлении товаров на склад. Структура записи файла:
шифр товара,
наименование товара,
дата поступления,
количество единиц товара.
Записи в файле не упорядочены. Количество различных товаров не больше 50.
Написать программу, выдающую список всех поступивших товаров с их количеством в порядке возрастания шифров.
Помогите решить
89172733050 Равиль автоэлектрик 89172733050
botvot
Редкий посетитель
 
Сообщения: 46
Зарегистрирован: 29 окт 2012, 02:35

Re: Turbo C

Сообщение [GM] » 13 ноя 2012, 22:10

#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>

#define DL_SH 5
#define DL_NAME 12
#define DL_KOL 4
#define DL_DATA 8

struct TOVAR
{char sh[DL_SH];
char name[DL_NAME];
char kol[DL_KOL];
char data[DL_DATA+2];
};

void Shifr(FILE *f);

int sh(char** line, int j)
{
int i=0;
for (int l=0; l<strlen(line[j]); l++)
if (isdigit(line[j][l]))
{
char* buf = new char [10];
memset(buf,0,10);
while (isdigit(line[j][l]))
buf[i++]=line[j][l++];
i=atoi(buf);
return i;
}

}

int main()
{
FILE *f;
char n;

f= fopen("f4.txt","r");
if (f==NULL)
{
getch();
return 1;

puts ("Fail TOVAR.txt ne naiden");
}
do
{
puts ("\n======================================================") ;
puts (" Viberite nomer pynkta meny:");
puts ("1-Vivod tovarov,s ih koli4estvom v por9dke vozrastaniya shifra ");
puts ("2-vixod");
puts ("========================================================== ");
n=getche();
switch(n)
{
case '1': Shifr(f); break;
case '2': break;
default: puts ("\n Nyjno vvodit nomer pynkta ot 1 do 2");
}
if (n!='2')
{
puts ("\nDla prodolgenia nagmite lybyi klavishy");
getch();
}
}
while (n!= '2');
fclose(f);
return 0;
}

void Shifr (FILE *f)
{
char** line=new char* [30];
int i;
for (i=0; i<30; i++)
{
line[i]=new char [200];
memset(line[i],0,200);
}
i=-1;
while(!feof(f))
fgets(line[++i],200, f);

for (int j=0; j<=i; j++)
for (int k=0; k<=i; k++)
if (sh(line,j)<sh(line,k))
{
char tmp[30];
memset(tmp,0,30);
strcpy(tmp,line[j]);
strcpy(line[j],line[k]);
strcpy(line[k],tmp);
}
puts ("name kol-vo data");
puts ("====================");
for (int t=0; t<=i; t++)
printf("%s\n",line[t]);
}
[GM]
Редкий посетитель
 
Сообщения: 30
Зарегистрирован: 12 авг 2012, 20:03


Вернуться в Программирование

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron