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

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

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

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

04.07.2015, 13:57. Просмотров 195. Ответов 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++
C++ Ошибка при выводе 1-го элемента массива, но правильно выводит последний
C++ Ошибка в выводе стека
C++ Динамические массивы (выдает черемшу в выводе.)
При выводе данных в файл стереть всё, что в нём было C++
Программа работает, но при выводе определенной комбинации выдает ошибку C++
Вывести содержимое стека в порядке поступления элементов в стек C++
C++ Программа работает правильно, но при выводе появляются лишние цифры
C++ Программа выдает ошибку при выводе структуры в функции Vyvod(int N, struct vehicle*mass)
Почему выдает inf в выводе C++
Почему при выводе односвязного списка на экран он выдаёт ещё какие-то дополнительные адреса? C++
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     При выводе стека выдает адреса ячеек, а не их содержимое, что не правильно?
Ответ Создать тему
Опции темы

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