Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 07.03.2012
Сообщений: 22
1

Функция: продублировать вхождение каждого элемента списка One и сформировать из этих значений список Double

24.09.2012, 15:52. Показов 1564. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте... При решение данной задачи <В составе программы описать функцию, которая дублирует вхождение каждого элемента списка One и формирует из этих значений список Double.> столкнулся с проблемой дублирования элементов списка (у меня дублируется только первый элемент)
Что-то не так в цикле for а вот что именно...
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
// bdz1.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
/*В составе программы описать функцию, которая дублирует вхождение 
каждого элемента списка One и формирует из этих значений список Double.*/
 
using namespace std;
 
 
 
int main()
{
    struct One
    {
        int info;
        struct One *next;
    };
 
struct Double
    {
        int info2;
        struct Double *next2;
    };
    
    typedef One *OnePtr;    
    OnePtr head = NULL;
    OnePtr p;       
    int N = 10;     
    int cnt = 1;        
 
    if (head == NULL)
    {   head = new One;
    head->info = cnt++; 
    head->next = NULL;
    } 
    for (int i = 2; i<=N; i++)
    {   p = new One;
    p->info = cnt++;    
    p->next = head;
    head = p;
    }
 
    p = head;
    for (int i = 1; i<=N; i++)
    {   cout << p->info << " ";
    p = p->next;
    }
    cout <<endl;
    
    typedef Double *DoublePtr;  
    DoublePtr beg = NULL;
    DoublePtr a;    
    if (beg == NULL)
    {   beg = new Double;
    beg->info2 = head->info;    
    beg->next2 = NULL;
    head->next = NULL;
    } 
    for(int i=2;i<=20;i++)
    {a=new Double;
    a->info2=p->info;//не верно в чем ошибка?
    a->next2=beg;
    p->next=head;
    beg=a;
    head=p;}
    
    a=beg;
    for (int i = 1; i<=20; i++)
    {   cout << a->info2 << " ";
    a =a->next2;
    }
    cout <<endl;
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.09.2012, 15:52
Ответы с готовыми решениями:

Дублирование вхождения каждого элемента списка One и формирование из этих значений списка Double (пояснить условие)
Здравствуйте. Вот собственно само задание: В составе программы описать функцию, которая дублирует...

Функция, которая возвращает список булевских значений четности каждого элемента заданного элемента целочисленного списка
Определите рекурсивные функции для решения задачи. НЕ РЕКОМЕНДУЕТСЯ использовать функции высших...

Удвоить вхождение каждого элемента списка. Элементы, входящие в список больше двух раз - удалить
удвоить вхождение каждого элемента списка. Элементы, какие входят в список больше двух раз...

Если максимальный элемент списка отрицательный, то продублировать каждое его вхождение в список
Создать однонаправленный стек целых чисел, распечатать. Если максимальный элемент этого списка...

4
47 / 46 / 18
Регистрация: 11.12.2011
Сообщений: 147
24.09.2012, 16:00 2
C++
1
{a=new Double;
Не указано кол-во элементов. Нужно где-то так:
C++
1
a=new Double[кол-во элементов];
0
0 / 0 / 0
Регистрация: 07.03.2012
Сообщений: 22
24.09.2012, 16:17  [ТС] 3
ошибку выдает
0
284 / 157 / 30
Регистрация: 22.09.2012
Сообщений: 283
24.09.2012, 16:45 4
un1acker,
a = new Double[размер] не нужно, потому что у вас связный список, размер нужен для списка в виде массива
Ошибка вероятно потому что p == NULL
0
Заблокирован
Автор FAQ
24.09.2012, 16:53 5
un1acker, посмотри код ниже
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
#include <ctime>
#include <cstdlib>
#include <iostream>
using namespace std;
 
struct Node
{
    int value;
    Node * next;
};
 
int main()
{
 
    Node * One    = new Node;//Óêàçàòåëü íà ñïèñîê 1
    Node * Double = new Node;//Óêàçàòåëü íà ñïèñîê 2
    Node * pCur   = One;//Óêàçàòåëü íà òåêóùèé ýëåìåíò ñïèñêà
    Node * pAdd   = NULL;//Óêàçàòåëü íà äîáàâëÿåìûé óçåë
    //Ðàíäîìíîå çàïîëíåíèå ñïèñêà One
    srand(time(0));
    //ß ñïåöèàëüíî íå çàïîìíèàþ ÷èñëî ýëåìåíòîâ â ñïèñêå
    //äëÿ ñïèñêîâ îíî íå íóæíî
    //Ãåíåðàöèþ îñòàíîâèì êîãäà ïîÿâèòñÿ ÷èñëî 7
    cout<<"\tList One : \n";
    while((rand()%8 != 7))
    {
        pCur->value = rand()%128;
        pCur->next  = new Node;
        cout<<pCur->value<<endl;
        cout<<"0x"<<pCur->next<<endl;
        pCur = pCur->next;
        pCur->next = NULL;
    }
    
    //Êîïèðîâàíèå ñïèñêà One â Double
    cout<<"\tList Double : \n";
    pAdd = One;//Ïîñòàâèëè óêàçàòåëü íà íà÷àëî ñïèñêà One
    pCur = Double;////Ïîñòàâèëè óêàçàòåëü íà íà÷àëî ñïèñêà Double
    while(pAdd != NULL)
    {
        pCur->value = pAdd->value;
        pCur->next  = new Node;
        cout<<pCur->value<<endl;
        cout<<"0x"<<pCur->next<<endl;
        pCur = pCur->next;
        pAdd = pAdd->next;
    }
    cout<<"Begin of list One    : "<<One<<endl;
    cout<<"Begin of list Double : "<<Double<<endl;
    return 0;
}
Проверка http://codepad.org/m6FRCBE2
Отработка
List One :
35
0x00481920
61
Продолжение
0x00481850
91
0x00481810
102
0x004819E0
89
0x004819A0
27
0x00481960
109
0x00481660
98
0x00481620
127
0x004815E0
114
0x004815A0
10
0x00481560
List Double :
35
0x00481520
61
0x004814E0
91
0x004814A0
102
0x00481460
89
0x00481420
27
0x004813E0
109
0x004813A0
98
0x00481360
127
0x00481320
114
0x004812E0
10
0x004812A0
-842150451
0x00481260

Begin of list One : 00481B40
Begin of list Double : 00481B00
Press any key to continue
Миниатюры
Функция: продублировать вхождение каждого элемента списка One и сформировать из этих значений список Double  
0
24.09.2012, 16:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.09.2012, 16:53
Помогаю со студенческими работами здесь

Сформировать статистический ряд и получить кол-во значений каждого элемента.
Уважаемые гуру своего дела, прошу помощи: Есть таблица: матрица А: 2 4 2 6 ...

Список: В поле данных каждого элемента списка записываются данные о товаре
В поле данных каждого элемента списка записываются данные о товаре: название, страна изготовитель,...

Список: функция вычленения (n-m)-го элемента из заданного списка
помогите с реализацией такой вот задачки пожалуйста:( Функция вычленения n-m -го элемента из...

Создать список из элементов другого списка, меняя местами цифры каждого элемента
создайте предикат форм, список из элементов другого списка,меняя местами цифры каждого...

Дан список, элементы которого - натуральные числа. Вычесть из каждого элемента списка 1
Дан список, элементы которого - натуральные числа. Вычесть из каждого элемента списка 1.

Как развернуть односвязный список путем подстановки каждого элемента в начало списка?
Как развернуть односвязный список в си, путем подстановки каждого элемента в начало списка?


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru