Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ В массиве найти количество нечетных чисел расположенных после второго самого большего числа https://www.cyberforum.ru/ cpp-beginners/ thread122725.html
Срочно плиз помогите для курсача написать программку на C В массиве найти количество нечетных чисел расположенных после второго самого большего числа
Дан файл f и g, компоненты которых являются целыми числами в машинном представлении. Записать в файл h числа из файлов f и g повторяющиеся в обоих фай C++
Дан файл f и g, компоненты которых являются целыми числами в машинном представлении. Записать в файл h числа из файлов f и g повторяющиеся в обоих файлах ровно 2 раза.
в текстовом редакторе создать файл, содержащий текст, длина которого не превышает 1000 символов (длина строки текста не должна превышать C++
С помощью текстового редактора создать файл, содержащий текст, длина которого не превышает 1000 символов (длина строки текста не должна превышать 70 символов). Имя файла должно иметь расширение DAT....
C++ Нужно перевести код из Pascal в С Помогите пожалуйста перевести паскалевский код на Си(без плюсов, хотя и с плюсами тоже можно). Заранее спасибо. Вот код: unit Interpol; interface uses Types; https://www.cyberforum.ru/ cpp-beginners/ thread122682.html
C++ Количество элементов между минимумом и максимумом https://www.cyberforum.ru/ cpp-beginners/ thread122680.html
Пожалуйста помогите вот с этой задачей!!! Написать программу, которая для целочисленной матрицы 10х20 определяет среднее арифметическое ее элементов и количество положительных элементов в каждой...
C++ написать программку для расчета степени
хай пипл! помогите пожалуйста решить задачку в с++ для начинающего, условия:написать программку для расчета степени: 2 в 5 степени, пишу в Dev c++ 9.4.4.2
Сдвинуть массив циклически на К элементов вправо C++
Может кто знает.:) Сдвинуть массив циклически на К элементов вправо.
C++ Уплотнить матрицу А, удаляя из нее строки и столбцы заполненные нулями Пожалуйста помогите:) Уплотнить матрицу А, удаляя из нее строки и столбцы заполненные пулями.(подключать только iostream,conio,math) https://www.cyberforum.ru/ cpp-beginners/ thread122641.html
C++ Помогите пожалуйста записать на С++ фрагмент программы https://www.cyberforum.ru/ cpp-beginners/ thread122628.html
помогите пожалуйста записать на С++ фрагмент программы) const s:string='0123456789ABCDEF'; c:array of byte=(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); for i:=length(s16) downto 1 do
C++ Нарисовать графики линейных функций Добрый день. Пришла в голову мысль реализовать программу, которая рисует графики линейных функции - f(x)=kx+b, где k, b - вводятся с клавиатуры. Но тут то оно, с графикой в С++ не работал. Как вы... https://www.cyberforum.ru/ cpp-beginners/ thread122597.html
Эксперт С++
5037 / 3097 / 271
Регистрация: 11.11.2009
Сообщений: 7,047
03.05.2010, 15:47 0

Постигая рекурсию.

03.05.2010, 15:47. Просмотров 2433. Ответов 43
Метки (Все метки)

Ответ

Нет, так не получится. Ведь вы когда выводили стэк на экран, вы уже использовали функцию pop, а она именно вытаскивает элементы из стека, и в самом стеке их не оставляет. Можно модифицировать код так:

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
#include <stdio.h>
 
#define n 15
 
int tos = 0;
int *stck;
 
void push(int T, int size)
{
    if(tos == size)
    {
        printf("Stack is full\n");
        return;
    }
        
    stck[tos] = T;
    tos++;
}
 
int pop()
{
    if(tos == 0)
    {
        printf("Stack is empty\n");
        return 0;
    }
    
    tos--;
    
    return stck[tos];
}
 
void calcH(int *H, int X, int i, int N)
{
    H[i] = X * H[i - 1] - (i - 1) * H[i - 2];
    i++;
    
    if (i != n)
        calcH(H, X, i, N);
}
 
int main(void)
{
    int A[n];
    int X;
    int H[n];
    int N = 0;
    int S;
    int i;
    
    FILE *fin;
    
    if ((fin = fopen("F1.txt", "r")) == NULL)
    {
        printf("error reading file");
        getchar();
        return -1;
    }
    
    fscanf(fin, "%d", &N);
    
    if (N >= 15)
    {
        printf("ERROR!!!!!!");
        getch();
        return -1;
    }
          
    while(!feof(fin))
        for (i = 0; i < N; i++)
            fscanf(fin, "%d", &A[i]);
    
    
    fclose(fin);
    
    stck = (int *)malloc(N * sizeof(int)); // Çäåñü ïðîèñõîäèò äèíàìè÷åñêîå âûäåëåíèå ïàìÿòè ïîä ñòåê - ìàññèâ öåëûõ ÷èñåë.
                                           // Ôóíêöèÿ malloc(n) âûäåëÿåò êóñîê îïåðàòèâíîé ïàìÿòè ðàçìåðîì n (ñâîåãî àðãóìåíòà) áàéò.
                                           //  äàííîì ñëó÷àå âûäåëÿåòñÿ N * sizeof(int) áàéò, ò.ê. N - âñåãî ëèøü êîëè÷åñòâî
                                           // ýëåìåíòîâ. Åñëè, ñêàæåì, N = 6, òî ôóíêöèÿ malloc(N) âûäåëèò 6 áàéò. Íî íàì æå íóæíî
                                           // çàïèñàòü â âûäåëåííóþ ïàìÿòü íå 6 áàéò, à 6 öåëûõ ÷èñåë, êàæäîå èç êîòîðûõ çàíèìàåò
                                           // 4 áàéòà (ðàçìåð òèïà int). Ò.å. íàì íàäî âûäåëèòü 6 * 4 = 6 * sizeof(int).
                                           // Äàëåå. Çà÷åì (int *). Ôóíêöèÿ malloc âûäåëÿåò ïàìÿòü è âîçâðàùàåò óêàçàòåëü
                                           // íà íà÷àëî âûäåëåííîé ïàìÿòè.  ïðèíöèïå, ìîæíî è íå ïðåîáðàçîâûâàòü åãî òèï
                                           // â òèï "óêàçàòåëü íà int", íî ëó÷øå ýòî ñäåëàòü, ò.ê. ìû âñ¸-òàêè õîòèì ïîëó÷èòü
                                           // â èòîãå ìàññèâ èç N _öåëûõ_ ÷èñåë, à íå ïðîñòî ó÷àñòîê ïàìÿòè ðàçìåðîì N * sizeof(int).
    
    for(i = 0; i < N; i++)
    {
        fscanf(fin, "%d", &A[i]);
        push(A[i], N);
    }
    
    printf("Stack of A:\n");
        for(i = 0; i < N; i++)
                printf("%d\n", pop());
    
    for(i = 0; i < N; i++)
          push(0, N);
          
    tos = 0;
     
    printf("Input X: ");
    scanf("%d", &X);
    
    H[0] = 1;
    H[1] = X;
    
    calcH(H, X, 2, N);
    
    for (i = 0; i < N; i++) // Ó âàñ çäåñü áûëî óñëîâèå i <= N, à íàäî i < N
        printf("H[%d] = %d\n", i, H[i]);
        
    for(i = 0; i < N; i++)
          push(H[i], N);
    
    FILE *fout;
    
    if ((fout = fopen("F2.txt", "w+")) == NULL)
    {
        printf("error writing file");
        getch();
        return -1;
    }
    
    printf("Stack of H:\n");
    
    int temp;
    
    for(i = 0; i < N; i++)
    {
        temp = pop();
        printf("%d\n", temp);
        fprintf(fout, "%d\n", temp);
    }
          
    for (i = 0, S = 0; i < N; i++)
        S += A[i] * H[i];
    
    fprintf(fout, "%d\n", S);
    
    for (i = 0; i < N; i++) // Ó âàñ çäåñü áûëî óñëîâèå i <= N, à íàäî i < N
       fprintf(fout, "H[%d] = %d\n", i, H[i]);
       
    free(stck);
    fclose(fout);
    
    getch();
    return 0;
}
Добавлено через 1 минуту
Т.е. мы вытаскиваем элемент из стека во временную переменную temp, а потом выводим её и на экран, и в файл

Вернуться к обсуждению:
Постигая рекурсию.
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.05.2010, 15:47
Готовые ответы и решения:

Задача на рекурсию
С помощью рекурсии вычислить произведение ненулевых элементов динамического массива. Кто-то знает?...

В файл рекурсию
Как мне результаты этой программы вывести в файл ? #include&lt;iostream&gt; #include&lt;fstream&gt; using...

Задача на рекурсию
Вот код проги которую я написал: #include &lt;iostream&gt; using namespace std; int factr(double...

Задача на рекурсию
Всем доброго времени суток. Прошу подсказать мне условие задачи на рекурсию(нам дали задание самим...

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