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

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

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

Показать сообщение отдельно
valeriikozlov
Эксперт C++
4663 / 2489 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
27.09.2009, 13:15     Цикл в цикле (for()).
Win32,
Вот исправленная Ваша программа с использованием алгоритма ящичной сортировки, по возрастанию:
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
#include "stdio.h"
#include "iostream"
#include "math.h"
using namespace std;
 
int main()
{
        int     i;              /* Переменная для циклов                        */
        int z, az, temp;
        double max = 0; /* Максимальный элемент массива         */
        double min = 0; /* Минимальный элемент массива          */
        int N;                  /* Количество элементов в массиве       */
        int M=10;                /* Количество "ящиков"  */
        int H;                  /* Размер ящика                               */
        double S[40];           /* Отсортированный массив                       */
        int K[40];              /* Массив для хранения номеров ящиков        */
        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
        };
 
        /* 1. Определяем колличество элементов в массиве. */
        N = sizeof(A) / sizeof(A[0]);
 
        /* 2. Определяем максимальный и минимальный элемент этого массива. */
        max=min=A[0];
        for ( i=0; i<N; i++ )
        {
        if ( A[i] > max )
        max = A[i];
        if ( A[i] < min )
        min = A[i];
        }
 
        /* 3. Определяем размер "ящиков"! */
        H = (fabs(max-min)) /M;
 
        /* 4. "Раскидываем" элементы по "ящикам". */
        for ( i=0; i<N; i++ )
        {
            K[i]=(fabs(max-A[i]))/(H+1);
        }
        /* 5. Сортируем элементы в ящиках и заносим отсортируемые элементы в массив S[]. */
        S[0]=min;
        for ( i=0; i<N; i++ )
        {
            if(A[i]==min)
                K[i]=-1;       
        }
        for ( i=M-1, az=1; i>0, az<N-1; i--)
        {   
            min=max;
            int y=1;
            while(y==1)
            {
            y=0;
            min=max;
            for (z=0;z<N;z++)
            {
                if(K[z]==i && A[z]<min && A[z]>=S[az-1])
                {
                    min=A[z];
                    y=1;
                    S[az]=min;
                    temp=z;                 
                }
                if(z==N-1 && y==1)
                {
                    az++;
                    K[temp]=-1;             
                }
            }
            }
        }
        S[N-1]=max;
        /* 4. Выводим на печать уже отсортированный массив. */
        for ( i=0; i<N; i++ )
        {
        cout << S[i] << " ";
        } 
        cin.get();
        return 0;
}
Немного пояснения к коду:
- Количество ящиков (переменная int M) может быть разным и наверное должно задаваться пользователем (на конечный результат это не влияет). Если хотите можете сделать чтобы М задавалось пользователем в начале программы. Я думаю Вы это сможете сделать сами.
- в п.4 ( "Раскидываем" элементы по "ящикам".) на самом деле не раскидываем по ящикам а просто каждому элементу A[i] сопоставляем номер ящика (который записан в K[i]). Так например при количестве ящиков (M=10) A[3]=23.7865, K[3]=2. Т.е. элементу А[3] сопоставлен второй ящик.


rrrFer,
При определенных значениях массива a[],
C++
1
2
3
        h=(max-min)/m+1;
        for(i=0;i<n;i++)
                v[int((-a[i]+max)/h)].push_back(a[i]);
в данной части кода, индекс вектора v[] может быть отрицательный.
 
Текущее время: 01:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru