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

Рекурсивный метод - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Двумерные массивы (напишите кто нибудь рабочий код, с меня пиво)) http://www.cyberforum.ru/cpp-beginners/thread235930.html
Опять я))) Блондинко))) Двумерные массивы (матрицы) 1. Дано число k (0 < k < 11) и матрица размера 4 x 10. Найти сумму и произведение элементов k-го столбца данной матрицы. ___ С меня пиво))) Но только одному)))
C++ Что тут неправильно Что в коде неправильно #include <windows.h> int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int) { MessageBox(NULL,"Hello World","Hello",MB_OK); return 0; } Ошибка: cannot convert const char* to const WCHAR* for argument 2 to int MessageBoxW(HWND__*,const WCHAR*,const WCHAR*,UNIT) http://www.cyberforum.ru/cpp-beginners/thread235895.html
C++ посмотрите код пожалуйста,не могу сделать сортировку
Написать функцию, которая записывает в бинарный файл данные о сканере из приведенной структуры. Структура файла: в первых двух байтах размещается значение типа int, определяющее количество сделанных в файл записей; далее без пропусков размещаются записи о сканерах. Написать функцию, которая сортирует записи в файле по одной из следующих характеристик: цена, либо число градаций серого....
Процедуры на С... C++
Товарищи мужчины, прошу написать прогу по заданным условиям на языке С. Сама сколько не пробовала, ничего не могу понять... даже читая справочники по С... весь мозг уже изъела эта задача :( В заданиях данной подгруппы требуется реализовать процедуры или функции с числовыми параметрами типа int и float. Входные параметры этих типов обычно описываются как параметры-значения. Proc1. ...
C++ Найти количество элементов массива, лежащих в диапазоне от А до В http://www.cyberforum.ru/cpp-beginners/thread235873.html
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) количество элементов массива, лежащих в диапазоне от А до В; 2) сумму элементов массива, расположенных после максимального элемента. Упорядочить элементы массива по убыванию модулей. только на С++
C++ Секундомер (или часы) ребят никто не подскажет как сделать программу типа секундомер или часы и использование системного времени Для решения своих проблем создавайте отдельные темы! подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
5767 / 3416 / 255
Регистрация: 08.02.2010
Сообщений: 7,441
30.01.2011, 19:34     Рекурсивный метод
Проверяй:
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
#include <stdio.h>
#include <stdlib.h>
 
#define SIZE 10
 
void findSubseq(int*, int*, int**, int**, int*, int*);
void printSubseq(int*, int*, size_t);
 
int main()
{
    int seq[SIZE] = {1, 2, 1, 4, 5, 6, 5, 8, 9, 10};
    int* start = seq;
    int* end = seq;
    
    puts("Initital sequence");
    
    printSubseq(seq, seq + SIZE - 1, 0);
    puts("Its maximal not descending subsequence:");
    findSubseq(seq, seq + SIZE - 1, &start, &end, seq, seq);
    printSubseq(start, end, 0);
    
    exit(0);
}
 
int sum(int* start, int* end)
{
    if(start > end)
    return 0;
    return *start + sum(start + 1, end);
}
 
int compareSubseq(int* s1start, int* s1end,
          int* s2start, int* s2end)
{
    int len1, len2, sum1, sum2;
    len1 = s1end - s1start + 1;
    len2 = s2end - s2start + 1;
    if(len1 < len2)
    return -1;
    if(len2 < len1)
    return 1;
    sum1 = sum(s1start, s1end);
    sum2 = sum(s2start, s2end);
    if(sum1 < sum2)
    return -1;
    if(sum2 < sum1)
    return 1;
    return 0;
}
 
void findSubseq(int* start, int* end, int** maxStart, int** maxEnd, int* currStart, int* currEnd)
{
    if(start > end)
    {
    if(compareSubseq(*maxStart, *maxEnd, currStart, currEnd) < 0)
    {
        *maxStart = currStart;
        *maxEnd = currEnd;
    }
    
    return;
    }
        
    if(*start < *currEnd)
    {
    if(compareSubseq(*maxStart, *maxEnd, currStart, currEnd) < 0)
        findSubseq(start + 1, end, &currStart, &currEnd, start + 1, start + 1);
    else
        findSubseq(start + 1, end, maxStart, maxEnd, start + 1, start + 1);
    }
    findSubseq(start + 1, end, maxStart, maxEnd, currStart, start);
}
 
void printSubseq(int* start, int* end, size_t cnt)
{
    if(start > end)
    {
    printf("}[%2d]\n", cnt);
    return;
    }
    
    if(!cnt)
    fputs("{ ", stdout);
    
    printf("%d ", *start);
    printSubseq(start + 1, end, cnt + 1);
}
 
Текущее время: 05:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru