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

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

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

Программа выводит только одно значение - C++

16.11.2014, 09:21. Просмотров 294. Ответов 7
Метки нет (Все метки)

Здравствуйте. Есть код
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
#include <iostream>
#include <conio.h>
#include <time.h>
using namespace std;
#define nil NULL;
struct TList{
double info;
struct TList* next;
};
 
typedef struct TList pNode;
pNode* first = NULL;
pNode* last = NULL;
pNode* current = NULL;
void print_list()
{
pNode* current = first;
cout<<"Елементы:\n";
if (!current) cout<<"Лист пуст!\n";
while (current)
{
cout<<current->info<<" ";
current = current->next;
}
}
 
void add_element()
{
double x = (rand()%10)/10.0;
current = new pNode;
current->info = x;
current->next = NULL;
if (!first)
{
first = current;
}
else last->next = current;
last = current;
}
 
void make_list()
{
int n;
cout<<"Введите количество елементов:";
cin>>n;
for (int i=0; i<n; i++)
{
add_element();
}
}
 
void del_list()
{
while (first)
{
pNode* current = first;
first = current->next;
delete current;
}
}
 
void main()
{
system("chcp 1251 >text");
srand(time(NULL));
make_list();
print_list();
cout<<endl<<"Адреса:"<<endl<<"Первый: "<<&first<<endl<<"Последний: "<<&last<<endl<<"Текущий: "<<&current<<endl;
del_list();
system("pause");
}
, но если я в нём меняю одну переменную вместо
C++
1
2
3
4
5
6
if (!first)
{
first = current;
}
else last->next = current;
last = current;
на
C++
1
2
3
4
5
6
if (!first)
{
first = current;
}
else first->next = current;
first = current;
программа выводит только одно значение. Помогите пожалуйста.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2014, 09:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программа выводит только одно значение (C++):

Программа всегда выводит одно и тоже значение при разных вводимых данных - C++
Не думаю, что дело в коде, но значение всегда выводилось n = 2 и pos = 2. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...

Функция rand в цикле выводит одно и то же значение - C++
Всем привет! В общем, прилагаю условие задачи и мой написанный код :) Проблема, как я считаю, незначительная, однако я никак не могу понять...

В двухмерный массив array[1][1] можно поместить только одно значение? - C++
Хотел уточнить,в двухмерный массив array можно поместить только одно значение,одну цифру,правильно?

Программа выводит только целую часть числа - C++
//Найти среднее арифметическое среди // простых чисел, расположенных после минимального значения. #include &lt;iostream.h&gt; //...

Программа выводит только первую строку текста - C++
// yourcat.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace...

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

7
MrHant
0 / 0 / 1
Регистрация: 16.11.2014
Сообщений: 11
16.11.2014, 10:18 #2
Цитата Сообщение от qweeqweqwe Посмотреть сообщение
if (!first)
{
first = current;
}
else first->next = current;
first = current;
прогу без коментов, цели создания, изменения даже не читал но очевидна проблема в выделенных строчках: Текущим становится первый элемент, таким образом твой список не увеличивается. Тогда может стоить две строки после элс в фигурные скобки засунуть. Но повторюсь смысла не вижу в этих изменениях
0
qweeqweqwe
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 36
16.11.2014, 10:36  [ТС] #3
MrHant, Даны указатели P1, P2 и P3 на первый, последний и текущий элементы двусвязного списка (если список является пустым, то P1 = P2 = P3 = nil). Также дано число N (> 0) и набор из N чисел. Описать тип TList – запись с полями First, Last и Current типа PNode (поля указывают соответственно на первый, последний и текущий элементы списка) — и процедуру InsertLast(L, D), которая добавляет новый элемент со значением D в конец списка L (L – входной и выходной параметр типа TList, D – входной параметр целого типа). Добавленный элемент становится текущим. С помощью этой процедуры добавить в конец исходного списка данный набор чисел (в том же порядке) и вывести новые адреса его первого, последнего и текущего элементов. В ней нужно просто поменять: добавляет новый элемент со значением D в конец списка L на элемент со значением D в начало списка L
0
MrHant
0 / 0 / 1
Регистрация: 16.11.2014
Сообщений: 11
16.11.2014, 11:27 #4
тогда процедура добавления будет выглядить так:
C++
1
2
3
4
5
6
7
8
9
10
void add_element()
{
double x = (rand()%10)/10.0;
current = new pNode;
current->info = x;
if (first)
{
current->next = first;
first=current;
}
Естественно вместо рандомного x можно принять x как параметр чтобы добавлять какой-то конкретный элемент

А также если будут утечки памяти (обычно при закрытии программы или выполнении деструктора), значит нужно поэлементно перегонять весь список.
0
qweeqweqwe
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 36
16.11.2014, 12:13  [ТС] #5
MrHant, при любом значении лист пуст
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3976 / 2200 / 553
Регистрация: 18.10.2014
Сообщений: 3,814
16.11.2014, 12:17 #6
Цитата Сообщение от qweeqweqwe Посмотреть сообщение
C
1
#define nil NULL;
А это что за счастье такое? Раз уж вам хочется так поизвращаться, так хотя бы уберите оттуда ';'
0
MrHant
0 / 0 / 1
Регистрация: 16.11.2014
Сообщений: 11
16.11.2014, 12:23 #7
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
А это что за счастье такое? Раз уж вам хочется так поизвращаться, так хотя бы уберите оттуда ';'
Да парень походу с какого-то без башенного форума скопипастил код

Добавлено через 4 минуты
Цитата Сообщение от qweeqweqwe Посмотреть сообщение
MrHant, при любом значении лист пуст
C++
1
2
3
4
5
6
7
8
9
10
void add_element()
{
    double x = (rand() % 10) / 10.0;
    current = new pNode;
    current->info = x;
    
        current->next = first;
        first = current;
    
}
поправил
теперь значения заносить как надо
0
qweeqweqwe
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 36
16.11.2014, 12:32  [ТС] #8
MrHant, спасибо за помощь
0
16.11.2014, 12:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.11.2014, 12:32
Привет! Вот еще темы с ответами:

Программа не выводит значение переменной - C++
void CMFCApplication2Dlg::OnBnClickedrunButton2() { char buffer; int l = _itoa_s(timex, buffer, 10); MessageBox(L&quot;До завершения...

Почему программа выводит значение 0? - C++
#include &lt;iostream&gt; //Включение библиотек #include &lt;math.h&gt; using namespace std; //Использование пространства имен void...

Программа выводит только 1 знак после запятой, хотя должна выводить больше - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;iomanip&gt; using namespace std; int main(){ setlocale(LC_ALL, &quot;Russian&quot;); ...

Нужна программа, которая считывает текст из файла и выводит на экран только предложения, не содержащие запятых - C++
Помогите!!! нужна программа, которая считывает текст из файла и выводит на экран только предложения не содержащие запятых.


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

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

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