Забор Что можно написать на заборе? Да все, что угодно!
Ответить
  Опции темы Опции просмотра
офф:С++ | by Feo
Непрочитано 19.06.2009, 17:02   # 1
Котэ
 
Аватар для Feo
 
Регистрация: 04.04.2009
Адрес: Таганрог
Возраст: 34
Сообщений: 823
Записей в дневнике: 3
Байк: Bionic b5r
Feo вне форума
большое спс,ща
Цитата
Непрочитано 19.06.2009, 17:02   # 2
Котэ
 
Аватар для Feo
 
Регистрация: 04.04.2009
Адрес: Таганрог
Возраст: 34
Сообщений: 823
Записей в дневнике: 3
Байк: Bionic b5r
Feo вне форума
Код:
#include <iostream>
#include <windows.h>
#include <cmath> 
using namespace std;

// определение структуры, с помощью которой будет реализовываться 
// список строк
struct StringList
{
	char* pStr; // строка (указатель на неё)
	StringList* pNext; // указатель на следующий элемент списка
};


void main()
{
	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);
	
	StringList* pList = NULL;	// указатель на начало списка
	StringList* pCurrentElement = NULL; // указатель на текущий элемент списка

	char c = 'n';
	do
	{
		cout << "Введите строку в список " << endl;
		char* str = new char[100];
		// Ввод строки длиной максимум 99 символов
		_flushall();
		cin.getline(str, 99);
		StringList* pNewElement = new StringList;
		
		// создание нового элемента
		pNewElement->pNext = NULL;
		pNewElement->pStr = str;

		// внесение нового элемента в список
		// Если список ещё не создан... 
		if(pList==NULL)
		{
			// инициализировать указатели на начало списка и на текущий элемент списка
			// указателем на только что созданный элемент
			pList = pNewElement;
			pCurrentElement = pNewElement;
		}
		// в противном случае... 
		else
		{
			// установить вновь созданный элемент следующим
			pCurrentElement->pNext = pNewElement;
			// переместить указатель на текущий элемент на вновь созданный
			pCurrentElement = pNewElement;
		}

		cout << "Вы хотите продолжить ввод строк в список (y,n)? ";
		cin >> c;
	}
	while(c=='y');

	c = 'n';
	do
	{
		char c;
		cout << "Введите символ ";
		cin >> c;

		// инициализировать указатель plst адресом первого элемента
		StringList* plst = pList;
		while(plst!=NULL)
		{
			// Если последний символ строки равен введенному...
			if(*(plst->pStr+strlen(plst->pStr)-1)==c)
			{
				// Вывести эту строку на экран
				cout << plst->pStr << endl;
			}
			// переместить указатель на следующий элемент
			plst = plst->pNext;
		};

		// Запрос продолжения процесса
		cout << "Вы хотите продолжить ввод символов (y,n)? ";
		cin >> c;
	}
	while(c=='y');

	// Освобождение памяти, выделенной под массив
	while(pList!=NULL)
	{
		// сохранить указатель на следующий элемент
		StringList* pnext = pList->pNext;
		// освободить память, выделенную под текущий
		delete pList;
		// установить указатель pList на следующий элемент
		pList = pnext;
	};
}
ура!! есть тег [code]! (Master)
Последний раз редактировалось Master; 19.06.2009 в 20:41.
Цитата
офф:С++ | by Feo
Ответить


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 02:22.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot