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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2009, 16:21   #1
dima0268
 
Регистрация: 14.12.2009
Сообщений: 3
Вопрос работа с файлами

уважаемые форумчане, прошу вас обратить внимание на мою проблемку.
условие задачи такое:
Разработать программу ведения файла, содержащего некоторые данные. В программе должны быть реализованы следующие функции:
- ввод записей;
- корректировка записей;
- удаление записей;
- просмотр записей на экране.
Требуемая функция выбирается с помощью меню.

1. Список товаров, имеющихся на складе, включает:
- наименование товара;
- количество единиц товара;
- цену единицы товара;
- дату поступления товара на склад.
Вывести в алфавитном порядке список товаров, хранящихся более месяца, стоимость которых превышает 1000 рублей.

вот код, который наработал
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

struct Sved
{
char name[20];
int kol;
int cen;
int god;
int mes;
int day;
float S_Bal;
}zap;

char Spis[] = "d:\\work\\Sp.dat";
FILE *F_zap;

void main ()
{
int i, kodR, size  = sizeof(Sved);
float s;
//	clrscr();
while(1)
	{
        puts(" Sozdanie - 1");
        puts(" Prosmotr - 2");
        puts(" Dobavlenie - 3");
        puts(" Exit - 0");
        scanf("%d", &kodR);
        switch(kodR)
        {
        case 1:
        case 3:
        if(kodR == 1)
        F_zap = fopen(Spis, "w+b");
        else
        F_zap = fopen(Spis, "a+b");
        while(2)
        {
        puts(" Naimenovanie tovara (zavershenie vvoda - 0)");
        scanf("%s", zap.name);
        if ((zap.name[0])=='0') break;
        puts("vvedite kolichestvo tovara");
        scanf("%d",&zap.kol);
        puts("vvedite cenu tovara");
        scanf("%d",&zap.cen);
        puts("vvedite den` postupleniya");
        scanf("%d",&zap.day);
        puts("vvedite mesyac postupleniya");
        scanf("%d",&zap.mes);
        puts("vvedite god postupleniya");
        scanf("%d",&zap.god);
        fwrite(&zap, size, 1, F_zap);
			}
        fclose(F_zap);
        break;
        case 2:
        F_zap=fopen(Spis,"r+b");
        while(2)
        {
        if(!fread(&zap, size, 1, F_zap)) break;

        printf("%20s %2d %d %d %d %d\n",
        zap.name,
        zap.kol,
        zap.cen,
        zap.day,
        zap.mes,
        zap.god);

        }
        fclose(F_zap);
        break;
        case 0:
        return;
        }
}
}
проблема у меня встала с выводом в алфавитном порядке, прошу вас подсказать как реализовать этот вывод

Последний раз редактировалось Stilet; 15.12.2009 в 16:28.
dima0268 вне форума Ответить с цитированием
Старый 15.12.2009, 17:22   #2
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

Ну если ты работаешь со строками в виде массива char (а ты так и работаешь - name[20]), то лучше всего будет сортировать по методу пузырька! А для сравнения функций использовать strcmp(), параметры и возвращаемое значение функции погугли...Но перед этим получается нужно из файла сканировать все В память, например в динамический список или массив...
Если я помог вам - порадуйте меня, нажмите на весы слева
RoS вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с файлами voron.kz Помощь студентам 4 15.11.2009 17:25
Работа с файлами Cpluser Общие вопросы C/C++ 2 16.02.2009 23:22
Работа с файлами RatMir Помощь студентам 3 09.06.2008 23:05
работа с файлами в с++ kermit Помощь студентам 13 09.06.2008 02:21
Работа с файлами Acros Помощь студентам 5 14.02.2007 18:40