Форум программистов, компьютерный форум 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
30.09.2013, 19:11  [ТС]     Формирование двух новых списков из исходного
Да пожалуйста...

Основной модуль:

Кликните здесь для просмотра всего текста
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
128
129
130
131
#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(); // функция подсчёта количества элементов, возвращает size
 
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)  // пока указатель на голову не покажет на 0
     {    
        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-1;i++)
                pointer=pointer->Next; // движемся по списку до нужного номера
            temp->x=x; // записываем х в информационное поле нового элемента
            temp->Next=pointer->Next;
            pointer->Next=temp;
        }
        else
            std::cout<<"Incorrect number: your list consists of less then "<<N<<" elements";
    }
    else
    {
        temp->x=x;
        temp->Next=NULL;
        Head = temp;
    }
}
 
void List::Show()
{
    element *temp=Head;
    
    std::cout<<endl;
    while(temp!=NULL)
    {
        std::cout<<temp->x<<" ";
        temp=temp->Next;
    }
    std::cout<<endl;
}
 
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;
    }
}


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