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

СТЭК не фурычит - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Один класс не видит другой. Преобразование класса http://www.cyberforum.ru/cpp-beginners/thread959524.html
Всем доброго времени суток. В общем вот есть такой код: #include <cmath> using namespace std; class Decart; class Polar { private: double distance, angle;
C++ Как приравнять объекты двух разных классов написал свой класс Angle(угол). А теперь нужно сделать так Angle c; Label1->Caption=c; Знаю, что нужно как-то по колдовать) Но как? http://www.cyberforum.ru/cpp-beginners/thread959519.html
Графы. Нужно составить алгоритм C++
Помогите алгоритмизировать задачу! Нужно написать программу способную определить, можно ли в заданной системе односторонних дорог проехать из города А в город В таким образом, чтобы посетить город С...
C++ Main не видит функции из заголовочного файла
Здравствуйте. Помогите решить проблему пожалуйста: inly@inly-pc:~/base/Select$ make g++ -c serv_sel.cpp -lssl -lcrypto -ldl gcc -c ../Libs/initCTX.c -lssl -lcrypto -ldl gcc -c ../Libs/ftoa.c ...
C++ Линейные статические структуры данных http://www.cyberforum.ru/cpp-beginners/thread959488.html
Помогите пожалуйста с задачей !!! Необходимо написать программу, использующую сведения о формате файла и выводящуюинформацию об обрабатываемом файле вида: для изображений: размер изображения,...
C++ Окончание связанного списка Скажите, пожалуйста, как в моём случае можно поступить: выйти из цикла, если нажатием Enter ничего не вводится и выдавать ошибку, если значение одного изполей "доминушки" больше 6? /* Job_A.cpp:... подробнее

Показать сообщение отдельно
eXplo1dl
0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 58

СТЭК не фурычит - C++

22.09.2013, 09:19. Просмотров 311. Ответов 1
Метки (Все метки)

Привет! Такая проблема, решил написать стэк, в элементах которого лежат указатели на массив строк.Но что-то не так либо пишет мусор либо еще что. А если в стэке(fname) лежит просто string то после нескольких вводов он пишет \320
. но после тем не менее продолжает заполнять стэк именами
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
#include <iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
 
using namespace std;
 
struct Stack
{
    string * fname;
    
    
    
    Stack*next,*head;
};
 
 
 
 
void addstack(string name, Stack **Mystack) //Принимаем элемент стека и указатель на стек, при этом говорим, что принимаемый указатель будет сам по себе указателем
{
   
    Stack *temp=new Stack; //Выделяем память для нового элемента
    temp->fname=&name; //Записываем в поле x принимаемый в функцию элемент x
    temp->next=(*Mystack)->head; //Указываем, что следующий элемент это предыдущий
    (*Mystack)->head=temp; //Сдвигаем голову на позицию вперед
}
 
void Add(int i,string *name,Stack*Mystack)
{
    cout<<"Введите Имя : ";
    cin>>name[i];
    i++;
    addstack(name[i],&Mystack);
    
}
 
void Show(Stack *Mystack) //Нужен только сам стек
{
    string name;
    Stack *temp=new Stack; //Выделяем память для указателя, который будет указыват на ячейку памяти в которую занесем инф
    temp=Mystack->head; //Указываем ему, что его позиция в голове стека
                        //с помощью цикла проходим по всему стеку
    while (temp!=NULL)  //выходим при встрече с пустым полем
    {
     
        
        cout<<*(temp->fname)<<"\n"; //Выводим на экран элемент стека
        temp=temp->next; //Переходим к следующему элементу
    }
}
void Clearstack(Stack *MyStack)
{
    while (MyStack->head!=NULL)  //Пока не пусто
    {
        Stack *temp=MyStack->head->next; //Временная переменная для хранения адреса следующего элемента
        delete MyStack->head; //Освобождаем адрес обозначающий начало
        MyStack->head=temp; //Меняем адрес на следующий
    }
}
void deletestack(Stack *Mystack)
{
    if(Mystack->head!=NULL)
    {
        Stack *temp=Mystack->head->next;
        delete Mystack->head;
        Mystack->head=temp;
    }
}
void print()
{
    printf("\n");
    printf("1-добавить имя в стек\n");
    printf("2-вывести весь стек\n");
    printf("3-удалить последний элемент\n");
    printf("4-выход\n");
    
}
 
int main()
{
    string *name;
    name=(string*)malloc(20*sizeof(string));
  
    int k=0;
    Stack* Mystack= new Stack ;
    Mystack->head=NULL;
    print(); 
   
    do
    {
        
        
        k=getchar();
        
        switch(k)
        {
                
            case'1':
            {
                 Add(k,name,Mystack);
                 print();
                 break;
                
            }
                 
           
            case'2':
            {
                Show(Mystack);
                 print();
                break;
            }
                 
            case'3':
            {
                deletestack(Mystack);
                 print();
                break;
            }
                 
            case'4':
                break;
        }
         
        
        
        
    }
    while (k!='4');
    
    Clearstack(Mystack);
    
}
Подскажите в чем проблема плз!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.