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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2013, 14:24   #1
_Аександр_
Новичок
Джуниор
 
Регистрация: 27.10.2013
Сообщений: 2
Восклицание списки

как с использованием списка реализовать следущее:
взявши произвольный текст, вывести в консоль все слова, которые начинаются с буквы, отличной от буквы, с которой начинается первое слово текста. Перед печатью удалить из слов все буквы 'a' и 'o'.
_Аександр_ вне форума Ответить с цитированием
Старый 27.10.2013, 15:51   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

_Аександр_ наработки имеются?
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 27.10.2013, 16:17   #3
_Аександр_
Новичок
Джуниор
 
Регистрация: 27.10.2013
Сообщений: 2
По умолчанию

моя наработка, что нужно добавить ???
Код:
struct Element
{
   // Данные
   char data;
   // Адрес следующего элемента списка
   Element * Next;
};
 
// Односвязный список
class List
{
   // Адрес головного элемента списка
   Element * Head;
   // Адрес головного элемента списка
   Element * Tail;
   // Количество элементов списка
   int Count;
 
public:
   // Конструктор
   List();
   // Деструктор
   ~List();
 
   // Добавление элемента в список
   // (Новый элемент становится последним)
   void Add(char data);
 
   // Удаление элемента списка
   // (Удаляется головной элемент)
   void Del();
   // Удаление всего списка
   void DelAll();
 
   // Распечатка содержимого списка
   // (Распечатка начинается с головного элемента)
   void Print();
 
   // Получение количества элементов, находящихся в списке
   int GetCount();
};
 
List::List()
{
   // Изначально список пуст
   Head = Tail = NULL;   
   Count = 0;
}
 
List::~List()
{
   // Вызов функции удаления
   DelAll();
}
 
int List::GetCount()
{
   // Возвращаем количество элементов
   return Count;
}
 
void List::Add(char data)
{
   // создание нового элемента
   Element * temp = new Element;
 
   // заполнение данными
   temp->data = data;
   // следующий элемент отсутствует
   temp->Next = NULL;
   // новый элемент становится последним элементом списка
   // если он не первый добавленный
   if(Head!=NULL){
 Tail->Next=temp;
 Tail = temp;
   }
   // новый элемент становится единственным
   // если он первый добавленный
   else{
   Head=Tail=temp;
   }
}
 
void List::Del()
{
   // запоминаем адрес головного элемента
   Element * temp = Head;
   // перебрасываем голову на следующий элемент
   Head = Head->Next;
   // удаляем бывший головной элемент
   delete temp;
}
 
void List::DelAll()
{
   // Пока еще есть элементы
   while(Head != 0)
      // Удаляем элементы по одному
      Del();
}
 
void List::Print()
{
   // запоминаем адрес головного элемента
   Element * temp = Head;
   // Пока еще есть элементы
   while(temp != 0)
   {
      // Выводим данные
      cout << temp->data << " ";
      // Переходим на следующий элемент
      temp = temp->Next;
   }
 
   cout << "\n\n";
}
 
// Тестовый пример
void main()
{
   // Создаем объект класса List
   List lst;
 
   // Тестовая строка
   char s[] = "соединение с веб-сервером длится всего несколько секунд (или долей секунд) - это промежуток времени между щелчком по ссылке (или другим способом запроса) и началом отображения страницы. Большинство браузеров во время соединения отображают некий индикатор, например, MS Internet Explorer отображает анимацию в правом верхнем углу.\n";
   // Выводим строку
   cout << s << "\n\n";
   // Определяем длину строки
   int len = strlen(s);
   // Загоняем строку в список
   for(int i = 0; i < len; i++)
      lst.Add(s[i]);
   // Распечатываем содержимое списка
   lst.Print();
//---------функции из задания
//Распечатываем содержимое списка
   lst.Print();
}

Последний раз редактировалось Stilet; 27.10.2013 в 17:23.
_Аександр_ вне форума Ответить с цитированием
Старый 27.10.2013, 17:26   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
вывести в консоль все слова, которые начинаются с буквы, отличной от буквы, с которой начинается первое слово текста.
Код:
void List::Print()
{
   // запоминаем адрес головного элемента
   Element * temp = Head;
   // Пока еще есть элементы
   while(temp != 0)
   {
      if(temp->data[0]==Head->data[0]){
      // Выводим данные
      for(int i=0;i<strlen(temp->data);i++)
       if(temp->data[i]!='o' && temp->data!='a')
         cout << temp->data[i];
      cout<<'\n';
     }
      // Переходим на следующий элемент
      temp = temp->Next;
   }
 
   cout << "\n\n";
}
Цитата:
удалить из слов все буквы 'a' и 'o'.
Вообще-то у тебя нет слов, насколько я понимаю
Цитата:
// Данные
char data;
Не подходит для хранения слова.
Я тебе пример написал с учетом что в элементе всетки строка описана а не символ.
I'm learning to live...

Последний раз редактировалось Stilet; 27.10.2013 в 17:33.
Stilet вне форума Ответить с цитированием
Старый 27.10.2013, 21:42   #5
TranceSmile
Смайлик :)
Форумчанин
 
Аватар для TranceSmile
 
Регистрация: 12.12.2010
Сообщений: 445
По умолчанию

Тут нужно строку разделить на слова. И каждое слово загнать в список. И потом выводить с условием. Код писать не буду. Логику, вроде, объяснил.
Самый перспективный framework Yii (c)
TranceSmile вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Списки kapriz5 Паскаль, Turbo Pascal, PascalABC.NET 3 19.02.2012 09:41
списки Alexander1205 Общие вопросы C/C++ 3 01.07.2011 00:55
Списки С++ Vikylik Помощь студентам 0 08.04.2009 16:31