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

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

Войти
Регистрация
Восстановить пароль
 
Novichock123
1 / 1 / 0
Регистрация: 25.04.2015
Сообщений: 41
#1

Односвязный список превратить в массив структур - C++

03.07.2015, 18:55. Просмотров 329. Ответов 6
Метки нет (Все метки)

Есть структура:
C++
1
2
3
4
5
6
struct StructWords
{
char Word[32];
char Name[32];
StructWords *Next, *Prev;
};
Создал односвязный список. Проверял нахождение в ней элементов - всё в порядке, всё на месте. Теперь надо перенести элементы из списка в массив структур.
C++
1
StructWords massiv[150];
Но проблема в том, что эта часть кода не функционирует
C++
1
2
3
4
5
6
7
8
9
StructWords *temp = Head;
        int i = 0;
        cout << "Теперь в массив структур!" << endl;
        while (temp)
        {
            strcpy(massiv[i].Word, temp->Word);
            temp = temp->Next;
            cout << ++i << "-ый элемент в структуре: " << massiv[i].Word << endl;
        }
Судя по всему, не работает strcpy, ибо прогоняет цикл ровно столько раз, сколько элементов в списке.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2015, 18:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Односвязный список превратить в массив структур (C++):

Заменить массив структур на динамический список - C++
Всем привет) Есть задание: описать структуру с именем TRAIN, содержащую следующие поля: • название пункта назначения; • номер...

Сформировать список из 10 книг, используя динамическую структуру данных односвязный список - C++
друзья спасайте Сформировать список из 10 книг, используя динамическую структуру данных односвязный список С++

Массив структур: вывести список товаров, стоимость которых превышает 100 000 рублей - C++
Создать массив структур. Выполнить задание и вывести на экран полученный результат. Список товаров, имеющихся на ...

Создать двусвязный список групп факультета, где каждая группа представляет собой односвязный список студентов - C++
Задание: создайте двусвязный список групп факультета. Каждая группа представляет собой односвязный список студентов. Помогите пожалуйста,...

Задали односвязный линейный список с целыми числами. Создать новый список, который содержит элементы заданного списка в обратном порядке - C++
Задали односвязный линейный список с целыми числами. Создать новый список, который содержит элементы заданного списка в обратном порядке.

Из текстового файла считать слова и превратить их в линейный список - C++
помогите написать программу а то я даже не знаю что делать.Нужно из текстового файла считать слова и превратить их в линейный список (или...

6
Рыжий Лис
Просто Лис
351 / 276 / 81
Регистрация: 17.05.2012
Сообщений: 1,124
Записей в блоге: 4
03.07.2015, 19:10 #2
C++
1
2
3
4
5
6
7
8
9
10
11
StructWords massiv[150];
StructWords *temp = Head;
        int i = 0;
        cout << "Теперь в массив структур!" << endl;
        while (temp)
        {
            strcpy(massiv[i].Word, temp->Word);
            temp = temp->Next;
            cout << i << "-ый элемент в структуре: " << massiv[i].Word << endl;
            i++;//<--
        }
Добавлено через 1 минуту
+
C++
1
strcpy(massiv[i].Name, temp->Name);
0
Novichock123
1 / 1 / 0
Регистрация: 25.04.2015
Сообщений: 41
03.07.2015, 19:33  [ТС] #3
Одно и тоже.
По поводу i. Он у меня служит для показа индекса (понятное дело, что индекс массива в С++ начинается с нуля), только начинается он с единицы.
Соглашусь, забыл про Name.
А всё остальное осталось как прежде. strcpy не работает ни в какую.

Добавлено через 8 минут
strcpy_s тоже не работает.
Подправил код ради отладки:
C++
1
2
3
4
5
6
7
8
9
10
11
12
StructWords *temp = Head;
        int i = 0;
        cout << "Теперь в массиве структур!" << endl;
        while (temp)
        {
            strcpy(massiv[i].Word,temp->Word);
            strcpy(massiv[i].Name, temp->Name);
            i++;
            cout << i << "-ый элемент в списке структур: " << temp->Word << endl;
            temp = temp->Next;
            cout << i << "-ый элемент в массиве структур: " << massiv[i].Word << endl;
        }
temp->Word показывает значения, у massiv[i].Word - пусто.
0
Рыжий Лис
Просто Лис
351 / 276 / 81
Регистрация: 17.05.2012
Сообщений: 1,124
Записей в блоге: 4
03.07.2015, 19:38 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
StructWords *temp = Head;
        int i = 0;
        cout << "Теперь в массиве структур!" << endl;
        while (temp)
        {
            strcpy(massiv[i].Word,temp->Word);
            strcpy(massiv[i].Name, temp->Name);
            cout << (i+1) << "-ый элемент в списке структур: " << temp->Word << endl;
            cout << (i+1) << "-ый элемент в массиве структур: " << massiv[i].Word << endl;
            temp = temp->Next;
            i++;
        }
1
Novichock123
1 / 1 / 0
Регистрация: 25.04.2015
Сообщений: 41
03.07.2015, 19:50  [ТС] #5
Я не понял каким образом, но подставив ваш код вместо моего - программа strcpy наконец-то признала. Спасибо.

Суть в другом, код почти такой же, ничего не поменялось как таковое, некоторые строчки местами поменяли и вдруг! сработало. Я, если честно, не понимаю, почему тогда программа не работала, а сейчас работает) Я хочу понять в чём дело, но не втыкаю
0
Рыжий Лис
Просто Лис
351 / 276 / 81
Регистрация: 17.05.2012
Сообщений: 1,124
Записей в блоге: 4
03.07.2015, 19:58 #6
Ладно, возьмём пример i=0.
C++
1
2
3
4
5
6
7
            strcpy(massiv[0].Word,temp->Word);//копируем в 0-й элемент массива
            strcpy(massiv[0].Name, temp->Name);//тоже копируем
            //i++;
            cout << 1 << "-ый элемент в списке структур: " << temp->Word << endl;
            temp = temp->Next;
            cout << 1 << "-ый элемент в массиве структур: " << massiv[1].Word << endl;//ой
            //идёт обращение к 1 элементу, а не 0!
0
Novichock123
1 / 1 / 0
Регистрация: 25.04.2015
Сообщений: 41
03.07.2015, 20:02  [ТС] #7
Эвона как. Дурак я, что не заметил такой глупой оплошности.
0
03.07.2015, 20:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2015, 20:02
Привет! Вот еще темы с ответами:

Как массив разнозначных чисел превратить в массив цифр? (С++) - C++
(Я делаю на Builder 6, С++ на консоли) У меня в курсаче есть такое задание: Для введённого целого числа N определить N-ую ЦИФРУ...

Программа выводит неверный ответ (дан массив структур, содержащий сведения об успеваемости студентов - вывести список неуспевающих студентов) - C++
Задача: Дан массив структур, содержащий сведения об успеваемости по информатике группы из 25 студентов. Структура содержит следующие...

Блочная сортировка структур (Отсортировать массив структур по фамилии) - C++
Подскажите алгоритм блочной сортировки структур на языке С++. Мне нужно отсортировать массив структур по фамилии.

Односвязный список - C++
как в односвязном списке сделать проверку на одинаковые элементы? и если они есть, удалить один из них.


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

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

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