Форум программистов, компьютерный форум CyberForum.ru

Формирование двух новых списков из исходного - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ mpi http://www.cyberforum.ru/cpp-beginners/thread964579.html
Пытаюсь разобраться с mpi. нужно найти сумму элементов матрицы.Рассылка по процессам организована через mpi_Bcast. при выполнении на нескольких процессах программа зависает. не пойму, что не так. #include "stdio.h" #include <conio.h> #include "mpi.h" #include <iostream> using namespace std; int ProcNum, ProcRank;
C++ написать программу для прверки простого числа. язык программировние С Дано целое число, не превосходящее 2^32=4294967296. Написать программу для проверки того, является ли данное число простым. Определение простоты заданного числа оформить в виде отдельной функции. http://www.cyberforum.ru/cpp-beginners/thread964559.html
C++ как выйти из программы
при выполнении программы - выполняется выбранная операция, после чего при нажатии любой кнопки цикл повторяется... вопрос: Что нужно добавить и где, чтобы при выполнении программы в конце при нажатии клавиши прога закрывалась, а не повторяла все действия начиная с "do-while" заново???... #include <stdio.h> #include <conio.h> void main(){ clrscr(); int n,m,s,p,key; do{ ...
C++ Парсинг html
Здравствуйте, уважаемые форумчане! Я мало знаю на тему парсинга и вот мне нужно вытащить информацию с сайта http://www.igumo.ru/. Слева после меню есть 2 ссылки "Войти" и "Зарегистрироваться", так вот, когда проходишь авторизацию вместо ссылки "Войти" пишется твое имя и фамилия, так вот мне нужно брать имя и фамилию и вставлять в текстовое поле в форме. Как это можно реализовать? Очень надеюсь на...
C++ Кодировка знака ± http://www.cyberforum.ru/cpp-beginners/thread964553.html
В общем, надо вывести в консоль такой знак ±. Какую кодировку для этого нужно использовать?
C++ Зеркальное отражение строки Всем привет. Такая задача: Написать программу реализующую зеркальное отражение строки Вот что я накалякал :)Подскажите что здесь не так? #include "stdafx.h" #include <iostream> #include <string> using namespace std; int _tmain(int argc, _TCHAR* argv) { подробнее

Показать сообщение отдельно
Locust
1 / 1 / 0
Регистрация: 09.11.2012
Сообщений: 82
29.09.2013, 00:14     Формирование двух новых списков из исходного
Доброго времени суток.

Задание такое:
Структура: список однонаправленный.
Реализовать функции:
- сформировать список;
- добавить элемент в произвольное место списка перед элементом с заданным номером (номер ввести с клавиатуры);
- удалить заданный элемент.
Сформировать списки L1 и L2 из списка L по следующему правилу: в L1 поместить четные положительные элементы списка L, в L2 - нечетные отрицательные элементы списка L.
Подсчитать количество компонентов в списках L1 и L2.

Код моего варианта программы:

Кликните здесь для просмотра всего текста
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
28
29
30
31
32
33
#include <iostream>
#include <conio.h>
#include "Unit1.cpp"
 
using namespace std;
 
void main()
{
    List(L);
    List(L1);
    List(L2);
    int currentElem,i=0;
    unsigned short int flag=1;
 
    std::cout<<"Please enter the first element of your list\n";
    while(flag==1)
    {
        std::cin>>currentElem;
        L.Add(currentElem,i);
        i++;
        std::cout<<"Do you want to continue (1) or to do the task (2)?  ";
        std::cin>>flag;
    }
    L.Task(L1,L2);
 
    L.Show();
    std::cout<<"\nThe list with positive even numbers consists of "<<L1.Count()<<" elements:\n";
    L1.Show();
    std::cout<<"\nThe list with negative odd numbers consists of "<<L2.Count()<<" elements:\n";
    L2.Show();
 
    getch();
}


Модуль с описанием класса и функциями:

Кликните здесь для просмотра всего текста
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#include <iostream.h>
 
struct element
{
    int x;
    element *Next;
};
 
class List
{
public:
    List();
    ~List();
 
    void Add(const int x,const int N); 
    void Show();
    void Delete(const int N);
    void Task(List L1,List L2);
    int Count(); 
 
private:
    element *Head;
    int size;
};
 
bool positiveEven(int elem)
{
    return(elem>0)&&(elem%2==0);
}
 
bool negativeOdd(int elem)
{
    return(elem<0)&&(elem%2!=0);
}
 
int List::Count()
{
    return size;
}
 
List::List()
{
    Head=NULL;
    size=0;
};
 
List::~List()
{
    while(Head!=NULL)  
     {    
        element *temp=Head->Next;
        delete Head; 
        Head=temp;   
     }
}
 
void List::Add(const int x,const int N)
{
    size++;
    element *temp=new element; 
    element *pointer=Head; 
 
    if(Head!=NULL) 
    {
        if(N<=size) 
        {
            for(int i=0;i<N;i++)
                pointer=pointer->Next; 
            temp->x=x; 
            temp->Next=pointer->Next; 
        }
        else
            std::cout<<"Incorrect number: your list consists of less then "<<N<<" elements";
    }
    else
    {
        temp->x=x;
        temp->Next=NULL;
    }
}
 
void List::Show()
{
    element *temp=Head;
 
    while(temp!=NULL)
    {
        cout<<temp->x<<" ";
        temp=temp->Next;
    }
}
 
void List::Delete(const int N)
{
    element *temp=Head;
    if((Head!=NULL)&&(N<=size))
    {
        if(N<size)
        {
            for(int i=0;i<N-1;i++)
                temp=temp->Next;
            temp->Next=temp->Next->Next;
        }
        if(N==size)
        {
            for(int i=0;i<N-1;i++)
                temp=temp->Next;
            temp->Next=NULL;
        }
        delete temp;
    }
    size--;
}
 
void List::Task(List L1,List L2)
{
    element *temp=Head;
 
    while(temp!=NULL)
    {
        if(positiveEven(temp->x))
            L1.Add(temp->x,0);
        if(negativeOdd(temp->x))
            L2.Add(temp->x,0);
        temp=temp->Next;
    }
}


Не хочет выводить списки и считать их размер. Судя по всему, и формировать их не хочет. Наверное, накосячила с добавлением элемента. Подскажите, пожалуйста, где ошибка. Вообще, за любую конструктивную критику буду очень благодарна.
Миниатюры
Формирование двух новых списков из исходного  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru