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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
miros_0571
24 / 1 / 2
Регистрация: 06.03.2015
Сообщений: 94
#1

Написать функцию, которая из списка образует два новых списка. Один содержит нечетные числа, а второй - парные - C++

26.01.2016, 20:25. Просмотров 203. Ответов 3
Метки нет (Все метки)

Помогите закончить одно из заданий по работе со списком:
Написать функцию, которая использует первоначальный список L и образует два новых списка L1 и L2. 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
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#include <iostream>
#include <conio.h>
using namespace std;
 
struct chislo
{
    int data;
     struct chislo *next;
    
};
//dobavlenie
void add(chislo *&top,int pos, int x)
{
    int j=1;
    int i; 
    chislo *pnew, *p=top;
    pnew=new chislo; 
    pnew->data=x;
    if (pos<=1||top==NULL) 
    {
        pnew->next=top; 
        top=pnew;
    }
    else
    {
        for(i=1;i<pos-1;i++) 
            if (p->next!=NULL) 
            {    
                p=p->next;
                j++;
            }
        if (pos<=j+1)
        {
            pnew->next=p->next; 
            p->next=pnew;
        }
    }
}
// vuvod spiska
void print(chislo *top)
{
    chislo *p=top;
    while (p!=NULL) 
    {
        cout<<p->data<<' '; 
        p=p->next;
    }
    cout<<endl;
}
//ydalenie
void clrscr(chislo *&top)
{
    while(top!=NULL)
    { 
        if(top==NULL) 
        { 
            cout<<"spisok pust!"<<endl; 
        }
        else 
        {
            chislo *p=top;
            top=top->next; 
            delete p; 
       }
    }
}
//ydalenie s n porydka
void delet(chislo *&top, int pos2)
    {
        chislo *a=top,*b;
        int i=0;
        while(a!=NULL)
        {
            a=a->next;
            i++;
        }
        if(pos2>i||pos2<1) 
        {
            cout<<"takogo nomera porydka net!"<<endl;
        }
        
        else
        {
            if(pos2==1)
            {
                a=top->next;
                top=a;
            }
            if (pos2>1)
            {
                i=1;
                a=top;
                while (i!=pos2-1) 
                {
                    i++; a=a->next;
                }
                b=a->next;
                a->next=b->next;
                delete b;
            }
        }
}
//srednee arifmet
  float AVERAGE (chislo *top)
{
     chislo *p=top;
     int sum=0, count=0;
     while(p)
   {
             sum=sum+p->data;
             count++;
             p=p->next;
      
     }
     return (float)sum/count;
     }
     
int main()
{
     int pos,pos2;
     int x,r,k;
     chislo *top=NULL;
    
        cout<<"vvedite kolichestvo elementov: ";
        cin>>k;
        if (k!=0)
            for (int i=1; i<=k; i++) 
            {
                r=rand()%100;
                add(top,i,r); 
            }
        print(top); 
        
        cout<<"vvedite nomer pozicii vstavki: ";
        cin>>pos;
        cout<<"vvedite chislo: ";
        cin>>x;
        add(top,pos,x); 
        print(top);
    
        cout<<"vvedite nomer pozicii ydalenie: ";
        cin>>pos2;
        delet(top,pos2);
        print(top);
     
        cout << "\nsrednee arifmet = " << AVERAGE(top)<< endl;
        
    system("pause");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2016, 20:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Написать функцию, которая из списка образует два новых списка. Один содержит нечетные числа, а второй - парные (C++):

Описать функцию, которая объединяет два упорядоченных по возрастанию списка в один - C++
2)Описать функцию, которая объединяет два упорядоченных по возрастанию списка в один. не знаю как делать помогите пожалуйста!!!!

Написать функцию, использующую список, содержащий нечётные числа и создающую 2 новых списка с парными числами - C++
Написать функцию , которая использует первоначальный список L и создает два новых списка L1 и L2. L1 содержит нечетные числа , а L2 -...

создать функцию, которая создает 2 новых списка - C++
Написать функцию, которая использует исходный список L и создает два новых списка L1 и L2. L1 содержит нечетные числа, а L2 – четные. !...

Дан массив F[0:n-1].Сформировать два новых массива: первый содержит элементы, не превышающие заданного числа, а второй - все остальные - C++
Помогите пожалуйста.Нужен полный текст программы, заранее благодарен

Объединить два упорядоченных связанных списка в один через функцию merge - C++
Совсем недавно начал изучение списков в С++(как и сам С++), срочно требуется ваша помощь по решению следующей задачи: Объединить два...

Написать программу, которая формирует два списка - C++
Ребят, помогите пожалуйста, туплю я с этим Си++, 2 проги сдала осталась последняя. Из входного потока в произвольном порядке...

3
gru74ik
Модератор
Эксперт CЭксперт С++
4195 / 1843 / 198
Регистрация: 20.02.2013
Сообщений: 4,989
Записей в блоге: 22
26.01.2016, 22:06 #2
miros_0571, Вы с одной группы что ли?
0
miros_0571
24 / 1 / 2
Регистрация: 06.03.2015
Сообщений: 94
26.01.2016, 22:12  [ТС] #3
gru74ik, по нику не знаю....по заданию наверное да
0
miros_0571
24 / 1 / 2
Регистрация: 06.03.2015
Сообщений: 94
31.01.2016, 11:24  [ТС] #4
программа рабочая....все выводит кроме двух новых списков разделения на парные и не парные числа.....где я намудрил....подскажите

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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
#include <iostream>
#include <conio.h>
using namespace std;
 
struct chislo
{
    int data;
    chislo *next;
    
};
chislo *first=NULL;
chislo *list1=NULL;
chislo *list2=NULL;
//dobavlenie
void add(chislo *&top,int pos, int x)
{
    int j=1;
    int i; 
    chislo *pnew, *p=top;
    pnew=new chislo; 
    pnew->data=x;
    if (pos<=1||top==NULL) 
    {
        pnew->next=top; 
        top=pnew;
    }
    else
    {
        for(i=1;i<pos-1;i++) 
            if (p->next!=NULL) 
            {    
                p=p->next;
                j++;
            }
        if (pos<=j+1)
        {
            pnew->next=p->next; 
            p->next=pnew;
        }
    }
}
// vuvod spiska
void print(chislo *top)
{
    chislo *p=top;
    while (p!=NULL) 
    {
        cout<<p->data<<' '; 
        p=p->next;
    }
    cout<<endl;
}
//ydalenie
void clrscr(chislo *&top)
{
    while(top!=NULL)
    { 
        if(top==NULL) 
        { 
            cout<<"spisok pust!"<<endl; 
        }
        else 
        {
            chislo *p=top;
            top=top->next; 
            delete p; 
       }
    }
}
//ydalenie s n porydka
void delet(chislo *&top, int pos2)
    {
        chislo *a=top,*b;
        int i=0;
        while(a!=NULL)
        {
            a=a->next;
            i++;
        }
        if(pos2>i||pos2<1) 
        {
            cout<<"takogo nomera porydka net!"<<endl;
        }
        
        else
        {
            if(pos2==1)
            {
                a=top->next;
                top=a;
            }
            if (pos2>1)
            {
                i=1;
                a=top;
                while (i!=pos2-1) 
                {
                    i++; a=a->next;
                }
                b=a->next;
                a->next=b->next;
                delete b;
            }
        }
}
//srednee arifmet
  float AVERAGE (chislo *top)
{
     chislo *p=top;
     int sum=0, count=0;
     while(p)
   {
             sum=sum+p->data;
             count++;
             p=p->next;
      
     }
     return (float)sum/count;
     }
 
 
 void add(int pos,chislo**f )
    {
        chislo *p= new chislo;
          p->data=pos;
          p->next = *f;
          *f=p;
     }   
    //parnii i neparnii spisok
 
    void addDiv(chislo **b1,chislo **b2)
    {
         chislo *p= first;
         while(p!=NULL)
         {
               if (p->data%2==0)
                     add(p->data,b1);
                else add(p->data,b2);
          p =  p->next;
         }
     } 
     
     
int main()
{
     int pos,pos2;
     int x,r,k;
     chislo *top=NULL;
    
        cout<<"vvedite kolichestvo elementov: ";
        cin>>k;
        if (k!=0)
            for (int i=1; i<=k; i++) 
            {
                r=rand()%100;
                add(top,i,r); 
            }
        print(top); 
        
        cout<<"vvedite nomer pozicii vstavki: ";
        cin>>pos;
        cout<<"vvedite chislo: ";
        cin>>x;
        add(top,pos,x); 
        print(top);
    
        cout<<"vvedite nomer pozicii ydalenie: ";
        cin>>pos2;
        delet(top,pos2);
        print(top);
     
        cout << "\nsrednee arifmet = " << AVERAGE(top)<< endl;
        
        cout<<"parnii i neparnii spisok: ";
        addDiv(&list1,&list2);
        print(first);
        print(list1);
        cout<<endl;
        print(list2);
    system("pause");
}
0
31.01.2016, 11:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.01.2016, 11:24
Привет! Вот еще темы с ответами:

Описать функцию, которая определяет, входят ли все элементы первого списка в состав второго списка. - C++
Описать функцию, которая определяет, входят ли все элементы первого списка в состав второго списка. на с++

Написать функцию, меняющую местами два элемента однонаправленного списка - C++
Написать функцию, меняющую местами два элемента однонаправленного списка без обращения к полю данных по их номерам от начала списка. Если...

Дан массив B[0:n-1].Сформировать два новых массива:первый содержит отрицательные элементы , а второй - чётные - C++
Помогите пожалуйста

Написать функцию, которая вычисляет среднее арифметическое элементов непустого списка - C++
Написать функцию, которая вычисляет среднее арифметическое элементов непустого списка.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru