С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Проблема ф-ии сравнения элементов списка - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Коши http://www.cyberforum.ru/cpp-beginners/thread378641.html
пожалуйста помогите составить программу на visual studio 2008. Численное решение задачи Коши для обыкновенных дифференциальных уравнений. очень прошу помогите!!!
C++ Помогите решить задачу сломал голову не знаю как решить. 1)Определить максимальный элемент в каждой строке матрицы и заменить все элементы 2 столбца на этот максимальный элемент. 2)Определить минимальный элемент в матрице и заменить каждый 0 элемент на... http://www.cyberforum.ru/cpp-beginners/thread378633.html
C++ Опять ошибка в коде =(
/* * code.cpp * * Created on: 06.11.2011 * Author: Sensei */ #include <iostream> using std::cout; using std::endl;
C++ Обмен данными межды формой и диалогом
как это можно сделать с помощью коннектов? Я хочу чтобы при нажатии на кнопку ОК у диалога данные передавались в форму. что нужно писать в SIGNAL и SLOT у диалога и у формы? Добавлено...
C++ Книга после Бьярне Страуструп http://www.cyberforum.ru/cpp-beginners/thread378613.html
а что можно почитать после Программирование: принципы и практика использования C++ , исправленное издание, Бьярне Страуструп
C++ Работа с памятью Добрый день всем. Я только начал изучение C#(раньше работал c: C++ маленько -т.е. общее представление о нем имею) и у меня вопрос, можно ли как-то открыть память запущенного процесса и внести... подробнее

Показать сообщение отдельно
LingWiloce
0 / 0 / 0
Регистрация: 07.10.2010
Сообщений: 19
06.11.2011, 18:44  [ТС]
Цитата Сообщение от OstapBender Посмотреть сообщение
1) сделать немое множество и проверяемый элемент заносить в него и temp->next->data проверять есть ли в множестве - если есть - то к следующей итерации.
2) сделать 3-е поле isChecked=0. проверять его на 0 перед k++. когда strcmp вернула '0' делать isChecked=1;
Сложно представить реализацию обоих способов. Мне это видится так:
1) Если у нас, допустим, список:
x x y y x
То: берем х, следующим проверяемым элементом тоже будет x, значит переходим на второй элемент и k не увеличивается (а ведь должен). Теперь х проверяем с y, они разные, значит проходим по списку и ищем х. Он у нас один (последний), значит k++. Теперь берем y, следующий элемент тоже y, значит переходим на следующий y и счетчик не увеличиваем. Теперь переходим к след. y, после него x, значит проходим по списку, но т.к. после второго y таких же элементов нет, то счетчик не увелчивается.
Итого: k=1. А должно быть 3.
2) Второй способ представить не могу.

попытался сделать так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
node *temp, *temp1, *temp2; 
temp = head;
while (temp != NULL)
{   
    temp1=temp->next;
    while (temp1 != NULL) 
    {   if(strcmp(temp->data, temp1->data)==0) k++;
        temp1=temp1->next;
    }
    temp2=temp;
    temp=temp->next;
    if(strcmp(temp->data, temp2->data)==0) break;
}
ни к чему хорошему не привело

Добавлено через 33 минуты
Вроде более-менее что-то стал осознавать, однако после вызова данной функции прога вылетает с ошибкой:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
void mission() //функция посчета одинаковых элементов в списке
{
int i=0,k=0;
//char end=0, spec[250];
node *temp, *temp1, *temp2; 
temp = head;
temp2 = NULL;
while (temp != NULL)
{   
    if(temp2 != NULL)  
    while (temp != NULL)
    {
        if(strcmp(temp->data, temp2->data)==0)
        i=1;
    }
    if(i==1) temp=temp->next;
    temp1=temp->next;
    while (temp1 != NULL) 
    {   
        if(strcmp(temp->data, temp1->data)==0) k++;
        temp1=temp1->next;
    }
    temp2=temp;
    temp=temp->next;
}
cout << "Quantity of special nodes: "<< k;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.