Программа написана в Dev-C++ 5.7.1., при запуске в Borland C++ ругается на bool и всё, что с ним связано. Что делать? Нужно, чтоб работала именно в Borland C++
#include <stdlib.h>
#include <string.h>
#include <conio.h>
void Create();
void Display();
void Append();
void Edit();
void Delete();
bool Exist();
struct goods{char name[16]; float price; int quantity; struct good *next;
struct goods *prev;} Item;
struct goods *head, *tail;
main()
{
char c;
while(1)
{
system("cls");
printf("n *DOUBLE-LINKED LIST*nn");
puts("Press 1 to create list");
puts("Press 2 to display list");
puts("Press 3 to append item");
puts("Press 4 to edit list");
puts("Press 0 to exit");
printf("nSelect a command: ");
c=getch();
switch(c)
{
case '1': Create(); break;
case '2': Display(); break;
case '3': Append(); break;
case '4': Edit(); break;
case '0': Delete(); return 0;
default:
printf("nnIrrelevant command!n");
system("pause");
}
}
}
void Create()
{
system("cls");
if (Exist())
{
printf("The list has already been created!n");
system("pause");
return;
}
struct goods *cur, *p;
printf("Enter goods information:nn");
p=NULL;
do
{
cur=(goods *)malloc(sizeof(goods));
printf("Item: ");
scanf("%s",cur->name);
printf("Price: ");
scanf("%f", &cur->price);
printf("Quantity: ");
scanf("%d", &cur->quantity);
cur->prev=p;
if (p !=NULL) p->next=cur;
else head=cur;
p=cur;
printf("--------------------n");
printf("Press Esc to quit...nn");
}
while (getch() != 27);
tail=cur;
tail->next=NULL;
printf("nDone!n");
system("pause");
}
void Display()
{
if (!Exist())
{
printf("nnThe list has not been created!n");
system("pause");
return;
}
int count=0;
struct goods *cur;
system("cls");
printf("n *** GOODS LIST ***nn");
printf("---------------------------------------------n");
printf("%-3s%-16s%-16s%-16sn", "#", "Item:", "Price:", "Quantity:");
printf("---------------------------------------------n");
cur=head;
while (cur !=NULL)
{
printf("%-3d%-16s%-16.2f%-16dn", ++count, cur->name, cur->price, cur->quantity);
cur=cur->next;
}
printf("---------------------------------------------n");
system("pause");
}
void Append()
{
if (!Exist())
{
printf("nnThe list has not been created!n");
system("pause");
return;
}
struct goods *cur;
system("cls");
printf("n *** ADDING NEW ITEM ***nn");
cur=(goods *)malloc(sizeof(goods));
printf("Item: ");
scanf("%s",cur->name);
printf("Price: ");
scanf("%f", &cur->price);
printf("Quantity: ");
scanf("%d", &cur->quantity);
cur->prev=tail;
cur->next=NULL;
tail->next=cur;
tail=cur;
printf("nDone!n");
system("pause");
}
void Edit()
{
if (!Exist())
{
printf("nnThe list has not been created!n");
system("pause");
return;
}
int count=0;
float limit;
struct goods *cur, *temp;
system("cls");
cur=head;
printf("n *** EDIT MODE ***nn");
printf("Enter price: ");
scanf("%f", &limit);
while (cur !=NULL)
{
if (cur->price>limit)
{
count++;
if (cur == head)
{
if (cur->next !=NULL)
{
head=cur->next;
head->prev=NULL;
free(cur);
cur=head;
}
else
{
free(cur);
head=tail=cur=NULL;
printf("The list has been deleted!n");
}
}
else if (cur == tail)
{
tail=cur->prev;
tail->next=NULL;
free(cur);
cur=tail;
}
else
{
cur->next->prev=cur->prev;
cur->prev->next=cur->next;
temp=cur;
cur=cur->next;
free(temp);
}
}
else cur=cur->next;
}
printf("%d item(s) removed.n",count);
system("pause");
}
void Delete()
{
struct goods *cur, *temp;
cur=head;
while (cur !=NULL)
{
temp=cur;
cur=cur->next;
free(temp);
}
head=tail=NULL;
}
bool Exist()
{
if (head !=NULL) return true;
else return false;
}
typedef enum {false = 0, true = 1} bool;
#endif
Вам кратко или подробно (с целью осознания)?
using namespace std;
Хотелось бы подробно
using namespace std;
на эту строку тоже ругается
struct goods{char name[16]; float price; int quantity;
struct goods *next;
struct goods *prev;} Item;
struct goods *head, *tail;
//struct goods *next; //здесь вместо good надо goods
//заменить
void Create()
//if (Exist())
//на
if (head !=NULL)
//заменить в каждой процедуре
void Display()
void Append()
void Edit()
//if (!Exist())
//на
if (head ==NULL)
/*
bool Exist()
{
if (head !=NULL) return true;
else return false;
}
*/
1. Тип bool наличиствует в C++ (в качестве встроенного типа) и в стандарте C99 (в виде _Bool и заголовочного файла stdbool.h)
2. Turbo C/Borland C не C99 от слова совсем, в лучшем случае C90, в лучшем
3. Типы используются после их определения как и многое другое (это к вопросу о применении "решения" тов. xAtom)
PS: Заголовочного файл conio.h не является частью никакого стандарта
Я видел screenshot выше подумал, а это не Borland C++ для DOS 1992-1995 да нет чур-меня ведь 1/5 21 века
Тогда Borland C++ имел силу сейчас не знаю, забил на Borland большой осиновый кол жалко серебреных пуль не нашлось(типа шутка)
Я видел screenshot выше подумал, а это не Borland C++ для DOS 1992-1995 да нет чур-меня ведь 1/5 21 века
Тогда Borland C++ имел силу сейчас не знаю, забил на Borland большой осиновый кол жалко серебреных пуль не нашлось(типа шутка)
Включать этот заголовочный файл имеет смысла чуть больше, чем... ну вы поняли.
Это одурь которой до сих пор учат бараны в своих радостных книжечках/методичках по C.
Этот заголовочный файл не был стандартом никогда и нигде и тем более он не требуется для написания большинства тн лабораторных работ, зато как и большинство дебильных практик оседает так глубоко насколько это возможно.
Как-бы не в обиду напечатано, я с Вами не согласен гуглёшь даёт ссылки на conio.h(значит жив), да не есть стандарт.
И что с этого , но есть документация , у меня куча своих заголовочных файлов , где заточено под копейку.
Как говориться на войне все средства хороши для победы, а для консоли conio.h за затылок.
Как-бы не в обиду напечатано, я с Вами не согласен гуглёшь даёт ссылки на conio.h(значит жив), да не есть стандарт.
И что с этого , но есть документация , у меня куча своих заголовочных файлов , где заточено под копейку.
Как говориться на войне все средства хороши для победы, а для консоли conio.h за затылок.
Пара вопросов из зала:
1. Какая ф-ция из исходника выше входит в conio.h?
2. А скомпилируется ли оно кроме как двумя с половиной компиляторами? Это же просто небольшой пример на C с использованием только стандартной библиотеки...
3. Является ли это изучением именно языка C и структур данных в нем, а не какой то тарабарщины и конкретных соплей конкретного компилятора?
PS: Это как носиться сломя голову и втыкать всюду где не попадя windows.h/unistd.h вне зависимости от того надо вам это или нет.
PPS: Для победы голова нужна в первую очередь.
специально скачал Dev-C++
если есть выбор Dev-C++ or MVC++ 6.0 мой выбор за MVC++ 6.0
Прекрасно, замечательная ф-ция.
В данном случае функционал её так же прелестен, ловить кнопочку Esc.
Ах да, без эха, буфера, смс и регистрации.
switch(c)
{
case '1': Create(); break;
case '2': Display(); break;
case '3': Append(); break;
case '4': Edit(); break;
case '0': Delete(); return 0;
default:
printf("nnIrrelevant command!n");
system("pause");
}
С рождеством и с настающим старым новым годом!!!
УРАааааааа!!!!
switch(c)
{
case '1': Create(); break;
case '2': Display(); break;
case '3': Append(); break;
case '4': Edit(); break;
case '0': Delete(); return 0;
default:
printf("nnIrrelevant command!n");
system("pause");
}
С рождеством и с настающим старым новым годом!!!
УРАааааааа!!!!
наму амида буцу
struct goods{char name[16]; float price; int quantity;
struct goods *next;
struct goods *prev;} Item;
struct goods *head, *tail;
//struct goods *next; //здесь вместо good надо goods
//заменить
void Create()
//if (Exist())
//на
if (head !=NULL)
//заменить в каждой процедуре
void Display()
void Append()
void Edit()
//if (!Exist())
//на
if (head ==NULL)
/*
bool Exist()
{
if (head !=NULL) return true;
else return false;
}
*/
Действительно, здесь снесла букву в goods случайно, в исходнике всё было. Ваши советы помогли, всё работает как было в Dev-C++ 5.7.1. Большое спасибо, товарищ UserNet2008! Всех с праздниками и удачи! The END :-)
Впрочем ожидать иного было бы ошибкой.
---
Улыбаемся и машем!
Впрочем ожидать иного было бы ошибкой.
---
Улыбаемся и машем!
Неугомонный Вы наш
Улыбаемся и машем! - Вы просто гений на codenet.ru извените Сер , что смог Вам перечить.
На Куя Вы дали этот ответ
Ясно напечатано The END :-) -КОНЕЦ:-)