Показать сообщение отдельно
Старый 04.12.2015, 13:46   #2 (permalink)
MagentaTiger
Специалист
 
Аватар для MagentaTiger
 
Регистрация: 27.04.2015
Адрес: Москва
Сообщений: 1,423
Записей в дневнике: 4
Сказал(а) спасибо: 52
Поблагодарили 53 раз(а) в 16 сообщениях
Репутация: 18120
По умолчанию

По первой задачке, я так понимаю про шаблоны вы ничего не слышали, поэтому пойдем классическим путем, сразу скажу - не компилировал, не проверял, поэтому могут быть как семантические так и синтаксические ошибки, добивайте код сами
Код:
#include <iostream>
using namespace std;
 
/* элемент списка */
struct ListNode
{
    int num;
    ListNode *next;
};
 
class List
{
    
    private:    
         ListNode *first;            //голова списка
    public:
    
        List()
        {
            first = NULL;           //список изначально пустой
        }
   
        ListNode * getFirst() {
         return first;
       }
 
        void addNode(int num)                    //функция добавления в конец списка
        {
            ListNode *ptr = new ListNode;       //выделяем память под элемент списка
            ListNode  *cur;   
            ptr->num = num;                   //кладем данные о человеке
            ptr->next = NULL;                 //следующих данных нет(NULL - признак конца списка)
 
            if(first == NULL)               //если список пуст
            {
                first = ptr;                //введенные данные будут первой записью
            }
            else { 
                                             // пробежимся по списку и присвоим в последнем существующем элементе
                                             // указателю на следующий элемент указатель на вновь созданый 
            cur = first; 
            while(cur->next != NULL) {
                cur = cur->next; 
            }
            cur->next = ptr; 
            }
        }
 
 
        void showNodes()                 //вывод списка
        {
            ListNode *cur = first;       //голова списка
 
            if(cur == NULL)    {         //если список пуст выводим сообщение
                wcout << "Список пуст!";
            }
            else
            {
                wcout << "Список: ";
                while(cur != NULL)          //идем по списку
                {
                    cout << cur->num << "   "; //выводим элемент
                    cur = cur->next;      //переходим к следующему
                }
            }
 
            cout << endl;
        }
        
        //поиск элемента в списке, возвращает указатель если нашли совпадение или NULL если не нашли
        ListNode *  find(ListNode *node,int num)        
        {
            ListNode *cur = node;       //начинаем поиск с элемента указаного ноде
            while(cur != NULL)          //идем по списку
                {
                    if(cur->num==num) {
                       return cur; 
                    } 
                    cur = cur->next;      //переходим к следующему
                }
 
            return NULL;
	}


};
 
int main()
{
    int n=0,num=0 ;   
    List op;    //объявляем объект класса
    ListNode *cur=NULL;
    ListNode *found=NULL;
    int countFound=0;
    cout << "Введите количество элементов списка" << endl;
    cin >> n;   
    for(int i=0;i<n;i++) {
    cout << "Введите элементов списка номер" << i+1 << endl;      
    cin >> num;
    op.addNode(num); 
    }

    op.showNodes();              //вывода списка на консоль

    cur = op.getFirst();       //голова списка
    while(cur != NULL)            //идем по списку
    {
       found = op.find(cur->next,cur->num);
       if( found != NULL)  {
 
              countFound++; 
        }
       cur = cur->next;      //переходим к следующему
    }
    if (countFound > 0 ) {
    cout<< "Найдено " << countFound << " совпадений в элементах списка";
    }
    else  {
    cout<< "Совпадений в элементах списка не найдено";
    }
    cout << endl;
    return 0;
}
по второй задаче не понятно откуда и как брать текст и куда выводить результат ? Из фала ? в Файл ? Вручную будут текст вбивать ? Другие варианты ?

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


Боюсь, что просто сдав вышеприведенный фрагмент преподавателю, вы не сможете ответить ни на один дополнительный вопрос от него по сути решения задачи ...
MagentaTiger вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070