|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
30.03.2017, 08:43 | #11 |
Участник клуба
Регистрация: 14.05.2016
Сообщений: 1,793
|
Вот немного переделал:
0.jpg теперь, основываясь на этом коде, можно сделать "а) начальное формирование списка;". Помнишь я говорил: Код:
Сделай это. Покажи скриншот. |
30.03.2017, 10:02 | #12 |
Участник клуба
Регистрация: 14.05.2016
Сообщений: 1,793
|
Не дописал в программе комментарий (это важно):
temp = head; //head настолько важен, что я создаю отдельный указатель "temp" чтобы "не тревожить" (не изменять) "head" (лучше изменять "temp" - дальше в программе)!!! Этот принцип будешь всегда придерживаться // при написании программы: "head" - это указатель на начало списка чтобы не произошло в программе (добавления/ удаления узлов списка)... Аналогично делаю здесь: "accounting *vuvod = head;".... //И если "head=NULL", то это значит, что список удалён полностью. 0.jpg Последний раз редактировалось ura_111; 30.03.2017 в 10:10. |
30.03.2017, 18:35 | #13 | |
Пользователь
Регистрация: 30.11.2016
Сообщений: 23
|
Цитата:
Спасибо вам огромное! Вопрос. Как мне с односвязными списками реализовать что то подобное как в этом примере массива структур. #include<iostream> #include<windows.h> // для system("cls"); using namespace std; struct Size { int breast; int waist; int hips; }; struct WonderfulWoman { char name[64]; int age; int height; int weight; Size volume; bool engKnowledge; }; void showData(const WonderfulWoman Obj[], int amount); int main() { setlocale(LC_ALL, "rus"); const int amountOfGirl = 7; WonderfulWoman Woman[amountOfGirl] = {}; for (int i = 0; i < amountOfGirl; i++) { cout << "Имя: "; cin.getline(Woman[i].name, 32); cout << "Возраст: "; cin >> Woman[i].age; cout << "Рост: "; cin >> Woman[i].height; cout << "Вес: "; cin >> Woman[i].weight; cout << "Английский (1 - да, 0 - нет): "; cin >> Woman[i].engKnowledge; cout << "Объемы (грудь, талия, бедра): "; cin >> Woman[i].volume.breast; cin >> Woman[i].volume.waist; cin >> Woman[i].volume.hips; cin.get(); // считывает из потока Enter который пользователь нажимает после ввода возраста cout << endl; } showData(Woman, amountOfGirl); return 0; } void showData(const WonderfulWoman Obj[], int amount) { system("cls"); // сработает только для windows cout << "№\t" << "Имя\t" << "Возраст\t" << "Рост\t" << "Вес\t" << "Объёмы\t\t" << "Английский" << endl; cout << "================================== ================================" << endl; for (int i = 0; i < amount; i++) { cout << i + 1 << '\t' << Obj[i].name << '\t' << Obj[i].age << '\t' << Obj[i].height << '\t' << Obj[i].weight << '\t' << Obj[i].volume.breast << '/' << Obj[i].volume.waist << '/' << Obj[i].volume.hips << '\t' << Obj[i].engKnowledge << endl; } } Как мне реализовать что то типа такого же меню и что бы у меня все так же реализовалось в таблицу. |
|
30.03.2017, 18:37 | #14 |
Пользователь
Регистрация: 30.11.2016
Сообщений: 23
|
Попробовал сделать что то подобное, получилось следующим образом
#include <iostream> #include<windows.h> // для system("cls"); using namespace std; struct accounting { //учёт участников олимпиады char *surname; accounting *next; //ссылка на следующий элемент }; int main(int argc,const char * argv[]) { accounting *head; accounting *temp, *h; head = new accounting; //указатель на голову списка head ->surname = "Andrey Petrov"; temp = head; //head настолько важен, что я создаю отдельный указатель "temp" чтобы "не тревожить" (не изменять) "head" (лучше изменять "temp" - дальше в программе) h = new accounting; h ->surname = "Vlad Ivanov"; h->next = NULL; temp->next = h; temp = h;//переход по списку h = new accounting; h ->surname = "Jenya Sidorov"; temp->next = h; temp = h;//переход по списку h = new accounting; h ->surname = "Dima Volkov"; h->next = NULL; temp->next = h; temp = h;//переход по списку //Выводим на экран. accounting *vuvod = head; while (vuvod !=NULL) { void showData(const accounting Obj[], int amount); system("cls"); // сработает только для windows cout << "name\t" << "Vozrast\t" << "Rost\t" << endl; cout << "================================== ================================" << endl; cout << vuvod ->surname << " "; vuvod = vuvod -> next; //переход к следующиму узлу. } cin.get(); // что бы консоль не закрывалаьс. return 0; } |
30.03.2017, 20:50 | #15 |
Пользователь
Регистрация: 30.11.2016
Сообщений: 23
|
Попробовал сделать все по заданию, получилось следующее.
#include <cstdlib> #include <iostream> #include "conio.h" using namespace std; int main() { setlocale(LC_ALL, "rus"); // Выбранный вариант меню int variant; cout << "Выберите вариант\n" << endl; cout << "1. Начальное формирование списка\n" << "2. Добавление нового элемента списка\n" << "3. Вывод всего списка на экран в виде таблицы\n" << "4. Упорядочивание списка по полю «ФИО участника\n" << "5. Удаление элементов по значению первичного ключа\n" << "6. формирование отчета: итоговое количество участ¬ников по виду спорта, указанному пользователем\n" << "7. выйти\n" << endl; cout << " >> "; cin >> variant; return variant; _getch; struct accounting { //учёт участников олимпиады char *surname; accounting *next; //ссылка на следующий элемент }; { accounting *head; accounting *temp, *h; head = new accounting; //указатель на голову списка head->surname = "Andrey Petrov"; temp = head; //head настолько важен, что я создаю отдельный указатель "temp" чтобы "не тревожить" (не изменять) "head" (лучше изменять "temp" - дальше в программе) h = new accounting; h->surname = "Vlad Ivanov"; h->next = NULL; temp->next = h; temp = h;//переход по списку h = new accounting; h->surname = "Jenya Sidorov"; temp->next = h; temp = h;//переход по списку h = new accounting; h->surname = "Dima Volkov"; h->next = NULL; temp->next = h; temp = h;//переход по списку //Выводим на экран. accounting *vuvod = head; while (vuvod != NULL) cout << vuvod->surname << " "; vuvod = vuvod->next; //переход к следующиму узлу. } cin.get(); // что бы консоль не закрывалаьс. return 0; } Не знаю только как теперь связать меню со всем остальным, как сделать сортировку по ФИО и вывод в виде таблицы. Последний раз редактировалось pocheto; 30.03.2017 в 20:57. |
30.03.2017, 21:20 | #16 |
Участник клуба
Регистрация: 14.05.2016
Сообщений: 1,793
|
Меню должно быть бесконечное (с возможностью выхода). Вот тебе шаблон меню:
Код:
Поиграйся с ним (пока там данные-заглушки). ___________________________________ ______ Ты можешь сказать: а где сформировать первоначальный список? Я предлагаю его Я предлагаю его сделать только один раз ДО МЕНЮ! (эта операция делается только один раз, а если она будет как пункт меню, то пользователь может выбрать его повторно...) Но если считаешь, что я не прав- ты всегда можешь поменять у себя. ___________________________________ ________________________ Бог с ним с меню. На данном этапе тебя должно волновать вопрос: как работают списки? (а не меню). Я тебя спрашивал: в какой среде программируешь? |
30.03.2017, 21:29 | #17 |
Участник клуба
Регистрация: 14.05.2016
Сообщений: 1,793
|
Только сейчас заметил: если пользователь выбрал закрыть программу, то и задерживать её (перед закрытием) ни к чему, т.е. эта строчка не нужна:
Код:
|
30.03.2017, 21:30 | #18 |
Пользователь
Регистрация: 30.11.2016
Сообщений: 23
|
Спасибо! Считаю, что ты прав! Программирую в Visual Studio 2012.
|
30.03.2017, 21:41 | #19 |
Участник клуба
Регистрация: 14.05.2016
Сообщений: 1,793
|
Отлично, там есть "точки останова".
Бери программу, где первый раз встречается "head" (кстате, как переводится с английского?) и поставь точку останова (после формирования списка): 0.jpg запускаешь при "Debug" 1.jpg когда программа остановиться - наведи мышкой на "head". Чему оно равно? (сделай скриноты). |
30.03.2017, 22:00 | #20 |
Пользователь
Регистрация: 30.11.2016
Сообщений: 23
|
Сделал как вы сказали, head у меня ничему не равно, все как на скриншоте.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Структуры данных на С. | art1es23 | Общие вопросы C/C++ | 3 | 05.11.2015 14:42 |
Динамические структуры данных, списковые структуры (надо разобраться что делает программа) | _4Alex4_ | Помощь студентам | 1 | 14.11.2012 07:39 |
Структуры данных | LimPIK49 | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 17.03.2012 00:07 |
Структуры данных | alex-soft | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 17.01.2012 19:10 |
Структуры данных | Shadow94 | Общие вопросы C/C++ | 8 | 22.04.2011 11:50 |