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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2011, 08:22   #1
madlur
Новичок
Джуниор
 
Регистрация: 29.01.2011
Сообщений: 2
По умолчанию Работа со списками. проблемы в коде

Здравствуйте! Подскажите пожалуйста как решить задачу: Составить программу, которая формирует список L, включив в него по 1 разу элементы, которые входят в список L1, но не входят в список L2. Количество элементов в списках на свое усмотрение.
Я делал таким образом. Формируем список Л1, потом Л2 путем ввода символом с клавы. Далее запускаем цикл в цикле, который сравнивает элемент списка Л1 со всеми элементами списка Л2 и если не находит совпадений, то записывает этот элемент Л1 в список Л. Но код не работает…заменил операцию сравнения с != на == - программа работает, но не так, как в условии. Она ищет повторяющиеся элементы и если находит – записывает в список Л, а надо записывать туда неповторяющиеся….. В чем я ошибся не могу разобраться.
Вот код:
include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <list>
#include <iomanip>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
char myarray[20], myarray1[10], myarray2[10];
cin >> setw(10) >> myarray1;
cin >> setw(10) >> myarray2;
int k=0;
for (int i=0; i < sizeof(myarray1);i++)
{
for (int j=0; j<sizeof(myarray2);j++)
{
if (myarray2[j] == myarray1[i])

{
myarray[k] = myarray1[i];
k++;
}
}
}
cout << myarray;
getch();
return 0;
}

И еще вопрос. При вот этом коде если вводить в список Л1 3 элемента, а в список Л2 – 1 элемент, то в конце программы вылетает ошибка «A buffer overrun has occurred in Spiski.exe which has corrupted the program's internal state.» Она значит, что я где то перемудрил и переполнил массив? Или что?
Заранее спасибо за помощь!
madlur вне форума Ответить с цитированием
Старый 01.04.2011, 08:54   #2
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию

Ты бы код нормально оформил, там специально для тебя кнопочку придумали с решеткой.
в твоей программе наоборот добавляются элементы которые присутствуют в обоих списках, а по условию надо чтобы были разные. И еще зачем создавать массив найденных элементов больше чем массив L1? Он же по определению больше быть не может.
Код:
            int k = 0;
            bool isExist;//еслть ли совпадения элемента
            for (int i = 0; i < sizeof(myarray1); i++)
            {
                isExist = false;//Изначально считаем что жлемент не совпадающий
                for (int j = 0; j < sizeof(myarray2); j++)
                    if (myarray2[j] == myarray1[i])
                        isExist = true;//есть совпадение элемента
                if (!isExist)//Если совпадения небыло то добавляем элемент в массив результатов
                {
                    myarray[k] = myarray1[i];
                    k++;
                }
            }
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
KobolD вне форума Ответить с цитированием
Старый 02.04.2011, 19:37   #3
madlur
Новичок
Джуниор
 
Регистрация: 29.01.2011
Сообщений: 2
По умолчанию

про кнопочку не знал - спасибо ))))
Спасибо, я теперь разобрался что к чему!
madlur вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со списками Kumigy Помощь студентам 1 23.12.2010 16:24
c++. Работа со списками megavolt91 Помощь студентам 0 14.06.2009 21:31
Работа со списками Dimo444ka Помощь студентам 2 01.06.2008 16:34
Работа со списками. radist Паскаль, Turbo Pascal, PascalABC.NET 4 07.05.2007 00:05