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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2017, 07:04   #1
anasttb
Пользователь
 
Регистрация: 24.02.2017
Сообщений: 32
По умолчанию Необходимо на четные места во второй список поставить элементы из первого списка

Использую буферный массив,заношу туда элементы из первого массива и если индекс элемента второго списка четный ,то присваиваю элемент из массива. Но это не работает. В чем проблема?
Код:
#include <deque>
#include <iostream>
#include <ctime>
#include <windows.h>
#include <locale>
using namespace std;
struct point//описание структуры
{
    int key;//ключевое поле
    point* pred,*next;//адресные поля
};
 
void main()
{ 
    setlocale (0,"");
    SetConsoleCP(866);
    SetConsoleOutputCP(866);
    int n;
    cout<<"Укажите размер списка - ";
    cin>>n;
    int *buf=new int [n];
    point *p,*r,*beg,*p1,*p2,*m,*x;
    cout<<"Список 1:     ";
    p=new (point);//создать первый элемен
    beg=p;//запомнить адрес в переменную beg, в которой хранится начало списка
    p1=0;
    p2=beg;
    p->key=-2+rand()%10;//заполнить ключевое поле
    p->pred=0;
    p->next=0;//запомнить адресные поля
    for(int i=1;i<n;i++)//добавить элементы в конец списка
    {
        r=new(point);//новый элемент
        r->key=-2+rand()%10;//адресное поле
        p->next=r;//связать начало списка с r
        r->pred=p;//связать r с началом списка
        r->next=0;//обнулить последнее адресное поле
        p=r;//передвинуть p на последний элемент списка
    }
    m=beg;
    x=m;
    for(int i=0;i<n;i++)
    while(m!=0)//пока не конец списка
    {
        cout<<m->key<<"\t";
        buf[i]=m->key;
        m=m->next;//перейти на следующий
    }
    cout<<endl;
    cout<<"Список 2:     ";
    p=new (point);//создать первый элемен
    beg=p;//запомнить адрес в переменную beg, в которой хранится начало списка
    p1=0;
    p2=beg;
    p->key=-2+rand()%10;//заполнить ключевое поле
    p->pred=0;
    p->next=0;//запомнить адресные поля
    for(int i=0;i<2*n;i++)//добавить элементы в конец списка
    {
        r=new(point);//новый элемент
        if (i%2==0) for(int i=0;i<n;i++) r->key=buf[i]; 
        else
        r->key=-2+rand()%10;//адресное поле
        p->next=r;//связать начало списка с r
        r->pred=p;//связать r с началом списка
        r->next=0;//обнулить последнее адресное поле
        p=r;//передвинуть p на последний элемент списка
        
    }
    r=beg;
    while(r!=0)//пока не конец списка
    {
        cout<<r->key<<"\t";
        r=r->next;//перейти на следующий
    }
    cout<<endl;
    system("pause");
}

Последний раз редактировалось anasttb; 14.06.2017 в 08:04.
anasttb вне форума Ответить с цитированием
Старый 14.06.2017, 07:35   #2
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 734
По умолчанию

Цитата:
Сообщение от anasttb Посмотреть сообщение
если индекс второго списка четный
- это как понять?
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
Cuprum5 вне форума Ответить с цитированием
Старый 14.06.2017, 08:03   #3
anasttb
Пользователь
 
Регистрация: 24.02.2017
Сообщений: 32
По умолчанию

Цитата:
Сообщение от Cuprum5 Посмотреть сообщение
- это как понять?
Если индекс ЭЛЕМЕНТА второго списка четный
anasttb вне форума Ответить с цитированием
Старый 19.06.2017, 13:19   #4
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

выж понимаете, что это какой-то бред..

if (i%2==0) for(int i=0;i<n;i++) r->key=buf[i];

тут вы в 1 переменную по порядку засовываете ВЕСЬ список, в результате все такие "одни" переменные будут равны последнему элементу засунутого.

....в остальное не вникал, многовероятно там еще косяк на косяке, например - у вас там i вполне могут пересекатся и работать, не так как хотели.
alexzk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать программу, содержащую процедуру, которая меняет местами требуемые элементы непустого списка: 1) первый и второй элементы; scarecrow_1 Паскаль, Turbo Pascal, PascalABC.NET 1 26.04.2016 23:29
Дан одномерный массив из 30 элементов. Сформировать второй массив, в котором сначала идут все элементы первого массива, кратные 5, Olzhakesh C# (си шарп) 1 29.04.2014 23:49
удалить все четные элементы, кроме первого такого. александр6642 Помощь студентам 1 30.10.2012 11:10
Четные места varkich Помощь студентам 3 20.06.2012 19:38
LISP.разделить список на 2, в первый поместить четные элементы исходного списка, во второй - нечетные mashik2503 Помощь студентам 1 17.05.2011 19:14