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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2008, 16:31   #1
Blizzz
 
Аватар для Blizzz
 
Регистрация: 09.11.2008
Сообщений: 6
По умолчанию с++ списки

помогите пожалуйста. как добавить в эту программу сообщение об ошибке, то есть чтобы когда мы вводим элемент после которого нужно вставить, а этого элемента нет в списке,то нужно вывести сообщение об ошибке .

Код:
#include <iostream>
using namespace std;
struct Node
{
     int d;
     Node *next;
};Node *first;

void add(int d);
void AddAfter(int FromNow, int NewChar);
int main() {
     int x,n,i;
     cout<<"vvedite kolichestvo elementov ";
	 cin>>n;
     cout<<"vvedite elementi"<<endl;     
	 for(i=0;i<n;i++) 
	 {
     cin>>x;
     add(x);
	 }
     int z,k;
     cout<<"will enter element and any another  ";
     cin>>z;
     cin>>k;
     AddAfter (z,k);
     Node *elem=first;
     while (elem)
     { cout << elem->d<<endl;
     elem=elem->next;
     }
     return 0;

}


void add(int x) {
     Node *Elem=new Node;
     Elem->d=x; 
	 Elem->next=first; 
     first = Elem;
     
}
void AddAfter(int FromNow, int New) 
{ 
   
    Node* nue=first;
	
    // Ищем куда вставлять.
    while (nue->d!=FromNow) 
	nue=nue->next; 
    


    Node* new_elem=new Node; // найдем новое место чтоб вставлять элемент

    new_elem->d=New;

    new_elem->next = nue->next;
    nue->next = new_elem;

}
Модератор: юзаем тег CODE

Последний раз редактировалось MaTBeu; 04.12.2008 в 16:34.
Blizzz вне форума Ответить с цитированием
Старый 04.12.2008, 16:37   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,619
По умолчанию

Вот так попробуй
Код:
void AddAfter(int FromNow, int New) 
{ 
   
    Node* nue=first;
	
    // Ищем куда вставлять.
    while (nue->d!=FromNow) 
	nue=nue->next; 
    if(!nue)
    {
         cout<<"Element not found\n";      //вот твое сообщение об ошибке
    }
    else
    {   
          Node* new_elem=new Node; // найдем новое место чтоб вставлять элемент
          new_elem->d=New;
          new_elem->next = nue->next;
          nue->next = new_elem;
    }
}
И лучше сделай свою функцию с возвращаемым значением. Чтобы там наверху знали, добавился элемент или нет.
MaTBeu вне форума Ответить с цитированием
Старый 04.12.2008, 16:50   #3
Blizzz
 
Аватар для Blizzz
 
Регистрация: 09.11.2008
Сообщений: 6
По умолчанию

нет...не работает...все равно вылазит ошибка просто в виндусе. а в программе сообщение не появляется...
Blizzz вне форума Ответить с цитированием
Старый 04.12.2008, 21:19   #4
_alexey_
Пользователь
 
Регистрация: 04.12.2008
Сообщений: 13
По умолчанию

сделай так
Код:
struct Node
{
     Node() : d(0), next(0) { } 
     int d;
     Node *next;
};Node *first;
а функцию AddAfter как сказал MaTBeu.
_alexey_ вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
На списки... Neznau Паскаль, Turbo Pascal, PascalABC.NET 1 02.07.2008 19:49
Списки Вилен Общие вопросы C/C++ 3 22.05.2008 00:40
Списки AVer Паскаль, Turbo Pascal, PascalABC.NET 6 06.12.2006 23:05