Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Помогите с задачами на С++ (http://www.tehnari.ru/f41/t105610/)

Deztymer 04.12.2015 12:39

Помогите с задачами на С++
 
Добрый день, дорогие друзья-программисты! нужна ваша помощь) Нужно написать пару программ на С++
1. «Создание и обработка списков»
Даны: натуральное число n и целые числа а(1),…., a(n). Выяснить, имеются
ли среди чисел а(1),… a(n) совпадающие.
2. "Работа со строками"
Выбрать любой текст. Выделить в нем все слова заданной длины.
За помощь буду по гроб жизни обязан!:fellow:

MagentaTiger 04.12.2015 13:46

По первой задачке, я так понимаю про шаблоны вы ничего не слышали, поэтому пойдем классическим путем, сразу скажу - не компилировал, не проверял, поэтому могут быть как семантические так и синтаксические ошибки, добивайте код сами
Код:

#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;
}

по второй задаче не понятно откуда и как брать текст и куда выводить результат ? Из фала ? в Файл ? Вручную будут текст вбивать ? Другие варианты ?

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


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

Deztymer 04.12.2015 14:16

Спасибо за программу, вижу пару ошибок, подправлю) Я не на столько глуп, как Вы думаете, просто времени катастрофически не хватает) ВО втором текст берется из файла и выводится в файл

MagentaTiger 04.12.2015 15:05

Цитата:

Сообщение от Deztymer (Сообщение 1184508)
Я не на столько глуп, как Вы думаете

Я и не думаю что Вы глупы :)) Но думаю, что ленивы - это нормально для будущего "программиста" ... просто и меня сей порок то же не минул, поэтому надеюсь, что вторую задачу Вы решите самостоятельно ...


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

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.