Форум программистов, компьютерный форум 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 подробнее

Показать сообщение отдельно
silent_1991
Эксперт С++
4956 / 3032 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
03.05.2010, 13:30     Постигая рекурсию.
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
#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 выделит 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);
    
    printf("Stack of H:\n");
    
    for(i = 0; i < N; i++)
        printf("%d\n", pop());
          
    for (i = 0, S = 0; i < N; i++)
        S += A[i] * H[i];
    
    FILE *fout;
    
    if ((fout = fopen("F2.txt", "w+")) == NULL)
    {
        printf("error writing file");
        getch();
        return -1;
    }
    
    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;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru