Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++] необходима блок схема


Автор: gilardino 11.1.2011, 14:51
Код
#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <cstdlib>
#include <iostream>
#include <cstdlib>
using namespace std;


int *Create(int n)
{//Создание массива
    if (n <= 99999 && n > 1)
    {
        int *arr = new int [n];
        for (int i = 0; i < n; i++)//Заполнение массива
            arr[i] = i;
        int k;
        for (int i = 0; i < n; i++)//Перемешивание элементов
        {
            k = rand() % n;
            int z = arr[i];
            arr[i] = arr[k];
            arr[k] = z;
        }
        return arr;
    } else return NULL;
}

void Show(int *arr, int n)
{//Вывод массива на экран
    cout << endl;
    for (int i = 0; i < n; i++)
        cout << arr[i] << " ";
    cout << endl;
}

void Copy(int *arr1, int *arr2, int n)
{//Копирование массива из arr1 в arr2
    for (int i = 0; i < n; i++)
        arr2[i] = arr1[i];
}

void PocketSortArray(int *arr, int n)
{//Сортировка с дополнительным массивом
    int moves = 0;
    int *sort = new int [n];
    for (int i = 0; i < n; i++, moves++)
        sort[arr[i]] = arr[i];
    Show(sort, n);
    cout << endl << "Сравнений = 0. Пересылок = " << moves << endl;
    delete[] sort;
}

void PocketSort(int *arr, int n)
{//Сортировка без дополнительного массива
    int moves=0, srav=0;
    for (int i = 0; i < n; i++)
        while(++srav && arr[i] != i)
        {
            int tmp = arr[i];
            arr[i] = arr[tmp];
            arr[tmp] = tmp;
            moves++;
        }
    Show(arr ,n);
    cout << endl << "Сравнений = " << srav << " Пересылок = " << moves << endl;
}

int _tmain(int argc, _TCHAR* argv[])
{//Точка входа в программу
    srand(1);
    setlocale(LC_ALL, "Russian");
    int *mas, *sortMas;
    int n = -1;
    char action;
    do
    {
        cout << endl << "1. Создать массив;"
        << endl << "2. Показать исходный массив;"
        << endl << "3. Карманная сортировка с дополнительным массивом;"
        << endl << "4. Карманная сортировка без дополнительного массива;"
        << endl << "0. Выход." << endl;
        action = getche(); //Ввод символа
        switch(action)//Выбор действия
        {
        case '1':
            if (n > 0)
            {
                delete[] mas;//Освобождение памяти
                delete[] sortMas;
            }
            cout << endl << "Введите размер массива = ";
            cin >> n;
            mas = Create(n); //Создание массива
            if (mas != NULL)
            {
                sortMas = new int [n];//Выделение памяти
                cout << endl << "Массив элементов создан." << endl;
            }
            else
            {
                cout << endl << "Невозможно создать массив." << endl;
                n = 0;
            }
            break;

        case '2':
            if (n > 0) Show(mas, n); //Вывод массива на экран
            else cout << endl << "Сначала создайте массив." << endl;
            break;

        case '3':
            if (n > 0)
            {        
                Copy(mas, sortMas, n); //Создание копии массива
                PocketSortArray(sortMas, n); //Сортировка массива
            } else cout << endl << "Сначала создайте массив." << endl;            
            break;

        case '4':
            if (n > 0)
            {
                Copy(mas, sortMas, n); //Создание копии массива
                PocketSort(sortMas, n); //Сортировка массива
            } else cout << endl << "Сначала создайте массив." << endl;
            break;

        case '0':
            break;

            default:
            cout << endl << "Выберите один из предлогаемых вариантов." << endl;
            break;
        }
    } while(action != '0');
    //cin.get();//Ожидание нажатия любой клавиши
}



Модератор: Не забываем пользоваться кнопочкой "Код"

Автор: bsa 11.1.2011, 22:05
Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)