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

Блочная сортировка массива - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ «Вычеркивание» строки и столбца из матрицы оформить как функцию потока http://www.cyberforum.ru/cpp-beginners/thread100621.html
«Вычеркивание» строки и столбца из матрицы оформить как функцию потока. Сначала вводятся элементы исходной матрицы, номер строки и столбца, затем осуществляется «вычеркивание» элемнетов из матрицы и только после этого на экран должен выводиться результат. подскажите с чего начать???=(((
C++ Функции ввода и вывода Задание: Ввести с клавиатуры и вывести на экран значения переменных разных типов согласно с форатами данных(форматный ввод-вывод) и без использования форматов. Использовать все фунцкции: _сprintf(), _cscanf(), _cputs(), _cgets(), getch(), putch(), getchar(), putchar(), gets(), puts(), рrintf(), scanf(), sprintf(), sscanf(). Помогите, пожалуйста, справиться с заданием...буду благодарна любой... http://www.cyberforum.ru/cpp-beginners/thread100616.html
C++ for или while (Какой цикл "лучше"?)
Привет. Немного неординарный вопрос, но может кто знает: Какой цикл выгоднее использовать, когда можно использовать оба? Насколько я понимаю for (i = 1; i <= n; ++i) {...;} и i = 1; while(i <= n) {...; ++i;} аналогичны (за исключением работы continue в них), так есть ли какое-то преимущество для ресурсов компьютера (для удобства чтения имхо for лучше) или нет?
C++ виртуальные функции
сделать какой либо из методов класса виртуальным #include<iostream.h> #include<stdio.h> class chislo { int a; public: void print() {
C++ Сложение 2-х чисел, классы... http://www.cyberforum.ru/cpp-beginners/thread100585.html
Нужно создать ф-цию вне класса, функция должна складывать 2 числа. Помогите, пожалуйста правильно оформить функцию. Вот что получилось, знаю, что не правильно, но правильно не получается))) # include <iostream> # include <conio.h> # include <stdio.h> class sum { public: int a, b, c; void vivod();};
C++ Иероглифы вместо русских букв Как сделать в С что бы вместо иероглифов были русские буквы подробнее

Показать сообщение отдельно
System16v
 Аватар для System16v
3 / 3 / 0
Регистрация: 19.02.2014
Сообщений: 115
07.04.2015, 17:27     Блочная сортировка массива
Дошел до этого задания по книге Дейтела. Вот может кому интересно выкладую код,насколько я понял, так и выполнил .Работает правильно,комментарии вставил чтоб более понятно было и специально сделал печать всех массивов на всех стадиях сортировки
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
#include <iostream>
#include <iomanip>
#include <vcl.h>
#include <cstdlib>
 
using namespace std;
 
void bucketSort(int[],int,int[][10]); // прототип функции
 
int main()
{
  const int size=10; // размер массивов
  int array[size]={5,8,19,12,97,3,45,23,77,100}; // массив который нужно отсортировать
  int array1[size][size]={0}; // массив в котором будут заноситься числа
  bucketSort(array,size,array1); // вызов функции
  cout <<endl;
  system("pause");
  return 0;
}
 
void bucketSort(int ar[],int x,int ar1[][10]) // передаем функции оба массива
{
    // t - индекс элемента,куда переносить с блочного массива
    // обратно в 1ый массив
   int t=0;
   // d - разряды чисел.
   int d=1;
        // выполняем цикл 3 раза.Т.к. у нас наибольшее число 100 с 3мя разрядами
        // 1-ый для d=1,2-ой для d=10, 3ий для d=100
        for(int z=0;z<3;z++)
        {
           t=0;  // сброс счетчика в 0 при каждом проходе цикла
           for(int i=0;i<x;i++)
           {
        // каждый элемент 1го массива, приваиваем 2ому массиву,где строка
        // которого получается путём деления i на d и остаток от деления
        // на 10, строка остается та же i
             ar1[(ar[i]/d)%10][i]=ar[i];
           }
        // присваеваем обратно элементы со 2го массива,не равные 0,
        // обратно в 1ый массив по порядку, в котором они распределились
           for(int i=0;i<x;i++)
           {
              for(int j=0;j<x;j++)
                if(ar1[i][j]!=0)
                {
                   ar[t]=ar1[i][j];
                   t++;
                }
           }
        // для наглядности - печать 2го блочного массива и 1го массива
        cout << setw(3) << "    0 " << "   1 " << "   2 "
             << "   3 " << "   4 "
             << "   5 " << "   6 "
             << "   7 " << "   8 "
             << "   9 " << endl << endl;
 
           for(int i=0;i<x;i++)
           {
              cout << i << " ";
              for(int j=0;j<x;j++)
                 cout << setw(3) << ar1[i][j] << "  ";
              cout << endl;
           }
           cout << endl << endl << "array[10] = ";
           for(int i=0;i<x;i++)
               cout << ar[i] << " ";
           cout << endl << endl;
        // обнуляем блочный массив
           for(int i=0;i<x;i++)
              for(int j=0;j<x;j++)
                 ar1[i][j]=0;
        // в конце каждого цикла умножаем d на 10 для следующего разряда
           d*=10;
        }
}
 
Текущее время: 05:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru