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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.07.2012, 07:23   #1
deonis82
Новичок
Джуниор
 
Регистрация: 10.07.2012
Сообщений: 1
По умолчанию Не могу сделать задачу....

Не могу создать работу со списком:


*разработать программу для создания и работы с двусвязным списком, состоящим из структур.Структура содержит название издания, газета или журнал, цена экземпляра. Добавлять новые записи так, чтобы сначала располагались журналы, затем газеты.*/

#include "stdafx.h"
#include <io.h>
#include <stdio.h>
#include <cstdio>
#include <conio.h>
#include <windows.h>
#include <fstream>
#include <string.h>

char name[20];//название
int tip=0;//, тип
int price=0;//цена
int choice=0;//выбор
bool listexist=0; // наличие списка
int f=0;
bool z=0;
FILE *pr; // Указатели на файлы


struct spisok
{
int tip[1];//тип
int price[10];//цена
char name[20];
}bib;
struct List
{
List*curret;
List*next;//указатель след
List*prev;//указатель пред
List*last;//указатель полседний
List*first;//указатель начальный
List*NewList;
}
int fileexists()
{
pr=fopen("C:\\biblioteka.txt","r"); // open for reading
if (!pr) f=0;
else f=1;
fclose(pr);
return f;
}
int create() // создание нового файла
{
fileexists();
printf("------------------------------------\n");
int v=0;
if (f!=0)
printf(" Удалить старый и создать новый список? (1-Да, 0-Меню):\n" );
scanf("%d",&v);
if (v!=0)
{
std::remove("C:\\biblioteka.txt");
pr=fopen("C:\\biblioteka.txt","w"); // Создание нового файла new1.txt
fprintf (pr,"%s\n",bib); // Запись в файл строки text
fclose(pr); // Закрытие файла pf
printf(" Файл списка создан! :\n");
return listexist=1;
}
else
z=1;
return z;
};

int print() // просмотр файла

{char* st;
pr=fopen("C:\\biblioteka.txt","r"); // Открытие файла pr для чтения

while (!feof(pr)) // Пока не конец файла pr
{
fgets(st,50,pr); // Чтение из файла pr строки в переменную st

printf("%s\n",st); // Вывод строки st на дисплей
}
fclose(pr);
printf("------КОНЕЦ---------\n");
getch();
z=1;
return z;
};


void corr(void) // поиск и изменение
{

};

void vvod()

{int k=1; char l;

system( "cls" );
do{ printf(" ---Внесение данных в список:--- \n" );
printf("------------------------------------\n");

List*curret=l;
l=new spisok;
printf(" Введите название:\n" );
scanf("%s",bib.name);
printf(" Введите стоимость:\n" );
scanf("%d",&bib.price);
printf(" Введите тип издания (журнал-1, газета-0) :\n" );
scanf("%d",&bib.tip);
printf(" Вы ввели товар под названием %s",&bib.name,":\n\n" );
printf("\n Ввод окончен? (0-Продолжить, 1-Закончить):\n" );
scanf("%d",&k);
getch();
}
while (k!=0);
z=1;
};

void add()// добавление в файл
{
};



void menu()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
do
{

choice=0;
printf(" Меню программы \n" );
printf(" ----------------------------------------\n");
printf(" 1. Создание списка. \n" );
printf(" 2. Просмотр списка. \n" );
printf(" 3. Добавление в конец списка новой структуры.\n" );
printf(" 4. Корректировка списка.\n" );
printf(" 5. Выход. \n" );
printf(" ----------------------------------------\n");
scanf("%d", &choice);
switch(choice)
{
case 1: if (listexist!=0)
{printf(" Внимание! Список уже создан! \n" ); break;}
else
{printf(" ---Создание списка--- \n" );break; create(); }
case 2: if (listexist=0)
{printf(" Внимание! Список не создан-создайте его! \n" );menu(); break;}
else
{printf("---Просмотр списка--- \n" ); print() ;break; }
case 3: if (listexist=0)
{printf(" Внимание! Список не создан-создайте его! \n" );menu(); break;}
else vvod();
printf(" ---Добавление в список--- \n"); break;
case 4: if (listexist=0)
{printf(" Внимание! Список не создан-создайте его! \n" );menu(); break;}
else
{ printf("---Корректировка списка (Сначала журналы, потом газеты) \n" );corr();break;}
case 5: ;{printf(" Выполняется выход из программы \n" ); break; exit(1);}
default : {printf(" Внимание! Ошибка ввода! Необходимо ввести число 1-5 согласно пункта в МЕНЮ ");break;
}
}
printf (" Нажмите клавишу Ввод... \n" );

}
while (choice!=5);
}

int _tmain()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
while (z=0)
{
menu();
vvod();
}
menu();


getch();
return 0;
}



help, please...
deonis82 вне форума Ответить с цитированием
Старый 12.07.2012, 10:45   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

1. Заключите код в тег CODE, иначе это будет нечто нечитабельное.
2. Список реализуется на основе узлов. Для двусвязного списка будет примерно такой вид:
Код:
struct Node
{
Node* prev;
Node* next;
spisok* data;
};
А всякие top, bottom типа Node* уже идут в отдельном классе списка.
Правда, у вас в коде вообще черт ногу сломит, какие-то непонятные глобальные переменные, непонятные массивы в spisok и так далее. Но пока не оформите код соответствующим тегом, в этом будет совсем невозможно разбираться.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 12.07.2012, 12:47   #3
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Так, еще один суда же.
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Старый 12.07.2012, 13:58   #4
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Krok27, а в чем проблема?
Цитата:
Хотите, чтобы вам помогли - выкладывайте, свой (можно нерабочий), код (только который именно ваш, и который нужно исправить, обьяснить), и говорите, что именно не получается. Темы без кода и конкретного вопроса - улетают в неизвестном направлении. Также темы, с просьбой решить задачу, или задачИ - предупреждение автору + удаление или закрытие темы.
У автора в коде каша, а код по правилам форума не оформлен, но попытки написать программу самостоятельно налицо, а то, что какие-то функции не может написать - так можно просто алгоритм подсказать. Но для начала нужно хотя бы имеющееся нормально оформить и привести в порядок. А дальше видно будет.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 12.07.2012, 14:05   #5
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

2Гром Возможно ошибаюсь, но что-тот мне подсказывает, что все не так все просто, особенно
Цитата:
конкретного вопроса
и
Цитата:
что именно не получается
.

Топикстартер конкретно нас спрашивает
Цитата:
Не могу создать работу со списком:
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Старый 12.07.2012, 20:16   #6
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от Гром Посмотреть сообщение
Krok27, а в чем проблема?

У автора в коде каша, а код по правилам форума не оформлен, но попытки написать программу самостоятельно налицо, а то, что какие-то функции не может написать - так можно просто алгоритм подсказать. Но для начала нужно хотя бы имеющееся нормально оформить и привести в порядок. А дальше видно будет.

Формулировка запроса, оформление кода, и его содержание(!)красноречиво намекают проницательному читателю: ТС не является автором кода. И он имеет весьма весьма туманные представления о том, как он работает.
Что касается "списков" - вероятно ТС хочет заполучить их примерно так же, как заполучил представленный код.
_Bers вне форума Ответить с цитированием
Старый 12.07.2012, 20:44   #7
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Цитата:
Сообщение от _Bers Посмотреть сообщение
Формулировка запроса, оформление кода, и его содержание(!)красноречиво намекают проницательному читателю: ТС не является автором кода. И он имеет весьма весьма туманные представления о том, как он работает.
Не думаю. Я бы сказал, что ТС скорее имеет весьма туманные представления о C++ вообще, а не об этом коде в частности.
Просто по той простой причине, что ГДЕ бы он мог найти такой ужас? Уже от одного этого плохо делается:
Код:
if (listexist=0)
или вот:
Код:
printf(" ---Создание списка--- \n" );break; create();
Житейский опыт подсказывает, что чем хуже код, тем больше вероятность, что выкладывает его автор. Если бы код был бы хотя бы рабочим, но в нем бы не были реализованы некоторые функции, я бы еще мог предположить, что автор где-то его умыкнул, но где бы могли выложить ТАКОЕ, чтобы при этом создавалось впечатление, будто код будет хоть как-то работать?
Автору точно нужно изучать язык и тренироваться на хеллоуворлдах, но в воровстве кода я бы его не стал обвинять. Просто потому, что мне даже трудно представить, КЕМ надо быть, чтобы украсть вот ЭТО?
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 13.07.2012, 08:28   #8
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Цитата:
что ГДЕ бы он мог найти такой ужас?
Сосед по комнате наваял, под воздействием общеизвестных лекарств.
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу понять задачу. Artem_Kow Помощь студентам 1 28.03.2012 18:31
не могу сделать задачу Pascal на массивы!!! sergsergserg Помощь студентам 11 07.12.2010 18:50
НЕ МОГУ РЕШЫТЬ ЗАДАЧУ romann Общие вопросы C/C++ 13 31.10.2010 18:36