Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

> Правила форума

Раздел для общения на любые темы, для которых не нашлось места в остальных разделах. Если Вашу тему можно отнести по смыслу к другому разделу, лучше создайте её там, иначе Вас накажут.

В данном форуме немного понижены требования к Общим правилам форума, а именно:
1. Информативность темы
2. Отходить от первоначального смысла темы

!
В разделе запрещено создавать темы связанные с раскруткой игровых серверов

[Помощь] C++

Статус пользователя Vitaliy
сообщение 15.3.2014, 16:42
Сообщение #1


Стаж: 14 лет

Сообщений: 2431
Благодарностей: 526
Полезность: 609

Меценат Меценат

Динамические структуры, односвязный список
Не могу никак сделать удаление конкретного элемента из структуры
С указателями запутался

Скрытый текст
Код:

#include <windows.h>
#include <iostream>
#include <string>
#include <stdlib.h>
#include <iomanip>
using namespace std;

struct TRAIN
{
char Nazv[20];
int Numb;
char Date[10];
char Time[10];
void Input(TRAIN &train);
TRAIN *Next;
};

class List
{
TRAIN *Head;
int size;
public:
List():Head(NULL),size(0) {};
~List();
void Add(TRAIN &train);
void Show();
void One_show(int N);
void Del(int N);
int Count() {return size;};

};


void TRAIN::Input(TRAIN &train)
{
cout<<endl;
cout<<"Конечный пункт: "; cin.getline(Nazv,20);
cout<<"Номер поезда: ";cin>>Numb;
cin.ignore();
cout<<"Дата отправления: ";cin.getline(Date,10);
cout<<"Время отправления: ";cin.getline(Time,10);
}


List::~List()
{
while (Head!=NULL)
{
TRAIN *temp=Head->Next;
delete Head;
Head=temp;
}
}




void List::Add(TRAIN &train)
{ size++;
TRAIN *temp=new TRAIN;
temp->Next=Head;

strcpy_s(temp->Nazv,train.Nazv);
temp->Numb=train.Numb;
strcpy_s(temp->Date,train.Date);
strcpy_s(temp->Time,train.Time);
Head=temp; //Смена адреса начала списка
}



void List::Show()
{
TRAIN *temp=Head;
if ((Head!=NULL)&&(size>0)){
cout << "-----------------------------------------------------------------------------\n";
cout << "|| Конечный пункт || Номер поезда || Дата отпарвления || Время отправления ||\n";
cout << "-----------------------------------------------------------------------------\n";
while (temp!=NULL) //Пока по адресу на начало хоть что-то есть
{
cout<<"||"<<setw(16)<<temp->Nazv<<"||";
cout<<setw(14)<<temp->Numb<<"||";
cout<<setw(18)<<temp->Date<<"||";
cout<<setw(19)<<temp->Time<<"||"<<endl;
temp=temp->Next; //Указываем на следующий адрес из списка
}
cout << "-----------------------------------------------------------------------------\n\n";
}
else
{
cout << "Структура - пустая\n\n";
}
}

void List::One_show(int N)
{
TRAIN *temp=Head;
if ((Head!=NULL)&&(N<size))
{
cout << "-----------------------------------------------------------------------------\n";
cout << "|| Конечный пункт || Номер поезда || Дата отпарвления || Время отправления ||\n";
cout << "-----------------------------------------------------------------------------\n";
for (int i=0;i<N;i++) temp=temp->Next; //Меняем адрес N раз
cout<<"||"<<setw(16)<<temp->Nazv<<"||";
cout<<setw(14)<<temp->Numb<<"||";
cout<<setw(18)<<temp->Date<<"||";
cout<<setw(19)<<temp->Time<<"||"<<endl;
cout << "-----------------------------------------------------------------------------\n\n";
}
else{cout << "\nПустая строка (Неверная)\n\n";}
}

void List::Del(int N)
{
TRAIN *temp=Head;
if ((Head!=NULL)&&(N<size))
{

Здесь надо как то удалить элемент по номеру


}
else{cout << "\nМы будем воздух удалять?!?\n\n";}
}




int main ()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
TRAIN train;
int N, key;
List lst;
met:

cout<< "Меню:\n" << "(1) - Добавить поезд в расписание\n" << "(2) - Вывести все поезда\n"<< "(3) - Вывести один поезд\n"<< "(4) - Удалить один поезд\n\n"<< "(0) - Завершыть работу\n\n" << "Ваш выбор: " ;
cin >> key;
switch (key)
{
case 0: break;
case 1:
cout<<"\nВведите к-во поездов: ";cin>>N;
cin.ignore();
for (int i=0;i<N;i++)
{
train.Input(train);
lst.Add(train);
}
goto met;
break;
case 2:
cout<<endl;
lst.Show();
goto met;
break;
case 3:
cout<<"\nВведите номер елемента: ";cin>>N;
N-=1;
cin.ignore();
lst.One_show(N);
goto met;
break;
case 4:
cout<<"\nВведите номер елемента для удаления: ";cin>>N;
N-=1;
cin.ignore();
lst.Del(N);
goto met;
break;
default:
cout << "Ошибка ввода\n\n";
goto met;
break;
}

}

код под спойлером или здесь http://pastebin.com/ZW953gv1
Подскажите, как? ubeysya.gif

Отредактировал: Pro(X-Gamer)Pro, - 15.3.2014, 16:51
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Vitaliy
сообщение 15.3.2014, 20:22
Сообщение #2


Стаж: 14 лет

Сообщений: 2431
Благодарностей: 526
Полезность: 609

Меценат Меценат

Готов немножко $ подкинуть
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Vitaliy
сообщение 16.3.2014, 9:52
Сообщение #3


Стаж: 14 лет

Сообщений: 2431
Благодарностей: 526
Полезность: 609

Меценат Меценат

cray.gif ну кто нибудь )
всего 100 просмотров ..
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Nebo
сообщение 16.3.2014, 10:21
Сообщение #4


Стаж: 13 лет
Город: Казань

Сообщений: 3181
Благодарностей: 1015
Полезность: 701

Pro(X-Gamer)Pro, тебе на другой форум надо.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Vitaliy
сообщение 16.3.2014, 10:26
Сообщение #5


Стаж: 14 лет

Сообщений: 2431
Благодарностей: 526
Полезность: 609

Меценат Меценат

я думаю у нас есть любители сишки pardon.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Nebo
сообщение 16.3.2014, 10:35
Сообщение #6


Стаж: 13 лет
Город: Казань

Сообщений: 3181
Благодарностей: 1015
Полезность: 701

Pro(X-Gamer)Pro, Та нее, тут только бусты-шмусты :)
Не пробывал тут - http://www.cyberforum.ru/
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: