Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
2 / 2 / 0
Регистрация: 06.10.2012
Сообщений: 44

Нужны советы по задачам

27.03.2013, 22:53. Показов 794. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня при написании программ возникли проблемы.
1)в программе где я работаю со списками:
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
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;
 
struct STack
{
    int *number;
};
 
void Print(const STack* st)
{
    cout <<"\n<"<<st->number<<">";
    for(int i=0; i<st->number; i++)
        cout<<st->number[i]<<"\t";
    
}
 
void Input(STack* const st)
{
    cout <<"\nSay number:";
    cin >>st->number;
    for(int i=0; i<st->number; i++) 
        cin>>st->number[i];
 
}
 
struct STnum
{STack *data; // данные числа
STnum *prev; // указатель на предыдущий элемент
STnum *next; // указатель на последний элемент списка
STnum();
};
 
STnum::STnum()
{data = NULL;
prev = next = NULL;
}
 
 
struct Tlist
{
    STnum *head; // указатель на начало списка
    STnum *tail; // указатель на конец списка
 
    Tlist();
    void AddToHead(STack*); // добавить число в начало списка
    void DelFirst ();
    void Clear();
    void PrintN();
};
 
    Tlist::Tlist()
    {
        head=tail = NULL;
    }
 
    void Tlist::AddToHead(STack* st)
    {
        STnum *p = new STnum;
        p->data = st;
        if(!head)
        {
            head=tail=p;
        }
        else
        {
            p->prev = head;
            p->next = head->next;
            head = tail = p;
        }
    }
    void Tlist::DelFirst()
    {
        if(head)
        {
            if(head==tail)
            {
                delete head;
                head=tail=NULL;
            
            }
            else
            {   STnum *p = head;
                head = head->next;
                delete p->data;
                delete p;
            }
        }
    }
 
    void Tlist::Clear()
    {
        STnum *p = head;
        while(p!=NULL)
        {
            DelFirst();
            p=p->next;
        }
    }
 
    void Tlist::PrintN()
    {
        STnum *p = head;
        while(p!=NULL)
        {
            Print(p->data);
            p=p->next;
        }
    }
 
    int Menu()
    {   system("clr");
        cout<<"\n Menu\n";
        cout<<"1. New number\n";
        cout<<"2. Delete first number\n";
        cout<<"3. Delete all numbers\n";
        cout<<"4. Show numbers\n";
        cout<<"0. close menu\n";
        cout<<"choose function of menu =>";
        int punkt;
        do
        cin>>punkt;
        while(punkt <0 || punkt >4);
        return punkt;
    }
 
    int main()
    {
        
        Tlist group;
        
 
        int subPunkt;
        do{
            subPunkt = Menu();
            switch(subPunkt)
            {
case 1:{
                cout<<"\nNew number";
                STack *st = new STack;
                Input(st);
                group.AddToHead(st);
      }
       break;
case 2: group.DelFirst(); 
    break;
case 3: group.Clear();
    break;
case 4: 
    {
        cout<<"\n Show Num\n";
        if(!group.head)
            cout<<"\n you have no Num!\n";
        else
            group.PrintN();
    }
    break;
            };
            getch();
        }
        while(subPunkt!= 0);
        group.Clear();
    }
я абсолютно не знаю, как написать ф-ю считывания списка с файла(блокнота). Здесь мне нужна помощь конкретно с написанием самой ф-и, так как с работой с файлами, я вообще не бум-бум.

2) в этой же программе возникла такая проблема, что при выполнении заполнения списка, я могу ввести 1 элемент, после чего посмотреть, что он присутствует в списке через ф-ю показа списка. Но вводя второй элемент, он показывает только последний элемент списка, не показывая первый. Как можно с этим справится?


3) Эта проблема с другой задачей, но тут мне нужен лишь совет. Как в одномерном массиве, поставить после максимального элемента, все минимальные? я так понимаю, что нужно найти индексы максимального и минимального элемента, но что делать с ними дальше, я не знаю.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.03.2013, 22:53
Ответы с готовыми решениями:

Класс редактирования данных. Нужны советы по реализации
Есть задача: написать класс, позволяющий редактировать данные в памяти. Указатель на данные и их начальный размер передаются в конструктор....

Нужны советы в поиске способов решения курсовой по ООП
2 курс, тему для курсовой по ООП разрешили выбрать самостоятельно. пришла на ум идея сделать десктоп приложение для просмотра расписания...

Нужны советы как реализовать сложение, вычитание, умножение полиномов/многочленов и деление на число
Всем здравствуйте! надеюсь написать с вашей помощью программку для сложения, вычитания и умножения полиномов, а также деления на число....

3
Кактус
 Аватар для eocron
67 / 67 / 19
Регистрация: 23.05.2012
Сообщений: 342
27.03.2013, 23:13
1) Вот документация по считыванию, с конкретным примером - http://www.cplusplus.com/refer... ream/open/

2) Для печати списка вам нужно пробежаться по всем элементам от головы до хвоста и последовательно их распечатать. Для этого заводите "итератор" типа (STnum *iter=head; ) (грубо говоря это ссылка, которая сообщает на каком узле вы находитесь в данный момент), в начале iter=голове списка. Далее, Вы последовательно делаете шаги вглубь - iter=iter->next до тех пор пока iter не равен NULL.

3) Вы реализуете сортировку? В таком случае лучше ее назвать. Если же это НЕ сортировка и вам просто нужно поставить все минимальные вправо - вы находите максимальный элемент и меняете его с первым. И все.
0
2 / 2 / 0
Регистрация: 06.10.2012
Сообщений: 44
27.03.2013, 23:47  [ТС]
eocron, с третьим у меня вопрос, мне нужно найти минимальное значение и максимальное, я его нашел, но нужно именно определить позицию максимального(с этим проблем нет), и после него всем последующим элементам присвоить значение одного единственного минимального, то есть условно говоря, есть массив:
4 1 3 9 8 7 5 6 и получить:
4 1 3 9 1 1 1 1. Мне кажется, что через ваш способ не подходит для этого, или я ошибаюсь? может просто я вас немного не понял.

Добавлено через 4 минуты
eocron, и ещё, во втором, мне этим способом, нужно работать с ф-й заполнения списка или ф-й вывода на экран списка?
0
Кактус
 Аватар для eocron
67 / 67 / 19
Регистрация: 23.05.2012
Сообщений: 342
27.03.2013, 23:51
Тогда все просто, вы сохраняет индекс минимального элемента в min и максимального элемента в max, далее простенький цикл:
for(int i=max+1; i<n;i++) a[i]=a[min];
Дословно он говорит следующее: начиная со следующей позиции после позиции максимального элемента, заполнять все минимальным элементом.

где n - число элементов в массиве, a[] - сам массив.


----------------
Во втором, на итераторы в интернете есть хорошая документация. Он позволяет множество вещей вытворять со структурой данных. В данном случае, да, вам всего лишь с помощью итератора нужно пробежать по всем элементам пошагово - начиная от головы делать iter=iter->next и в вплоть до NULL не включая.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.03.2013, 23:51
Помогаю со студенческими работами здесь

Структура "Сканер". Нужны советы профессионалов по программе
Программа ПОЧТИ работает, очень все сырое, код мне кажется мог быть и короче. Прошу Вас, эксперты, указать явные недоработки и как было бы...

Нужны советы
Хочу услышать критику в адрес pc54.ru что лишнее, чего не хватает, где ошибся?

Нужны советы.
Что должно быть и чего не должно быть в белом каталоге статей??? Подскажите пожалуйста. У меня есть каталог статей и я хочу чтоб он стал на...

Нужны советы
Здравствуйте. Меня интересуют ваши мысли по поводу ситуации и советы. Ситуация следующая, я- начинающий системный администратор в...

Нужны советы по разметке
1) Как нарисовать &quot;границу&quot; элемента, сейчас просто делаю &quot;подкладку&quot; LinearLayout с паддингом 1dp и нужным цветом заливки. Может можно как...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru