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

Пирамидальная сортировка. Считать из файла массив - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Даны целые числа a1, a2,.a10. Верно ли, что их сумма есть нечетное число http://www.cyberforum.ru/cpp-beginners/thread1134563.html
Здрасте) Помогите пожалуйста. Даны целые числа a1, a2,...a10. Верно ли, что их сумма есть нечетное число. Буду благодарен невероятно.
C++ Дано натуральное число n. Определить, является ли високосным год с таким номером Ребята , помогите справиться с задачей. Ни как не получается решить.( "Год является високосным, если его год кратен 4, однако из кратных 100 високосными являются, лишь кратные 400, например, 1700, 1800, и 1900-невисокосные годы, 2000-високосный. Дано натуральное число n. Определить, является ли високосным год с таким номером." Буду премного благодарен вам. http://www.cyberforum.ru/cpp-beginners/thread1134558.html
C++ Удалить из первой последовательности каждый символ, принадлежащий и второй
Даны 2 символьные последовательности. Удалить из первой последовательности каждый символ, принадлежащий и второй последовательности.Распечатать заданные и образованную последовательности. То есть нужно удалить совместные символы.
C++ Вычислить сумму элементов стоящих после отрицательного
В одномерном массиве вычислить сумму элементов стоящих после первого отрицательного. P.S. мне нужно только функцию по вычислению суммы P.S.S Если надо могу скинуть код того что уже есть.
C++ Error c1902 program database manager mismatch http://www.cyberforum.ru/cpp-beginners/thread1134504.html
Данная ошибка появляется на программу "Hello world" на C и C++. В среде VS2010 VS2012. Я решил эту проблему, но хотел бы услышать мнение по поводу такого решения. C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\mspdb100.dll или mspdb110.dll переименовал в _mspdb100.dll соответственно _mspdb110.dll и скопировал в эту папку mspdb80.dll. Компиляция через среду наладилась после этого, но меня...
C++ Написать программу, считывающую данные о товарах из файла и заносящую ее в структуру Написать программу для обработки данных о различных товарах. Каждый товар характеризуется следующими данными: название товара, название магазина, цена товара, количество единиц товара. Пример данных о товарах: молоко Командор 39 200 1.Написать программу для обработки данных о товарах описать структуру, содержащую все вышеперечисленные поля 2.выполнить считывание данных о товарах из... подробнее

Показать сообщение отдельно
aksdaqg
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 115

Пирамидальная сортировка. Считать из файла массив - C++

31.03.2014, 09:58. Просмотров 564. Ответов 3
Метки (Все метки)

реализовать алгоритм пирамидальной сортировки исходного массива размерностью 250< n <1000, расположенном в некотором исходном файле.
Вот что получилось. Но мне нужно зарандомить файл целыми числами и считать из него массив и отсортировать.
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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <cstdlib>
 
using namespace std;
 
void iswap(int &n1, int &n2)
{
    int temp = n1;
    n1 = n2;
    n2 = temp;
}
 
int main()
{
    int const n = 100;
    int a[n];
    for ( int i = 0; i < n; ++i ) { a[i] = n - i; cout << a[i] << " "; }
    int sh = 0; //смещение
    bool b = false;
    for(;;)
    {
    b = false;
    for ( int i = 0; i < n; i++ )
    {
        if( i * 2 + 2 + sh < n )
        {
        if( ( a[i + sh] > /*<*/ a[i * 2 + 1 + sh] ) || ( a[i + sh] > /*<*/ a[i * 2 + 2 + sh] ) )
        {
            if ( a[i * 2 + 1 + sh] < /*>*/ a[i * 2 + 2 + sh] ) 
            {
            iswap( a[i + sh], a[i * 2 + 1 + sh] );
            b = true;
            }
            else if ( a[i * 2 + 2 + sh] < /*>*/ a[ i * 2 + 1 + sh]) 
                 {
                     iswap( a[ i + sh], a[i * 2 + 2 + sh]);
                     b = true;
                 }
        }
            if( a[i*2 + 2 + sh] < /*>*/ a[i*2 + 1 + sh] ) 
            {
            iswap( a[i*2+1+sh], a[i * 2 +2+ sh] );
                        b = true;
            }
        }
        else if( i * 2 + 1 + sh < n )
             {
                 if( a[i + sh] > /*<*/ a[ i * 2 + 1 + sh] )
                 {
                     iswap( a[i + sh], a[i * 2 + 1 + sh] );
                     b = true;
                 }
             }
    }
    if (!b) sh++;
    if ( sh + 2 == n ) break; 
    }  //конец сортировки
 
 
    cout << endl << endl;
    for ( int i = 0; i < n; ++i ) cout << a[i] << " "; 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru