Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 09.12.2010, 20:31   #1 (permalink)
Тарас
Новичок
 
Регистрация: 09.12.2010
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Просьба проверить код на корректность, C++

Имеется задача для С++
В файле хранится инфа;
999999 - номер изделия; 30А - его наименование; dd/mm/yy - дата выпуска; 999999 - кол-во изделий выпущено в определенную дату; 999999 - цена одно изделия
Прочитать файл, отсортировать сначала по алфавиту, по наименованию а потом по дате.
Вывести общее кол-во изделий.

вот код:
Код:
#include <iostream>
#include <string>
#include <fstream>
using namespace std

bool compare_strings (string first, string second)
{
unsigned int i=0;
while ( (i<first.length()) && (i<second.length()) )
{
if (tolower(first[i])<tolower(second[i])) return true;
else if (tolower(first[i])>tolower(second[i])) return false;
++i;
}
if (first.length()<second.length()) return true;
else return false;
}

bool compare_items (item first, item second)
{
if (first.name.compare(second.name) != 0)
return compare_strings (first.name, second.name)
else
return compare_strings (first.date, second.date)
}

main ()
{
record Item { 
longint number; 
string name; 
string date;
longint quantity;
longint price }

list<Item> Items;
list<string>::iterator it;
Item tempItem;

fstream itemsFile ("items.txt", fstream::in);

string line, field;
size_t posNext, posPrevious;

while (!itemsFile.eof()) {
getline(itemsFile, line);
posNext = line.find("/");

field.clear();
field = line.substr (1, posNext);
tempItem.number = field;

posPrevious = posNext;
posNext = line.find("/", posPrevious+1);

field.clear();
field = line.substr (posPrevious, posNext);
tempItem.name = field;

posPrevious = posNext;
posNext = line.find("/", posPrevious+1);

field.clear();
field = line.substr (posPrevious, posNext);
tempItem.date = field;

posPrevious = posNext;
posNext = line.find("/", posPrevious+1);

field.clear();
field = line.substr (posPrevious, posNext);
tempItem.quantity = field;

posPrevious = posNext;
posNext = line.find("/", posPrevious+1);

field.clear();
field = line.substr (posPrevious, NULL);
tempItem.price = field;

Items.push_front(tempItem);
}

Items.sort(compare_strings);

for (it=Items.begin(); it!=Items.end(); ++it)
cout << " " << *it;
cout << endl;

cout << "size: " << (int) Items.size() << endl;

return 0;
}
Тарас вне форума   Ответить с цитированием

Старый 09.12.2010, 20:31
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Рекомендую посмотреть на аналогичные топики, там вы можете найти содержательные ответы по вашему запросу

Просьба помочь разобраться с питанием
Чем проверить винчестер?
Как проверить материнку?
Как проверить шлейф?

Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Метки
c++

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 12:15.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.