Форум программистов, компьютерный форум CyberForum.ru

Удаление всех отрицательных в односвязном списке - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Открытие документа с использованием созданого блокнота http://www.cyberforum.ru/cpp-beginners/thread608931.html
Есть созданная программа блокнот, работает в общем нормально, но одна маленькая проблемка, открывает документ лиш через файл->открыть..., а если беру двоймым щелчком на файл, программа одкрывается но создает новый документ, тоесть не считывает информацыю с нужного выбранного. Помогите плиз, какого кода нехватает? Добавлено через 2 часа 34 минуты Ну йомайо, извините я с телефона щас в инете ...
C++ Способы конкатенации переменных строкового типа и Char #include <iostream> #include <windows.h> using namespace std; int main() { char *_new = "\\formats.."; char newname; http://www.cyberforum.ru/cpp-beginners/thread608930.html
C++ Обработка ошибок "Ссылка на неразрешенный внешний символ"
взял код из сети по работе с WinPCap. откомпилить его не могу. ошибки валятся. появляются только в тот момент когда со всеми error'ами разберусь. стандартная ситуация. происходит не первый раз, но сейчас что-то не получается решить проблему.. как решаются такие ошибки? 1>ManifestResourceCompile: 1> Для всех выходных данных обновления не требуется. 1>basic_dump.obj : error LNK2019: ссылка...
Функция с комплексными числами C++
Доброго времени суток. Есть следующая функция ln (1 + z) = z – z^2 / 2 + z^3 / 3 – … + (–1)^n-1 (z^n / n) + … ,где Z - комплексное. Помогите , пожалуйста,загнать её в прогу(комплексное число задано структурой). Заранее спасибо!
C++ Нарисовать фигурки http://www.cyberforum.ru/cpp-beginners/thread608832.html
Пользователь с клавиатуры вводит размеры фигуры. Нарисовать фигурки - прямоугольник(залитый, пустой, залитый на половину, залитый под основной диагональю, залитый под дополнительной диагональю), равнобедренный треугольник (залитый и пустой), песочные часы. Пользователь с клавиатуры вводит размеры фигуры. Залитый прямоугольник и пустой прямоугольник я нарисовал как другие фигурки нарисовать...
C++ Вычислить периметр пересекающихся прямоугольников Помогите написать,описание и реализация алгоритма вычисления периметра пересекающихся прямоугольников.На С++. Заранее благодарю! Добавлено через 21 час 21 минуту Добрые люди откликнитесь.... подробнее

Показать сообщение отдельно
Alex_Dep
Сообщений: n/a
19.06.2012, 01:47     Удаление всех отрицательных в односвязном списке
не могу понять как мне сделать так что бы если введены все отрицательные числа он удалял их и выводил что список пусто. В моей программе он удаляет все отрицательные, но если все элементы отрицательные выдает ошибку. подскажите чего не хватает моей программе, заранее при много благодарен.
Код
#include <iostream>
#include <windows.h>
#include <locale>
 using namespace std;

 class Node
{ 
	public:
	int numer;
	Node* next;
};
 void main()
{
	setlocale(LC_ALL,"rus");
	Node* head = NULL;
	Node* body = NULL;
	short action = -1;
	while (1)
	{
		cout<<"1. Добавить элемент"<<endl;
		cout<<"2. Просмотр списка"<<endl;
		cout<<"3. Поиск отрицательных элементов"<<endl;
		cout<<"4. Удаление первого отрицательного элемента"<<endl;
		cout<<"0. Выход"<<endl;
		cout<<"Ваш Выбор: ";
		cin>>action;

		if (action == 0)
		{
			system("CLS");
			break;
		}	
		if (action == 1)
		{
			Node* ptr = new Node;
			int m;
			cout<<"Введите Число: ";
			cin>>m;
			ptr->numer = m;
			ptr->next = NULL;
			if (head == 0)
			{	
				head = ptr;
				body = ptr;
				system("CLS");
				continue;
			}	
			body->next = ptr;
			body = ptr;
			system("CLS");
			continue;
		}

		if (action == 2)
		{
			Node* ptr = NULL;
			if (head == NULL)
			{	
				cout<<"СПИСОК ПУСТ"<<endl;
				system("PAUSE");
				system("CLS");
				continue;
			}	
			cout<<" СПИСОК "<<endl;
			ptr = head;
			while (1)
			{
				cout<<ptr->numer<<" ";
				if (ptr->next == NULL)
					break;
				ptr = ptr->next;
			}
			cout<<"\n\n";
			system("PAUSE");
			system("CLS");
			continue;
		}
		if (action == 3)
		{
			body=head;
			while (body!=NULL)
			{ 
				if (body->numer<0)
					cout<<body->numer<<" ";
				body = body->next;
			}	
			cout<<endl;
			system("PAUSE");
			system("CLS");
		}
	if (action == 4)
{
	system("CLS");
	Node* del = NULL;
	Node* last = head;

	body=head;
	while (body!=NULL)
	{
		if (body->numer<0)
		{
			
			del=body;
			body=body->next;
			last->next=body;
			if (del==head) 
				head=body;
			delete del;
		}
		else
			if(body && (body->numer<0 && body->next==NULL))
		{
			head==NULL;
		}
			else
		{
			last=body;
			body=body->next;
		}
	}
}

	cout<<endl;
	}
	}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru