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

Цикл в цикле (for()). - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перезагрузка операторов Помогите http://www.cyberforum.ru/cpp-beginners/thread52720.html
Добрый день...у меня к вам просьба Помогите пожалуйста написать полностью программу с условием: 5. Объявите новый тип данных время. Перезагрузите следующие операторы: • + с параметром; • ++; • *...
C++ помогите найти ошибку доброе время суток Столкнулся с такой проблемой, надо сделать прогу которая: Вводим текст, и из этого текста удаляем слова которые состают из не чётных количество символов ну например Он это 2... http://www.cyberforum.ru/cpp-beginners/thread52692.html
C++ Написать стек на базе массива, и на базе связного списка
Всем привет. Помогите пожалуйста ! Надо написать стек на базе массива, и на базе связного списка. И еще очередь на базе связного списка. Скиньте пожалуйста информацию как это сделать и...
Сохранение в текстовый файл C++
Есть вот такой примерный код проги, которая должна считать значение ф-ции с определённым шагом(не меньше 10 значений), и считать её в конкретной задаваемой точке. Вопрос: как сделать чтобы эта...
C++ Задача с символом строк http://www.cyberforum.ru/cpp-beginners/thread52634.html
Помогите решить: сколько в символьной строке слов, имеющие в середине слова средний символ(символ который находится в середине слова)
C++ с чего начать я сейчас обучаюсь в одном заведении (чтото вроди кружка) C#-у. нам там пока дают базу но ее я вроди как и знаю. учитель видит что я ничего нового не узнаю предложил мне перейти на С, но там уже... подробнее

Показать сообщение отдельно
Win32
25 / 24 / 0
Регистрация: 18.08.2009
Сообщений: 126
27.09.2009, 17:37  [ТС]
1. ОГРОМНОЕ ВСЕМ СПАСИБО за помощь!!! Вы все прям мегакулхацкеры джедаи )))))

2.
valeriikozlov писал:
Количество ящиков (переменная int M) может быть разным и наверное должно задаваться пользователем (на конечный результат это не влияет).
В данном агоритме количество ящиков вычесляется по формуле: m = max / 2 + 1;

3. Ещё раз всем огромное спасибо!!!!

P.S. valeriikozlov, спасибо, но "под себя" переделал ещё вчера....

Вот так сделал:
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
#include "stdafx.h"
#include "windows.h" 
#include <iostream>
#include <vector>
 
using std::vector   ;
using std::cout     ;
using std::wcout    ;
using std::locale   ;
using std::cin      ;
using std::endl     ;
 
int main()
{ 
 
    wcout.imbue(locale(".866")) ;
 
    double a[] = {      /* Определяем элементы нашего массива.                      */
    14.2594,        7.6226,         8.1113,         23.7865,
    20.1796,        27.3322,        10.2708,        30.1469,
    11.0851,        24.4584,        20.0111,        27.8091,
    1.4991,         31.7734,        0.0454,         5.3713,
    31.1648,        29.7484,        29.4232,        -2.8434,
    6.6163,         22.2269,        10.5985,        0.6183,
    19.8660,        -1.7290,        19.3626,        33.6190,
    20.4391,        15.6690,        8.3869,         19.8722,
    15.8876,        9.4932,         8.0816,         10.4655,
    0.3828,         6.9225,         26.5060,        15.4990
    };
 
    double max    ;     /* Переменная для хранения максимального элемента.      */
    double min    ;     /* Переменная для хранения минимального элемента.       */
    double h      ;     /* Величина h                                           */
    double t1     ;     /* Переменная для хранения временных жанных из ящиков   */
 
    int n         ;     /* Переменная для хранения количества элементов массива */
    int i,l       ;     /* Переменная для циклов                                */
    int m         ;     /* Переменная для хранения количества ящиков            */
    int j         ;     /* Переменная для хранения */
    int tmp, tmp2 ;     /* Переменные для хранения временных данных из ящиков   */
                        /* Объявляем вектор для сортировки.                     */
    vector <double> *v ;
                        /* Определяем количество элементов в массиве            */
    n = sizeof ( a ) / sizeof ( a[0] ) ;
    double A[40]  ;     /* Создаем массив для хранения отсортированных элементов*/
                        /* Вывдоим на печать исходный массив элементов          */
    wcout << L"Массив исходных чисел: " << endl ;
    for ( i=0; i<40; i++ )
    cout << a[i] << " " ;
    cout << endl << endl ;
                        /* Определяем максимальный и минимальный элемент массива*/
    min = max = a[0] ;
    for( i=1; i<n; i++ )
    {
        if( a[i] > max )
            max = a[i] ;
        if( a[i] < min )
            min = a[i] ;
    }
                        /* Определяем количество "ящиков".                       */
    m = max / 2 ;
                        /* Задаем векторную величину.                            */
    v = new vector <double> [m] ;
                        /* Задаем величину h                                     */
    h =( max - min ) / m + 1 ;
                        /* Выполняем алгоритм сортировки                         */
    for ( i=0; i<n; i++ )
    v [ int ( ( -a[i] + max ) /h ) ] . push_back ( a[i] ) ;
 
    for ( i=0; i<m; i++ )
        for ( j=0, tmp=v[i] . size(); j<tmp; j++ )
            {
            for ( l=j+1, tmp2=j; l<tmp; l++ )
                if ( v[i][l]>v[i][tmp2] )
                    tmp2 = l ;
                    t1 = v [i][j] ;
                    v[i][j] = v[i][tmp2] ;
                    v[i][tmp2] = t1 ;
            }
    for ( i=0, l=0; i<m; i++ )
    for ( j=0, tmp=v[i] . size(); j<tmp; j++, l++ )
    a[l] = v[i][j] ;
 
    int plus = 39 ;        /* Переменная для инвертирования упорядоченного массива */ 
                                                   /* Ивертируем полеченный массив */
    for ( i=0; i<n; i++ )
    {
        A[plus] = a[i] ;
        plus = plus - 1 ;
    }
    
                                      /* Выводим отсортированный массив на печать. */
    wcout << L"Отсорированный в порядке возрастания исходный массив: " << endl ;
    for ( i=0; i<n; i++ )
    {
        cout << A[i] << " " ;
    }
    cout << endl << endl ;
    system (  "pause" ) ;
 
    return 0 ;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru