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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ В массиве найти количество нечетных чисел расположенных после второго самого большего числа http://www.cyberforum.ru/cpp-beginners/thread122725.html
Срочно плиз помогите для курсача написать программку на C В массиве найти количество нечетных чисел расположенных после второго самого большего числа
C++ Дан файл f и g, компоненты которых являются целыми числами в машинном представлении. Записать в файл h числа из файлов f и g повторяющиеся в обоих фай Дан файл f и g, компоненты которых являются целыми числами в машинном представлении. Записать в файл h числа из файлов f и g повторяющиеся в обоих файлах ровно 2 раза. http://www.cyberforum.ru/cpp-beginners/thread122705.html
в текстовом редакторе создать файл, содержащий текст, длина которого не превышает 1000 символов (длина строки текста не должна превышать C++
С помощью текстового редактора создать файл, содержащий текст, длина которого не превышает 1000 символов (длина строки текста не должна превышать 70 символов). Имя файла должно иметь расширение DAT. Написать программу, которая: выводит текст на экран дисплея; определяет самую длинную последовательность цифр в тексте (любое количество пробелов и концы строк не прерывают последовательность...
C++ Нужно перевести код из Pascal в С
Помогите пожалуйста перевести паскалевский код на Си(без плюсов, хотя и с плюсами тоже можно). Заранее спасибо. Вот код: unit Interpol; interface uses Types;
C++ Количество элементов между минимумом и максимумом http://www.cyberforum.ru/cpp-beginners/thread122680.html
Пожалуйста помогите вот с этой задачей!!! Написать программу, которая для целочисленной матрицы 10х20 определяет среднее арифметическое ее элементов и количество положительных элементов в каждой строке.Матрица должна заполняться случайными цифрами, и должно быть динамическое выделение памяти.
C++ написать программку для расчета степени хай пипл! помогите пожалуйста решить задачку в с++ для начинающего, условия:написать программку для расчета степени: 2 в 5 степени, пишу в Dev c++ 9.4.4.2 подробнее

Показать сообщение отдельно
artem0n2
0 / 0 / 0
Регистрация: 28.10.2009
Сообщений: 67
03.05.2010, 12:37  [ТС]     Постигая рекурсию.
хорошо) так и сделаю

Добавлено через 17 часов 55 минут
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
#include <stdio.h>
#include <conio.h>
#define n 15 //izna4alno po usloviju ne bolee 15 elementov A
#include <malloc.h>
 
int tos = 0;
int *stck;
 
void push1(int A, int size){   //zapolnenie steka dlja A
        if(tos==size){
                printf("Stack is full\n");
                return;
        }
        stck[tos] = A;
        tos++;
}
void push2(int H, int size){   //zapolnenie steka dlja H
        if(tos==size){
                printf("Stack is full\n");
                return;
        }
        stck[tos] = H;
        tos++;
}
int pop1(void){       //eto navero dlja vivoda dannih
        if(tos==0){
                printf("Stack is empty\n");
                return 0;
        }
        tos--;
        return stck[tos];
}
void calcH(int *H, int X, int i, int N)//ras4et H s ispolzovaniem rekursii
{
    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;
    int size;
    
    FILE *fin;
    
    if ((fin = fopen("F1.txt", "r")) == NULL) //proverka faila
    {
        printf("error reading file");
        getchar();
        return -1;
    }
    
    fscanf(fin, "%d", &N);  //4tenie koli4estva elementov N iz faila
    if (N >= 15)
    {
          printf("ERROR!!!!!!");
          getchar();
          return -1;
          }
          
    while(!feof(fin)) {  //4tenie elementov massiva A iz faila
    for (i = 0; i < N; i++)
        fscanf(fin, "%d", &A[i]);}
    
    
    fclose(fin);
    // Na4alo sozdanija steka dlja A
    size = N;
    stck = (int*)malloc(size*sizeof(int));  //vot eto ne4to neponjatnoe mne
    for(i = 0; i < size; i++){
                fscanf(fin, "%d", &A[i]);
                push1(A[i], size);
        }
    printf("Stack of A:\n");
        for(i = 0; i < size; i++)
                printf("%d\n", pop1());
    
    for(i = 0; i < size; i++)
          push1(0, size);
          tos = 0;
     
    printf("Input X: "); // Vvodim X
    scanf("%d", &X);
    
    H[0] = 1;
    H[1] = X;
    
    calcH(H, X, 2, N);  //s4iteam H 4erez funkciju
    for (i = 0; i <= N; i++)
        printf("H[%d] = %d\n", i, H[i]);
    // Stek dlja H
    for(i = 0; i < size; i++)
          push2(H[i], size);
    
    printf("Stack of H:\n");
                  for(i = 0; i < size; i++)
                        printf("%d\n", pop1());
          
    for (i = 0, S = 0; i < N; i++)
        S += A[i] * H[i];
    
    FILE *fout; //na4inaem rabotu s failom f2 dlja vivoda informacii
    
    if ((fout = fopen("F2.txt", "w+")) == NULL)
    {
        printf("error writing file");
        getchar();
        return -1;
    }
    
    fprintf(fout, "%d\n", S); //zapis S v fail f2
    for (i = 0; i <= N; i++)
       fprintf(fout, "H[%d] = %d\n", i, H[i]); //zapis vseh elementov H v fail f2
       
    free(stck);  //osvobozdaem stek ot dannih =)
    fclose(fout);
    
    getchar();
    getchar();
    return 0;
}
вот так вот получилось, сначала на экран выводится стек из элементов А, затем ввожу Х и выводятся все элементы Н[i] подсчитанные через рекурсию, они же отправляются в стек для Н, и в конце подсчёт S и вывод инфы в файл. Одна загвоздка - в стек для Н не выводится последний элемент H[8] в случае если 8 элементов. Ну если там ещё есть косяки в проге поправьте плз)) мне по ней полный отчёт делать надо.
 
Текущее время: 08:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru