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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2010, 01:12   #1
zoluxa
Пользователь
 
Регистрация: 16.03.2010
Сообщений: 53
По умолчанию Обработка файловых структур данных в С++

А. Создать файл, который содержит сводку об ассортименте игрушек в магазине. Структура записи: название игрушки, цена, количество, вековые пределы, например 2-5, то есть от 2 до 5 лет. Количество записей произвольно.
Б. Написать программу, в результате выполнения которой выдаются следующие сведения:
- названия игрушек, которые подходят детям от 1 до 3 лет;
- стоимость самой дорогой игрушки и ее наименования;
- название игрушки, которое по стоимости не превищуе х руб. и подходит ребенку в возрасте от а к Ь лет. Значение х, а, Ь ввести из терминала
Код:
Код:
#include <iostream.h>

using namespace std;
const int LEN=80;
class employee
{
   private:
           char name[LEN];
           unsigned long coast;
           unsigned long kilkist;
           unsigned long mezi;
   public:
          friend istream& operator >> (istream& s. employee& e);
          friend ostream& operator << (ostream& s. employee& e);
};          
 istream& operator >> (istream& s. employee& e)
 {
          cout<<"\n Ââåä³òü íàçâó ³ãðàøêè:"; 
          cin>>e.name;
          cout<<"\n Ââåä³òü ö³íó ³ãðàøêè:"; 
          cin>>e.coast; 
          cout<<"\n Ââåä³òü ê³ëüê³ñòü ³ãðàøîê:"; 
          cin>>e.kilkist;  
          cout<<"\n Ââåä³òü â³êîâ³ ìåæ³ ³ãðàøêè:"; 
          cin>>e.mezi;  
          return s;
 }
 friend ostream& operator << (ostream& s. employee& e)
 {
       cout<<"\n  íàçâà ³ãðàøêè:"<<e.name; 
       cout<<"\n  ö³íà ³ãðàøêè:"<<e.coast;
       cout<<"\n  ê³ëüê³ñòü ³ãðàøîê:"<<e.kilkist; 
       cout<<"\n  â³êîâ³ ìåæ³ ³ãðàøêè:"<<e.mezi;   
       return s;
 }
 template<class TYPE>
 struct link
 {
        TYPE data;
        link* next;
 };
  template<class TYPE>
  class linklist
  {
        private:
                link<TYPE>* first;
        public:
               linklist()
               {first=NULL;}
               void additem(TYPE d);
               void display();
  };
   template<class TYPE>
   void linklist<TYPE>::additep(TYPE d)      
   {
        link<TYPE>* newlink=new link<TYPE>;
        newlink->data=d;
        newlink->next=first;
        first=newlink;
   } 
   template<class TYPE>
   void linklist<TYPE>::display()
   {
        link<TYPE>* current=first;
        while(current !=NULL)
        {
                      cout<<endl<<current->data;
                      current=current->next;
        }
   }
                             
int main()
{
    linklist<employee> lemp;
    employee emptemp;
    char ans;
    do
    {
         cin>>emptemp;
         lemp.additem(emptemp);
         cout<< "\n Ïðîäîâæóâàòè? (òàê/í³)?";
         cin>>ans;
    }
    while (ans !='n');
    lemp.display();
    cout<<endl;
     
    system("PAUSE");
    return 0;
}
Доброго времени суток! Помогите пожалуйста найти и исправить ошыбку! Заранее благодарю))

Последний раз редактировалось Stilet; 07.04.2010 в 08:30.
zoluxa вне форума Ответить с цитированием
Старый 07.04.2010, 11:31   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Чесно скажу - мне кажется что это не самый удачный подход для решения.
Оформи структуру с полями, и динамический массив, ну или тот же list подойдет.мне кажется это будет проще чем с классами.

Но задачка мне твоя понравилась. Самому стало интересно, и вот что я написал:
Код:
#include "stdafx.h"
#include <list>
using namespace std;


class toy{
public:
           char name[255];
           int coast, kilkist, mezi;
};

list<toy> l;
// Выводим список на экран
void wri(){
	  for(list<toy>::iterator  i = l.begin(); i!=l.end(); i++)
      {
		  toy t=*i;
		  //От одного до трех лет
		  if ((t.mezi>=1)&&(t.mezi<=3)) {
		   printf("%d\t%d\t%d\t%s\n",t.coast,t.kilkist,t.mezi,t.name);
		  }
      }
}
// Пишем в файл
void tofile(){
	FILE* f=fopen("c:\\temp\\f","w+");
	  for(list<toy>::iterator  i = l.begin(); i!=l.end(); i++)
      {
		  toy t=*i;
		  fprintf(f,"%d\n",t.coast );
		  i++;
      }
	  fclose(f);
}
// Чтем из файла
void fromfile(){
	FILE* f=fopen("c:\\temp\\f","r");
	l.clear();
	  for(;!feof(f);)
      {
		  toy *t=new toy();
		  fscanf(f,"%d %d %d %s",&t->coast,&t->kilkist,&t->mezi,&t->name);
          l.push_front(*t);
      }
	  fclose(f);
}


int _tmain(int argc, _TCHAR* argv[])
{

 toy *t;
/* int i;
 for(i=0;i<10;i++){
  t=new toy();
  t->coast =5;
  l.push_front(*t);
 }
 */

 fromfile();
 wri();
 //tofile();
 getchar();
 
	return 0;
}
Вот там в процедуре wri() условие поставил. Вот по образу и подобию и поступай так же, ато что-то ты лишнее у себя намутила(а)
I'm learning to live...

Последний раз редактировалось Stilet; 07.04.2010 в 12:00.
Stilet вне форума Ответить с цитированием
Старый 07.04.2010, 18:33   #3
zoluxa
Пользователь
 
Регистрация: 16.03.2010
Сообщений: 53
По умолчанию

Спасибо! Но когда я запускаю - выдает ошыбку undefinite reference to 'WinMain@16'. Помогите пожалуйста))
zoluxa вне форума Ответить с цитированием
Старый 08.04.2010, 09:47   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
zoluxa
Ну что ты кричишь... Я тебе пример дал не для копипасте а для осмысливания.
Я пишу на VS2010 у меня главная функция Описывается int _tmain(int argc, _TCHAR* argv[])

У тебя просто int main() - вот и напиши ее так как твой компилятор хочет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.04.2010, 23:23   #5
zoluxa
Пользователь
 
Регистрация: 16.03.2010
Сообщений: 53
По умолчанию

Я сделал но всеровно выдает ошибку!
#include <list.h>
using namespace std;


class toy{
public:
char name[255];
int coast, kilkist, mezi;
};

list<toy> l;
// Âûâîäèì ñïèñîê íà ýêðàí
void wri()
{
for(list<toy>::iterator i = l.begin(); i!=l.end(); i++)
{
toy t=*i;
//Îò îäíîãî äî òðåõ ëåò
if ((t.mezi>=1)&&(t.mezi<=3)) {
printf("%d\t%d\t%d\t%s\n",t.coast,t .kilkist,t.mezi,t.name);
}
}
}
// Ïèøåì â ôàéë
void tofile(){
FILE* f=fopen("c:\\temp\\f","w+");
for(list<toy>::iterator i = l.begin(); i!=l.end(); i++)
{
toy t=*i;
fprintf(f,"%d\n",t.coast );
i++;
}
fclose(f);
}
// ×òåì èç ôàéëà
void fromfile(){
FILE* f=fopen("c:\\temp\\f","r");
l.clear();
for(;!feof(f)
{
toy *t=new toy();
fscanf(f,"%d %d %d %s",&t->coast,&t->kilkist,&t->mezi,&t->name);
l.push_front(*t);
}
fclose(f);
}


int _tmain()
{

toy *t;
/* int i;
for(i=0;i<10;i++){
t=new toy();
t->coast =5;
l.push_front(*t);
}
*/

fromfile();
wri();
//tofile();
getchar();

return 0;
}
[Linker error] undefined reference to `WinMain@16' - я не зна что делать, помогите!!
zoluxa вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка файловых структур данных Any13 Помощь студентам 1 06.04.2010 18:07
Программирование с использованием структур данных стэк Nostalgia Помощь студентам 0 24.02.2010 20:20
реализация линейных структур данных в подпрограммах ArniLand Общие вопросы C/C++ 0 31.01.2010 01:20
Help с разбором структур данных в Си War13 Помощь студентам 0 26.10.2009 19:55
Обработка массивов структур с использованием контейнеров artyom060791 Помощь студентам 0 14.04.2009 22:43