Консультация № 189517
27.05.2016, 17:15
0.00 руб.
27.05.2016, 17:25
0 2 1
Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
Задание полностю:
Создать однозвязный список из целых чисел. Выполнить основныу операции по изменению списка.
<<Покупатель>>: фамилияимя; отчество; пол; национальность; рост; вес; дата рождения(год, месяц, число); номер телефона; домашный адрес(почтовый индекс, страна, область, район, город, улийа, дом, квартира); номер кредитной карточки; банковського счета.
Я сделал только односвязный список и у меня ошибки

Ошиби:
Код:
1>c:\users\shyba\documents\visual studio 2012\projects\consoleapplication5\consoleapplication5\consoleapplication5.cpp(182): error C2065: a: необъявленный идентификатор
1>c:\users\shyba\documents\visual studio 2012\projects\consoleapplication5\consoleapplication5\consoleapplication5.cpp(183): error C2065: a: необъявленный идентификатор
1>c:\users\shyba\documents\visual studio 2012\projects\consoleapplication5\consoleapplication5\consoleapplication5.cpp(184): error C2065: a: необъявленный идентификатор
1>c:\users\shyba\documents\visual studio 2012\projects\consoleapplication5\consoleapplication5\consoleapplication5.cpp(185): error C2065: a: необъявленный идентификатор
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Помогите, а то нас ничему не учат а хотят очень много

Приложение:
#include "stdafx.h"
#include <iostream>
#include <string>
#include <conio.h>
#include "windows.h"

using namespace std;

struct A
{
string key;
friend istream& operator >>(istream& is, A &ex)// Перевизначення оператора вводу
{
is >> ex.key;
return is;
}
};
struct List
{
A a;
List* next;
};

void Print(List *b)//Ф-ція виводить на екран список
{
List *print = b;

while(print)
{
cout /*<< " -> "*/<< print->a.key << "\n";
print = print->next;
}
//cout << "NULL\n";
}

void Add_End(List **b,const A &a)//Ф-ція добавляє в кінець списку
{
List *p = *b;
List *t = new List;
t->a = a;
t->next = NULL;

while(1)
{
if(!p->next)
{
p->next = t;
break;
}
p = p->next;
}

}

void Add_begin(List **begin,const A &a)//Ф-ція добавляє на початок списку
{
List *t = new List;
t->a = a;
t->next = *begin;
*begin = t;
}

void Insert(List **begin, const A &a)//Ф-ція добавляє в середину списку списку
{
List *ins = new List;
ins->a = a;

if(*begin == NULL)
{
ins->next = NULL;
*begin = ins;
return;
}

List *t = *begin;

if(t->a.key > ins->a.key)
{
ins->next = t;
*begin = ins;
return;
}

List *t1 = t->next;

while(t1)
{
if(t->a.key < ins->a.key && ins->a.key <= t1->a.key)
{
t->next = ins;
ins->next = t1;
return;
}

t = t1;
t1 = t1->next;

}

t->next = ins;
ins->next = NULL;


}

void Delete(List **begin, const A&a)////Ф-ція вилучає зі списку
{
if(*begin==NULL)
{
return;
}

List *t = *begin;
if(t->a.key == a.key)
{
*begin = t->next;
delete t;
return;
}

List *t1 = t->next;

while(t1)
{
if(t1->a.key == a.key)
{
t->next = t1->next;
delete t1;
return;
}
t = t1;
t1 = t1->next;
}

}

void Free(List **begin)
{
if(*begin == 0) return;
List *p = *begin;
List *t;

while(p)
{
t = p;
p = p->next;
delete t;
}
*begin = NULL;
}
void ShowMenu()
{
cout << "1. Прізвище\n"
<< "2. Ввести в кiнець списку\n"
<< "3. Ввести в середину списку\n"
<< "4. Видалити зi списку\n"
<< "5. Показати списокn"
<< "6. Видалити список\n"
<< "7. Вихiд\n";
}
void ShowItem()
{
cout << "Введiть дані\n";
}
int main()
{
SetConsoleCP(1251);//Введення кирилиці
SetConsoleOutputCP(1251);//Виведення кирилиці
int n;
List* begin = NULL;


do
{
ShowMenu();
cin >> n;
switch(n)
{
case 1: ShowItem(),cin >> a,Add_begin(&begin, a);break;
case 2: ShowItem(),cin >> a,Add_End(&begin, a);break;
case 3: ShowItem(),cin >> a,Insert(&begin, a);break;
case 4: ShowItem(),cin >> a,Delete(&begin, a);break;
case 5: Print(begin),_sleep(4000);break;
case 6: Free(&begin);break;
default: cout << "Error!";
}

system("cls");
}while(n != 7);
_getch();
return 0;
}

Обсуждение

давно
Старший Модератор
31795
6196
27.05.2016, 17:22
общий
Код:
ShowItem(),cin >> a,Add_begin(&begin, a);break;

A это что у Вас?
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
7438
7205
31.05.2016, 12:54
общий
это ответ
Здравствуйте, r.shiba!
Исправленная программа...
Дерзайте дальше! Удачи!
[code h=200]
#include <iostream>
#include <string>
#include <conio.h>
#include "windows.h"

using namespace std;

struct A
{
string key;
friend istream& operator >>(istream& is, A &ex)// Перевизначення оператора вводу
{
is >> ex.key;
return is;
}
};
struct List
{
A a;
List* next;
};

void Print(List *b)//Ф-ція виводить на екран список
{
List *print = b;

while(print)
{
cout /*<< " -> "*/<< print->a.key << "\n";
print = print->next;
}
//cout << "NULL\n";
}

void Add_End(List **b,const A &a)//Ф-ція добавляє в кінець списку
{
List *p = *b;
List *t = new List;
t->a = a;
t->next = NULL;

while(1)
{
if(!p->next)
{
p->next = t;
break;
}
p = p->next;
}

}

void Add_begin(List **begin,const A &a)//Ф-ція добавляє на початок списку
{
List *t = new List;
t->a = a;
t->next = *begin;
*begin = t;
}

void Insert(List **begin, const A &a)//Ф-ція добавляє в середину списку
{
List *ins = new List;
ins->a = a;

if(*begin == NULL)
{
ins->next = NULL;
*begin = ins;
return;
}

List *t = *begin;

if(t->a.key > ins->a.key)
{
ins->next = t;
*begin = ins;
return;
}

List *t1 = t->next;

while(t1)
{
if(t->a.key < ins->a.key && ins->a.key <= t1->a.key)
{
t->next = ins;
ins->next = t1;
return;
}

t = t1;
t1 = t1->next;

}

t->next = ins;
ins->next = NULL;


}

void Delete(List **begin, const A&a)////Ф-ція вилучає зі списку
{
if(*begin==NULL)
{
return;
}

List *t = *begin;
if(t->a.key == a.key)
{
*begin = t->next;
delete t;
return;
}

List *t1 = t->next;

while(t1)
{
if(t1->a.key == a.key)
{
t->next = t1->next;
delete t1;
return;
}
t = t1;
t1 = t1->next;
}

}

void Free(List **begin)
{
if(*begin == 0) return;
List *p = *begin;
List *t;

while(p)
{
t = p;
p = p->next;
delete t;
}
*begin = NULL;
}
void ShowMenu()
{
cout << "1. Ввести на початок списку\n"
<< "2. Ввести в кiнець списку\n"
<< "3. Ввести в середину списку\n"
<< "4. Видалити зi списку\n"
<< "5. Показати список\n"
<< "6. Видалити список\n"
<< "7. Вихiд\n";
}
void ShowItem()
{
cout << "Введiть дані\n";
}
int main()
{
SetConsoleCP(1251);//Введення кирилиці
SetConsoleOutputCP(1251);//Виведення кирилиці
int n;
List* begin = NULL;
A a;

do
{
ShowMenu();
cin >> n;
switch(n)
{
case 1:
ShowItem();
cin >> a;
Add_begin(&begin, a);
break;
case 2:
ShowItem();
cin >> a;
Add_End(&begin, a);
break;
case 3:
ShowItem();
cin >> a;
Insert(&begin, a);
break;
case 4:
ShowItem();
cin >> a;
Delete(&begin, a);
break;
case 5:
Print(begin);
Sleep(4000);
break;
case 6:
Free(&begin);
break;
default:
cout << "Error!";
}

system("cls");
}while(n != 7);
_getch();
return 0;
}
[/code]
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа