Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
artart96
-26 / 0 / 0
Регистрация: 04.10.2014
Сообщений: 272
#1

При выводе стека выдает адреса ячеек, а не их содержимое, что не правильно? - C++

04.07.2015, 13:57. Просмотров 208. Ответов 5
Метки нет (Все метки)

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
#include <stdio.h>
#include <conio.h>
#include <Windows.h>
#include <locale.h>
 
struct List{
    int data;
    List*next;
};
 
int kol = 0;//Переменная-счетчик для количества элементов в стеке 
 
int main()
{
    setlocale(LC_ALL,"rus");
    printf("Введите количество элементов в стеке:");
    scanf("%d",&kol);
    printf("\n");
    List *begin,*a;
    begin = new List;
    begin->next = NULL;
    a = begin;
    for(int i = 0;i<kol;i++)
    {
        printf("Введите элемент стека:");
        scanf("%d",&begin->data);
        begin = new List;
        begin->next = a;
        a = begin;
    }
    printf("Введенный стек:");
    List *print;
    print = begin;
    while(print->next !=NULL)
    {
        printf("%d",print->data);
        print = print->next;
    }
    printf("\n");
    return 0;
}
При выводе выдает адреса ячеек,а не их содержимое, что не правильно?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2015, 13:57     При выводе стека выдает адреса ячеек, а не их содержимое, что не правильно?
Посмотрите здесь:

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

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

Программа работает, но при выводе определенной комбинации выдает ошибку - C++
Помогите начинающему программисту :) Программа работает, но если ввести все непростые числа, то выдает ошибку &quot;поврежденная куча&quot;. Во всех...

Программа работает правильно, но при выводе появляются лишние цифры - C++
Программа реализует метод Гаусса с выбором главного элемента по столбцу. Все работает верно, кроме одного. При выводе на экран выводятся...

Ошибка при выводе 1-го элемента массива, но правильно выводит последний - C++
Помогите пожалуйста найти ошибку (почему не выводит переменную а?): #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; ...

Как правильно ограничить число знаков после запятой при выводе массива - C++
Доброго времени суток. Проблема в следующем - считается обратная матрица, при выводе необходимо ограничить число символов после...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Velesthau
523 / 425 / 129
Регистрация: 25.11.2014
Сообщений: 1,662
04.07.2015, 14:33     При выводе стека выдает адреса ячеек, а не их содержимое, что не правильно? #2
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
#include <stdio.h>
#include <locale.h>
 
struct List
{
        int data;
        List* next;
};
 
int main()
{
    int kol = 0;
        setlocale(LC_ALL,"rus");
        printf("Введите количество элементов в стеке:");
        scanf("%d",&kol);
        printf("\n");
        List *head=NULL, *tail=NULL;
        for(int i = 0;i<kol;i++)
        {
        if(head==NULL)
            head = tail = new List;
        else
            tail = tail->next = new List;
        tail->next = NULL;
                printf("Введите элемент стека:");
                scanf("%d", &tail->data);
        }
        printf("Введенный стек:");
    for(List* current = head;current != NULL;current = current->next,delete head,head = current)
        printf("%d\n", current->data);
 
        return 0;
}
artart96
-26 / 0 / 0
Регистрация: 04.10.2014
Сообщений: 272
04.07.2015, 14:37  [ТС]     При выводе стека выдает адреса ячеек, а не их содержимое, что не правильно? #3
А что у меня не так?
Velesthau
523 / 425 / 129
Регистрация: 25.11.2014
Сообщений: 1,662
04.07.2015, 14:46     При выводе стека выдает адреса ячеек, а не их содержимое, что не правильно? #4
Цитата Сообщение от artart96 Посмотреть сообщение
А что у меня не так?
последний элемент ты не вводишь, а сразу выходишь из цикла. Последний begin у тебя с мусором в data. Это не адреса.

Ты вызываешь ввод для data
C++
1
scanf("%d",&begin->data);
Потом создаешь новый элемент
C++
1
2
3
        begin = new List;
        begin->next = a;
        a = begin;
И если у тебя подошел к концу цикл, то
C++
1
scanf("%d",&begin->data);
для твоего нового begin не вызывается.

Добавлено через 48 секунд
Сделай вывод с символом новой строки:
Цитата Сообщение от artart96 Посмотреть сообщение
printf("%d\n",print->data);
а то ж нифига не понятно будет, что вообще выводится, все сольется.
artart96
-26 / 0 / 0
Регистрация: 04.10.2014
Сообщений: 272
04.07.2015, 15:03  [ТС]     При выводе стека выдает адреса ячеек, а не их содержимое, что не правильно? #5
Цитата Сообщение от Velesthau Посмотреть сообщение
Сделай вывод с символом новой строки:
Сообщение от artart96
printf("%d\n",print->data);
а то ж нифига не понятно будет, что вообще выводится, все сольется.
Я нашел ошибку, создается последняя новая структура, но информационное поле этой структуры я не заполняю с клавиатуры, так как в цикл уже не могу войти,и в неё помешается какой-то мусор, поэтому выводится не то, что нужно.
Velesthau
04.07.2015, 15:25     При выводе стека выдает адреса ячеек, а не их содержимое, что не правильно?
  #6

Не по теме:

Цитата Сообщение от artart96 Посмотреть сообщение
Я нашел ошибку, создается последняя новая структура, но информационное поле этой структуры я не заполняю с клавиатуры, так как в цикл уже не могу войти,и в неё помешается какой-то мусор, поэтому выводится не то, что нужно.
Она выше прокомментированного сообщения и описана

Yandex
Объявления
04.07.2015, 15:25     При выводе стека выдает адреса ячеек, а не их содержимое, что не правильно?
Ответ Создать тему
Опции темы

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