![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Vinnety |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 8.4.2003 Репутация: нет Всего: нет |
![]() Как в С++ организовать динамическую структуру типа ОЧЕРЕДЬ, которая содержала бы в себе информацию например : телефон, имя, указатель на следуюший елемент очереди ? Подскажи, плиз, как работать с очередями ! ![]() |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
используем STL и не паримся ("queue" - очередь, англ.):
-------------------- ![]() |
|||
|
||||
bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
В MVC6 есть CList
#include <afxtempl.h> |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
имхо речь идёт об очереди. первый зашёл - первый вышел, или последний зашёл - первый вышел. -------------------- ![]() |
|||
|
||||
CaptainFlint |
|
|||
![]() Искатель сокровищ ![]() ![]() Профиль Группа: Участник Сообщений: 393 Регистрация: 26.2.2003 Где: Москва Репутация: нет Всего: 23 |
mr.DUDA
А что такое очередь, как не список со специфичечким набором методов? Защищённо наследуем CQueue от CList с подставленным типом аргумента (чтобы нельзя было к методам CList обратиться), пишет Add() и Get() через методы CList'а (они очень простые должны получиться), и всё. Конечно, можно использовать и STL, но это уже по вкусу. К тому же, если проект написан на MFC, то я лично, например, не люблю мешать эти две библиотеки... -------------------- Почему же, ё-моё, ты нигде не пишешь "ё"? -------------------- Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) |
|||
|
||||
mr.DUDA |
|
||||||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Не спорю, "очередь" - понятие чисто умозрительное. Это список, но из самого понятия предполагается, что добавить элемент можно только в хвост, а извлечь - только из головы списка. Можно юзать хоть CList, хоть TList билдеровский, но имхо STL предоставляет наиболее полный набор различных контейнеров - вот я и предлагаю пользоваться им.
Лично я предпочитаю (в последнее время) использовать STL даже в MFC-шных проектах вместо контейнеров от M$, тем более что есть выбор от средних до очень быстродействующих библиотек (STLPort от Silicon Graphics). Но это личное дело каждого. Автор вопроса ведь не сказал ни слова о платформе и технологиях! По-моему, ему бы подошёл даже вариант с собственным узкоспециализированным классом типа:
или что-то вроде того. -------------------- ![]() |
||||||
|
|||||||
Fantasist |
|
||||
![]() Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
Может быть и вектором. Так что не обязательно СList.
В этом случае обычно говорят о стеке. -------------------- Волны гасят ветер... |
||||
|
|||||
mr.DUDA |
|
||||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
или о буфере LIFO ![]() -------------------- ![]() |
||||
|
|||||
bel_nikita |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
mr.DUDA
А это смотря как читать вопрос
Так что, не совсем понятно, что хочет человек очередь или список, а может и то и другое |
||||
|
|||||
Vinnety |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 8.4.2003 Репутация: нет Всего: нет |
Это всё конечно хорошо! :-)
Но мне надо работать с очередью и под обычного Turbo C++ под DOS! :-( И в данной версии нет такой директивы препроцессора как <queue> (как показано в первом ответе) !!! Как выйти из такого положения ![]() |
|||
|
||||
Kurt |
|
|||
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: нет Всего: 36 |
Тогда тока ручками..
Хм.. Когда тебе это надо? Это сообщение отредактировал(а) Kurt - 10.3.2004, 03:56 -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Vinnety А шаблоны поддерживает, твой компилер??
Вот держи, правда через шаблон сделанно, но можешь заменить шаблон дефайном, и всего то
Да, еще, если встретишь в коде Lock() или UnLock() просто удали их, это я для других целей юзал |
|||
|
||||
wnayk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
Ребят Здорова всем,СПАСИТЕ МНЕ ПОЖУЛУЙСТА ЖИЗНЬ...
![]() У меня через недельку надо будет курсовуху сдавать,если не сдам-мне пи... Задачка такая: Магазин с одним продавцом. Компьютер вместо кассового аппарата. База наличия товаров: наименование, единица измерения, цена единицы, количество, дата последнего завоза. Регистрация поступления товара( как старых ,так и новых наименований ). Оформление покупки: выписка чека, корректировка базы. Проблема уценки и описания. Инвентаризация остатков товара с вычислением суммарной стоимости. Программа должна обеспечивать диалог с помощью меню и контроль ошибок при вводе. Может у кого то есть такая уже,ПППЛЛЛЛИИИЗЗЗЗ или пришлите на [email protected] |
|||
|
||||
Anikmar |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Ребят, ну давайте по правилам общаться! Вверху страницы есть отдельная фраза:
|
||||
|
|||||
zabivator |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 7.6.2006 Где: нск Репутация: 1 Всего: 2 |
wnayk, тебя убьют, если ты не сдашь курсовую?
![]() --------------------
#include <zabivator>int main( int, char * [] ){ while( Zabivator::жив() ) Zabivator::моск()++; return 0;} |
|||
|
||||
wnayk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
Меня просто на второй семестр не переведут,если через неделю не сдам
zabivator, ,просто ректор новый и с этим он строго(( Ты не можешь подсказать или может есть у кого нибудь хотя бы похожая??? меня предки ![]() |
|||
|
||||
wnayk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
zabivator, у тебя нет похожей задачи или этой же,может сможешь чем-нибудб помочьььььь
![]() |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Это программа не на 5 и даже не на 500 строчек. Никто ради забавы ее делать не будет - следовательно, если у кого она и есть, то скорее всего достаточно объемный и серьезный проект.
Мы такую программу писали на моем старом месте работы. там была поддержка склада, работа с ККМ - практически все, что ты написал в задании. Объем сего продукта был минимум на 5000 строк (на сколько я помню, давно это было). Если до сдачи курсовика осталось 1 неделя я бы предложил наляпать стандартными контролами на PARADOX нечто, которое будет работать - врядли ее серьезно будут тестировать. 1 недели в принципе хватит, если серьезно этим озаботиться. |
|||
|
||||
колючка |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 9.12.2006 Репутация: нет Всего: нет |
А кто-нибудь может просветить по поводу очереди с приоритетом? Ну вот нигде найти не могу что это и с чем ее едят! Может хотя бы подскажите где информацию на эту тему искать
![]() |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Программку чего? Очереди с приоритетом? А что она делать должна (программка)? |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
priority_queue - поищи по этому слову. |
|||
|
||||
wnayk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
Anikmar, У меня есть несколько похожих задачик нашел в нете там от 250 строк до 700 строк максимум,ты не знаешь может есть какие нибудь сайты где выкладываются задачки с решениями-УМИРАЮ
![]() ![]() |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
wnayk, К сожалению не знаю - никогда этим вопросом не занимался. Как говорится "Да прибудет с вами Yandex"
Если уже найдены готовые программки - почему не использовать их? Доработать необходимый функционал и вперед. С точки зрения алгоритма такая задача особой сложностью не отличается - там больше рутины - рисование окошек, отработка редактирования и т.п. |
|||
|
||||
wnayk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
![]() ![]() ![]() |
|||
|
||||
wnayk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
![]() double price; как найти длину этого числа?Ну тм двузначное или еще???Подскажите... |
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
хм, интересно зачем? Определение количества цифр в целой части числа:
|
|||
|
||||
KpoHyc |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 23.12.2006 Где: Санкт-Петербург Репутация: нет Всего: 5 |
Anikmar, какие нафиг 5к строк? это курсач первака...1к максимум - 500-600 самое реальное...
wnayk,
это база данных деканат - переработать под вашу задачу можно за один вечер. - дерзайте... Добавлено @ 00:48 или вот...задание тоже...
ЗЫ за вторую прогу на кол не сажать... --------------------
AScript + Pascal + C -> C++ ->C#Adobe Photoshop 7.0/CS 2.0 + GIMP+ Visual Studio .NET(sp1)/2005 pro(sp1) |
||||
|
|||||
wnayk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
KpoHyc, ни х..я они не запускаются твои проги...........
![]() |
|||
|
||||
Rockie |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: 8 Всего: 31 |
wnayk, к примеру перегнать число в строку функцией itoa и узнать длину строки функцией strlen -------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
|||
|
||||
wnayk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
Rockie, ,
KpoHyc, , zkv, Anikmar, JackYF, колючка, Парни помогите с таким вопросом-очень важно-Дана функция : void Dobav (Spisok **begin,char dpz [],int pok,char naim [],char ediz [],char price [],int kol) мне нужно после того,как abc в функции abc=Srav (&aa,naim); ИСТИНА - мне нужно выйти из этой функции, функция такова: void Dobav (Spisok **begin,char dpz [],int pok,char naim [],char ediz [],char price [],int kol) { int dlina=0,b=0,abc=1,a; char kol1 [11]; Spisok *pp; Spisok *aa=*begin; Spisok *t1; Spisok *t=*begin; do { cout << rus("Укажите наименование товара: "); gets (naim); a=ForFIO (naim); dlina=strlen(naim); if (a) { cout << rus("ОШИБКА! Недопустимый символ!\n"); } abc=Srav (&aa,naim); if(abc) { cout << rus("Такой товар уже есть в наличии") << endl; cout << rus("Введите тогда количество ввозимого товара: ") << endl; cin >> kol1; kol=Perevod (kol1); } } while ((dlina==0)||(dlina>50)||(a)); do { cout << rus("Укажите единицу измерения товара: "); gets (ediz); a=ForFIO(ediz); dlina=strlen (ediz); if (a) { cout << rus("ОШИБКА! Недопустимый символ!\n"); } } while ((dlina==0)||(dlina>50)); do { cout << rus("Укажите цену товара: "); cin >> price; a=ForCHIS(price); dlina=strlen(price); if (a) { cout << rus("ОШИБКА! Недопустимый символ!\n"); } } while((dlina==0)||(dlina>10)||(a)); do { cout << rus("Укажите дату: "); gets (dpz); a=ForCHIS (dpz); dlina=strlen(dpz); if (a) { cout << rus("ОШИБКА! Недопустимый символ!\n"); } } while ((dlina==0)||(dlina>8)||(a)); do { cout << rus("Укажите количество товара: "); gets (kol1); a=ForCHIS (kol1); dlina=strlen(kol1); if (a) { cout << rus("ОШИБКА! Недопустимый символ!\n"); } } while ((dlina==0)||(dlina>10)||(a)); kol=Perevod (kol1); if(abc==0) { while (t) { t1=t; t=t->next; } pp=new Spisok; strcpy(pp->u,dpz); pp->p=pok; strcpy(pp->a,naim); strcpy(pp->n,ediz); strcpy(pp->g,price); pp->k=kol; pp->next=0; pp->next=0; t1->next=pp; } b=Podchet (&aa); cout << rus("Количество данных: ") << b << "\n" << endl; } ОЧЕНЬ НУЖНО И ВАЖНЕЦКО!!!!!!! ![]() |
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
||||
|
||||
zabivator |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 7.6.2006 Где: нск Репутация: 1 Всего: 2 |
Хм. За 500 рублей сделаю. Меньше не возьмусь. Это оплата двух дней моих работы в конторе. Я на каникулах. Тебя устравивает вариант?
--------------------
#include <zabivator>int main( int, char * [] ){ while( Zabivator::жив() ) Zabivator::моск()++; return 0;} |
|||
|
||||
wnayk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
![]() ![]() |
|||
|
||||
zabivator |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 7.6.2006 Где: нск Репутация: 1 Всего: 2 |
wnayk, время штука сложная. Мне его вечно не хватает. Я с радостью помогаю советом. Но надо понимать разницу между советом и готовой программой.
--------------------
#include <zabivator>int main( int, char * [] ){ while( Zabivator::жив() ) Zabivator::моск()++; return 0;} |
|||
|
||||
wnayk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
zabivator, Я тебя и не просил готовую прогу. А че за х..я такая :
--------------------Configuration: кур2 - Win32 Debug-------------------- Compiling... Skipping... (no relevant changes detected)-это че означает?????? кур2.cpp Linking... кур2.exe - 0 error(s), 0 warning(s) Добавлено @ 17:52 zabivator, А вот попробуй запусти у себя эту прогу на компе ГОТОВАЯ ПРЧТИ ЧТО ПРОГА::: #include <iostream> #include <windows.h> using namespace std; char* rus(const char* text); void Disk (char den [],char mes [],char god [],int pok,char naim [],char ediz [],char price [] ,int kol); int kolvo (); struct Spisok *Loading (char den [],char mes [],char god [],int pok,char naim [],char ediz [],char price [] ,int kol); void Load (Spisok **begin,char den [],char mes [],char god [],int pok,char naim [],char ediz [],char price [] ,int kol); int Podchet (Spisok **begin); void Pech (Spisok **begin); void Exit (Spisok **begin); void Save (Spisok **begin); int ForFIO (char a[]); int ForCHIS (char a[]); void Opis (Spisok **begin,char naim []); int Srav (Spisok **begin, char naim[]); void MainMenu (); void Prodat (Spisok **begin,int pok,char naim [],char price [],char ediz [],int kol); void Ucenka (Spisok **begin,int pok,char naim [],char price []); void Dobav (Spisok **begin,char den [],char mes [],char god [],int pok,char naim [],char ediz [],char price [],int kol); int Perevod (char pl[]); struct Spisok // Структура содержит данные лишь об одной книге! { char d[3]; // Уникальный номер для каждой книги // день завоза char m[3]; // Месяц завоза char g[5]; // Год завоза int p; // Индикатор наличия данной книги в библиотеке // индикатор наличия товара char a[45]; // Фамилия и инициалы автора книги // Наименование товара! char n[45]; // Полное название книги // Цена единицы! char e[20]; // Год издания книги // Единица измерения! int k; // Количество экземпляров данной книги // Количество товара Spisok *next; }; //-----ГЛАВНАЯ ФУНКЦИЯ-------- int main () { cout << rus(" ***************************\n**МАГАЗИН С ОДНИМ ПРОДАВЦОМ**\n ***************************\n\n"); int a,b,d=0; FILE *fp; char abc[3]; Spisok *begin; char den [3];// День завоза char mes [3];// Месяц завоза char god [5];// Год завоза int pok=0;// Индикатор наличия товара char naim [51];// Наименование товара! char price [51]; // Цена единицы! char ediz [10]; // Еденица измерения! int kol=0;// Количество товара fp=fopen ("data.txt","r"); if (fp==NULL) { Disk (den,mes,god,pok,naim,price,ediz,kol); } else { fclose (fp); } begin=Loading(den,mes,god,pok,naim,price,ediz,kol); metka: ; a=kolvo (); // Мы узнали количество карточек в картотеке b=Podchet (&begin); // Подсчет карточек в памяти cout << rus(" Объем базы на диске: ") << a << endl; cout << rus(" База загружена память объёмом: ") << b << "\n"<< endl; if (d) { cout << rus(" База товаров изменена! Рекомендуется сохраниться!\n") << endl; } MainMenu (); do { cout << rus(" Ваш выбор: "); gets (abc); } while ((strlen(abc)==0)||(strlen(abc)>1)); switch (abc[0]) { case '1': { Dobav (&begin,den,mes,god,pok,naim,price,ediz,kol); d=1; } break; case '2': { Pech (&begin); } break; case '3': { Prodat (&begin,pok,naim,price,ediz,kol); d=1; break; } case '4': { Ucenka (&begin,pok,naim,price); d=1; } break; case '6': { do { cout << rus(" Перезаписать текущую базу товаров?") << "(Y/N)"; gets (abc); } while ((strlen(abc)==0)||(strlen(abc)>1)); if ((abc[0]=='Y')||(abc[0]=='y')) { Save (&begin); d=0; } else cout << rus(" Сохранения НЕ произошло!\n\n"); } break; case '7': { do { cout << rus(" Выходим?") << "(Y/N) "; gets (abc); } while ((strlen(abc)==0)||(strlen(abc)>1)); if ((abc[0]=='Y')||(abc[0]=='y')) { do { cout << rus(" Сохраняемся?") << "(Y/N) "; gets (abc); } while ((strlen(abc)==0)||(strlen(abc)>1)); if ((abc[0]=='y')||(abc[0]=='Y')) { Save (&begin); d=0; } Exit (&begin); // Высвобождение всей картотеки из памяти } case '5': { Opis (&begin,naim); break; } } break; default: cout << rus(" Невыполнимая команда!\n"); } goto metka; return 0; } //----РУСИФИКАТОР---- char bufer[100]; char* rus(const char* text) { CharToOem(text,bufer); return bufer; } //------НАЧАЛЬНОЕ ФОРМИРОВАНИЕ------ void Disk (char den [],char mes [],char god [],int pok,char naim [],char price [],char ediz [],int kol) { pok=1; kol=1; FILE *fp; naim [0]='0'; den [0]='0'; price [0]='*'; ediz [0]='0'; naim [1]='3'; den [1]='0'; price [1]='*'; ediz [1]='0'; naim [2]='3'; den [2]='\0'; price [2]='*'; ediz [2]='0'; naim [3]='2'; mes [0]='1'; price [3]='*'; ediz [3]='0'; naim [4]='3'; mes [1]='1'; price [4]='\0'; ediz [4]='\0'; naim [5]='\0'; mes [2]='\0'; god [0]='0'; god [1]='1'; god [2]='2'; god [3]='3'; god [4]='\0'; fp=fopen ("data.txt","w"); fprintf (fp,"%s.",den); fprintf (fp,"%s.",mes); fprintf (fp,"%s\n",god); fprintf (fp,"%d\n",pok); fprintf (fp,"%s\n",naim); fprintf (fp,"%s\n",price); fprintf (fp,"%s\n",ediz); fprintf (fp,"%d\n",kol); fclose (fp); } //-----КОЛИЧЕСТВО СОХРАНЕННЫХ ДАННЫХ------- int kolvo () { int k=0; char a[51]; FILE *f; f=fopen("data.txt","r"); while (!feof(f)) { fscanf(f,"%s",a); k++; } fclose (f); return ((k-1)/6); } //-----ЗАГРУЗКА ДАННЫХ ИЗ ФАЙЛА----- struct Spisok *Loading (char den [],char mes [],char god [],int pok,char naim [],char price [],char ediz [],int kol) { int a=-1,b=0; FILE *fp; Spisok *aa; Spisok *d; fp=fopen ("data.txt","r"); fscanf(fp,"%s",den); fprintf(fp,"%s.",mes); fprintf(fp,"%s.\n",god); fscanf(fp,"%d",&pok); fscanf(fp,"%s",naim); fscanf(fp,"%s",price); fscanf(fp,"%s",ediz); fscanf(fp,"%d",&kol); aa=new Spisok; strcpy(aa->d,den); strcpy(aa->m,mes); strcpy(aa->g,god); aa->p=pok; strcpy(aa->a,naim); strcpy(aa->n,price); strcpy(aa->e,ediz); aa->k=kol; aa->next=0; d=aa; a=kolvo (); b=1; while ((!feof(fp))&&(b<a)) { fscanf(fp,"%s",den); fscanf(fp,"%s.",mes); fscanf(fp,"%s.\n",god); fscanf(fp,"%d",&pok); fscanf(fp,"%s",naim); fscanf(fp,"%s",ediz); fscanf(fp,"%s",price); fscanf(fp,"%d",&kol); Load (&d,den,mes,god,pok,naim,price,ediz,kol); b++; } fclose (fp); cout << rus(" Загружено: ") << b << endl; return d; } //------ДОБАВЛЕНИЕ К КОНЦУ ПРИ ЗАГРУЗКЕ------------- void Load (Spisok **begin,char den [],char mes [],char god [],int pok,char naim [],char price [],char ediz [],int kol) { Spisok *t=*begin; Spisok *t1; Spisok *aa; while (t) { t1=t; t=t->next; } aa=new Spisok; strcpy(aa->d,den); strcpy(aa->m,mes); strcpy(aa->g,god); aa->p=pok; strcpy(aa->a,naim); strcpy(aa->n,price); strcpy(aa->e,ediz); aa->k=kol; aa->next=0; t1->next=aa; } //-------КОЛИЧЕСТВО ДАННЫХ В ПАМЯТИ--------- int Podchet (Spisok **begin) { Spisok *t=*begin; int k=0; while (t) { k++; t=t->next; } return k; } //--------ПЕЧАТЬ ДАННЫХ--------------------- void Pech (Spisok **begin) { Spisok *t=*begin; while (t) { cout << rus(" Наименование товара: ") << t->a << endl; cout << rus(" Дата последнего завоза: ") << t->d << "." << t->m << "." << t->g << endl; cout << rus(" Цена товара: ") << t->n; cout << rus(" руб за 1 ") << t->e << endl; cout << rus(" Количество товара: ") << t->k << " " << t->e << "\n" << endl; t=t->next; } } //------ВЫХОД ИЗ ПРОГРАММЫ--------- void Exit (Spisok **begin) { Spisok *t=*begin; Spisok *t1; int n=0; while (t) { t1=t->next; delete t; n++; t=t1; } cout << rus("Выгружено: ") << n << "\n" << endl; exit (0); } //------СОХРАНЯЕМСЯ В ФАЙЛ--------- void Save (Spisok **begin) { int n=0; Spisok *t=*begin; Spisok *t1; FILE *fp; fp=fopen ("data.txt","w"); while (t) { t1=t->next; fprintf(fp,"%s.",t->d); fprintf(fp,"%s.",t->m); fprintf(fp,"%s\n",t->g); fprintf(fp,"%d\n",t->p); fprintf(fp,"%s\n",t->a); fprintf(fp,"%s\n",t->n); fprintf(fp,"%s\n",t->e); fprintf(fp,"%d\n",t->k); t=t1; n++; } cout << rus("Сохранено: ") << n << "\n" << endl; fclose (fp); } //---------ИНДИКАЦИЯ ЧИСЕЛ-------- int ForCHIS (char a[]) { int i,n=0; n=strlen (a); for (i=0;i<n;i++) { if (((a[i]<'0')||(a[i]>'9'))&&(a[i]!=':')) { return 1; } } return 0; } //--------ИНДИКАЦИЯ СЛОВ--------------- int ForFIO (char a[]) { int i,n=0; n=strlen (a); for (i=0;i<n;i++) { if (((a[i]<'A')||(a[i]>'Z'))&&((a[i]<'a')||(a[i]>'z'))) { return 1; } } return 0; } //--------ФУНКЦИЯ СРАВНЕНИЯ------------ int Srav (Spisok **begin, char naim[]) { Spisok *t=*begin; int a=0; while (t) { a=strcmp(t->a,naim); if (a==0) { return 2; } else { t=t->next; } } return 0; } //----------ГЛАВНОЕ МЕНЮ-------- void MainMenu () { cout << rus(" 1 - Добавить информацию о новом товаре\n");// Добавление книги cout << rus(" 2 - Инвентаризация товаров\n"); // Просмотр базы cout << rus(" 3 - Оформление покупки\n"); // Выдать книгу cout << rus(" 4 - Уцека товаров\n"); // Возврат обратно книги cout << rus(" 5 - Опись товаров\n");// Поиск по запросу cout << rus(" 6 - Сохранить изменения\n"); cout << rus(" 7 - Выйти из программы\n\n"); } //----------ПОИСК------------------ void Opis (Spisok **begin,char naim []) { int a=0,k=0,dlina,d=0; Spisok *t=*begin; Spisok *t1; do { cout << rus("Наименование товара: "); gets (naim); a=ForFIO (naim); dlina=strlen(naim); if (a) { cout << rus("ОШИБКА! Недопустимый символ!\n"); } } while ((dlina==0)||(dlina>50)||(a)); while (t) { t1=t->next; k=strcmp(t->a,naim); if (k==0) { d=1; cout << rus("\nНАЙДЕН РЕЗУЛЬТАТ:\n"); cout << rus("Цена товара: ") << t->n << " " << t->e << endl; cout << rus("Количество в наличии: ") << t->k << endl; } t=t1; } if (d==0) { cout << rus("Такой книги не найдено!\n"); } } //------------ВЫДАТЬ КНИГУ НА РУКИ------------ void Prodat (Spisok **begin,int pok,char naim [],char price [],char ediz [],int kol) { int a=0,k1=0,dlina,d=0,chetchik=0; Spisok *t=*begin; Spisok *t1; do { cout << rus("Укажите наименование товара: "); gets (naim); a=ForFIO (naim); dlina=strlen(naim); if (a) { cout << rus("ОШИБКА! Недопустимый символ!\n"); } } while ((dlina==0)||(dlina>50)||(a)); while (t) { t1=t->next; k1=strcmp(t->a,naim); if (k1==0) { d=1; cout << rus(" Цена товара: ") << t->n << rus(" руб за 1 ") << t->e << endl; t->p=0; } t=t1; } t=*begin; while (t) { t1=t->next; k1=strcmp(t->a,naim); if ((k1==0)&&((t->p)==1)) { chetchik=chetchik-1; // Количество книг уменьшилось на 1 } t=t1; } t=*begin; while (t) { t1=t->next; k1=strcmp(t->a,naim); if ((k1==0)&&((t->p)==1)) { t->k=chetchik; // Применяем изменения } t=t1; } if (d==0) { cout << rus("Такого товара нет в наличии!\n"); } } //------ВОЗВРАТ КНИГИ В БИБЛИОТЕКУ----------- void Ucenka (Spisok **begin,int pok,char naim [],char price []) { int a=0,k1=0,l=0,m=0,dlina,d=0,chetchik=0; Spisok *t=*begin; Spisok *t1; do { cout << rus("Укажите наименование товара: "); gets (naim); a=ForFIO (naim); dlina=strlen(naim); if (a) { cout << rus("ОШИБКА! Недопустимый символ!\n"); } } while ((dlina==0)||(dlina>20)||(a)); while (t) { t1=t->next; k1=strcmp(t->a,naim); if (k1==0) { d=1; cout << rus("Цена товара ДО уценки: ") << t->n << rus(" руб за 1 "); cout << t->e << endl; cout << rus("Укажите новую цену: "); gets (price); a=ForCHIS (price); dlina=strlen(price); if (a) { cout << rus("ОШИБКА! Недопустимый символ!\n"); } if (! strcmp(t->n,price)) { cout << rus("Именно ЭТА цена у данного товара!"); } strcpy(t->n,price); cout << rus("Теперь у данного товара цена: ") << t->n << rus(" руб за 1 "); cout << t->e << endl; } break; t=t1; } } //-------ДОБАВЛЕНИЕ НОВОЙ КНИГИ----------- void Dobav (Spisok **begin,char den [],char mes [],char god [],int pok,char naim [],char price [],char ediz [],int kol) { int dlina=0,b=0,abc=1,a,x,y,z,c=0; char kol1 [11]; Spisok *pp; Spisok *aa=*begin; Spisok *t1; Spisok *t=*begin; do { cout << rus("Укажите наименование товара: "); gets (naim); a=ForFIO (naim); dlina=strlen(naim); if (a) { cout << rus("ОШИБКА! Недопустимый символ!\n"); } abc=Srav (&aa,naim); if (abc) { do { cout << rus("Такой товар уже имеется в наличии!\n"); cout << rus("Укажите количество ввозимого товара: "); gets(kol1); a=ForCHIS(kol1); dlina=strlen(kol1); if (a) { cout << rus("ОШИБКА! Недопустимый символ!\n"); } kol=Perevod (kol1); cout << rus("Теперь количество данного товара стало: ") << kol; } while((dlina==0)||(dlina>50)||(a)); } } while ((dlina==0)||(dlina>50)||(a)); do { cout << rus("Укажите цену товара: "); gets (price); dlina=strlen (price); a=ForCHIS(price); if(a) { cout << rus("ОШИБКА! Недопустимый символ!\n"); } } while ((dlina==0)||(dlina>50)); do { cout << rus("Укажите единицу измерения: "); gets (ediz); a=ForFIO (ediz); dlina=strlen(ediz); if (a) { cout << rus("ОШИБКА! Недопустимый символ!\n"); } } while ((dlina==0)||(dlina>10)||(a)); metka1:; do { cout << rus("Укажите дату завоза: ") << endl; cout << rus("Укажите число: "); gets (den); a=ForCHIS (den); dlina=strlen(den); if (a) { c=2; } cout << rus("Укажите месяц: "); gets (mes); a=ForCHIS (mes); dlina=strlen(mes); if (a) { c=2; } cout << rus("Укажите год: "); gets (god); a=ForCHIS (god); dlina=strlen(god); if (a) { c=4; } if © { cout << rus("ОШИБКА!!! Недопустимый символ!\n"); } } while ((strlen(den)==0)||(strlen(den)>2)||(strlen(mes)==0)||(strlen(god)>4)||©); x=Perevod (den); y=Perevod (mes); z=Perevod (god); if (((x<1)||(x>31))||((y<1)||(y>12))||((z<1)||(z>9999))) { goto metka1; } do { cout << rus("Укажите количество товара: "); gets (kol1); a=ForCHIS (kol1); dlina=strlen(kol1); if (a) { cout << rus("ОШИБКА! Недопустимый символ!\n"); } } while ((dlina==0)||(dlina>10)||(a)); kol=Perevod (kol1); if(abc==0) { while (t) { t1=t; t=t->next; } pp=new Spisok; strcpy(pp->d,den); strcpy(pp->m,mes); strcpy(pp->g,god); pp->p=pok; strcpy(pp->a,naim); strcpy(pp->n,price); strcpy(pp->e,ediz); pp->k=kol; pp->next=0; pp->next=0; t1->next=pp; } b=Podchet (&aa); cout << rus("Количество данных: ") << b << "\n" << endl; } //--------ПЕРЕВОД СТРОКИ В ЧИСЛО------------ int Perevod (char pl[]) { int a=0,b; for (b=0;b<strlen (pl);b++) a=a*10+pl[b]-'0'; return a; } Она у меня после сохранения выдает Виндосовскую Ошибку(отправлять,не отправлять оштчет и все такое ) Че такое?!Помоги пожалуйста |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Ну ... такой пост читать !
Прикрепил бы файл! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |