M
maximka21
Дана последовательность ,расположить ее ненулевые элементы по убыванию.на языке СИ,не важно откуда вводить данные,можно с клавиатуры,можно и сразу в программе.Решите пожалуйста,кому это не очень трудно
B правой части каждого сообщения есть стрелки ⇧ и ⇩. Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок ✔ в правой части сообщения.
Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе
Дана последовательность ,расположить ее ненулевые элементы по убыванию.на языке СИ,не важно откуда вводить данные,можно с клавиатуры,можно и сразу в программе.Решите пожалуйста,кому это не очень трудно
#include "stdafx.h"
#include "string.h"
#include <iostream>
#include "sort.h"
#include <time.h>
#include <conio.h>
#include "memory.h"
#include <locale>
#include <Windows.h>
using namespace std;
#define BEGIN 100 // Начальное значение количества элементов для генерации.
#define ABSOLUT 200 // Абсолютное значение - максимум элементов для генерации.
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,"rus");
cout << endl;
cout << " < Методы Сортировок > - Copyright(2009) RiCrO(r) \n\n";
cout << "============================================================================
====\n"; // Перед этими символами жми Backspace
cout << "||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||\n"; / Перед этими символами жми Backspace
cout << "============================================================================
====\n";
cout << " Пожалуйста, подождите. Идёт загрузка";
Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500);
cout << endl;
cout << endl;
cout << " Данная программа не предназначена для вывода большого количества элементов для сортировки.\n\n";
cout << " Поэтому рекомендуем ввести меньшее количество элементов для сортировки или же \n выключить вывод этих элементов на экран.";
Sleep(6000);
cout << endl;
cout << endl;
cout << "============================================================================
====\n";
cout << "||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||\n";
cout << "============================================================================
====\n";
int k[ABSOLUT], f[ABSOLUT];
char Offnumbers;
char Lastchance;
clock_t t1, t2;
GetRandKey (1);
cout << " Параметры: \n\n";
cout << "============================================================================
====\n";
cout << " Начальное значение для генерации: "<< BEGIN << " чисел.\n";
cout << " Абсолютное значение - максимум для генерации: "<< ABSOLUT << " чисел.\n\n";
cout << "============================================================================
====\n";
Sleep(2000);
if ( BEGIN > 1000 ) { cout << " ВНИМАНИЕ! Задано высокое начальное значение для генерации!\n Не рекомендуем включать операцию вывода на экран!";}
if ( BEGIN < 1000 ) { cout << " Операцию вывода на экран можно активировать.";}
cout << endl;
cout << endl;
cout << "============================================================================
====\n";
cout << "||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||\n";
cout << "============================================================================
====\n";
Sleep(2000);
cout << endl;
cout << " Нажмите <Y> или <y>, если вы хотите просмотреть сгенерированные числа. \n Нажмите <N> или <n>, если хотите просмотреть только результат замера времени работы цикла.\n\n\n";
cout << " Ваш выбор: ";
cin >> Offnumbers;
cout << endl;
if((Offnumbers == 'Y')||(Offnumbers == 'y'))
{
cout <<" Операция вывода на экран сгенерированных чисел: Включена пользователем.";
cout << endl;
cout << endl;
Sleep(2000);
cout <<" Подтверждение: ";
cin >> Lastchance;
cout << endl;
Sleep(2000);
if(BEGIN > 1000)
{
cout << "============================================================================
====\n";
cout <<" ВНИМАНИЕ! Операция вывода на экран сгенерированных чисел включена!. \n\n Активация этой операции может привести к зависанию компьютера или другим нежелательным последствиям которые могут привести к ошибке работы операционной системы!\n\n Вы уверены что хотите оставить эту функцию включённой?";
cout << endl;
cout << " Ваш выбор: ";
cin >> Lastchance;
cout << endl;
cout << "============================================================================
====\n";
}
if((Lastchance == 'Y')||(Lastchance == 'y')) {
Sleep(1000);
cout << " Пожалуйста, подождите. Идёт активация операций";
Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500);
cout << endl;
cout <<" Операция вывода на экран сгенерированных чисел: Активирована пользователем.";
Sleep(3000);
cout << endl;
cout <<" Операция вывода на экран отсортированных чисел: Активирована пользователем.";}
if((Lastchance == 'N')||(Lastchance == 'n')) goto loop;
Sleep(1000);
cout << endl;
cout << endl;
cout << " Пожалуйста, подождите. Идёт загрузка операции";
Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500);cout << "."; Sleep(500); cout << "."; Sleep(500);
}
if((Offnumbers == 'N')||(Offnumbers == 'n'))
{ loop:
Offnumbers = 'N';
cout <<" Операция вывода на экран сгенерированных чисел: Отменена пользователем.";
cout << endl;
Sleep(1000);
cout <<" Операция вывода на экран отсортированных чисел: Отменена пользователем.";
Sleep(1000);
cout << endl;
cout << endl;
cout << " Пожалуйста, подождите. Идёт загрузка операции"; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500);cout << "."; Sleep(500); cout << "."; Sleep(500);
}
cout << endl;
cout << endl;
for (int i=0; i<ABSOLUT; i++) f[i]=GetRandKey(0);
for (int n = BEGIN; n<=ABSOLUT; n+=BEGIN)
{
cout << "============================================================================
====\n";
cout << "||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||\n";
cout << "============================================================================
====\n";
cout <<"\n <" << n <<"> элементов для генерации RGEN \n\n" << endl;
cout << "============================================================================
====\n";
cout << " Сортировка методом вставки \n\n";
cout << "============================================================================
====\n";
cout << " RGEN: ";
if((Offnumbers == 'N')||(Offnumbers == 'n')){ cout <<"Отменён пользователем.\n\n";}
memcpy(k,f,n*sizeof(int));
while (true)
{
if((Offnumbers == 'Y')||(Offnumbers == 'y'))Print (k,n);break;Print (k,n);break;
if((Offnumbers == 'N')||(Offnumbers == 'n')) break;
}
cout << "============================================================================
====\n";
Sleep(1000);
cout << "Сгенерированно... ";
cout << endl;
cout << endl;
Sleep(3000);
cout << "Активация операции сортировки... ";
Sleep(1000);
cout << endl;
cout << endl;
cout << "============================================================================
====\n";
cout << "Результат после сортировки: ";
if((Offnumbers == 'N')||(Offnumbers == 'n')){ cout <<"Отменён пользователем.\n\n";}
t1 = clock();
int SA = SortVstavka(k, n);
t2 = clock();
cout << "Loading";
Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << ".\n\n"; Sleep(500);
while ((Offnumbers == 'Y')||(Offnumbers == 'y'))
{
if((Offnumbers == 'Y')||(Offnumbers == 'y'))Print (k,n); break;
if((Offnumbers == 'N')||(Offnumbers == 'n')) break;
}
Sleep(3000);
cout << "============================================================================
====\n";
cout << "Итоговое время замера времени выполнения цикла сортировки: ";
cout <<ends <<((double)(t2-t1))/((double)CLOCKS_PER_SEC)<<ends << ends;
Sleep(5000);
cout << endl;
cout << endl;
cout << "============================================================================
====\n";
cout << "||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||\n";
cout << "============================================================================
====\n";
cout << " Cортировка методом выбора\n\n";
cout << "============================================================================
====\n";
cout << " RGEN: ";
if((Offnumbers == 'N')||(Offnumbers == 'n')){ cout <<"Отменён пользователем.\n\n";}
memcpy(k,f,n*sizeof(int));
while (true)
{
if((Offnumbers == 'Y')||(Offnumbers == 'y'))Print (k,n);break;Print (k,n);break;
if((Offnumbers == 'N')||(Offnumbers == 'n')) break;
}
cout << "============================================================================
====\n";
Sleep(1000);
cout << "Сгенерированно... ";
cout << endl;
cout << endl;
Sleep(3000);
cout << endl;
cout << "Активация операции сортировки... ";
Sleep(1000);
cout << endl;
cout << endl;
cout << "============================================================================
====\n";
cout << "Результат после сортировки: ";
if((Offnumbers == 'N')||(Offnumbers == 'n')){ cout <<"Отменён пользователем.\n\n";}
t1 = clock();
int SB = SortPrVybora(k, n);
t2 = clock();
cout << "Loading";
Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << ".\n\n"; Sleep(500);
while (true)
{
if((Offnumbers == 'Y')||(Offnumbers == 'y'))Print (k,n);break;Print (k,n);break;
if((Offnumbers == 'N')||(Offnumbers == 'n')) break;
}
cout << "============================================================================
====\n";
cout << "Итоговое время замера времени выполнения цикла сортировки: ";
cout <<ends <<((double)(t2-t1))/((double)CLOCKS_PER_SEC)<<ends << ends;
Sleep(5000);
cout << endl;
cout << endl;
cout << "============================================================================
====\n";
cout << "||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||\n";
cout << "============================================================================
====\n";
cout << " Сортировка методом -пузырька-\n\n";
cout << "============================================================================
====\n";
cout << " RGEN: ";
if((Offnumbers == 'N')||(Offnumbers == 'n')){ cout <<"Отменён пользователем.\n\n";}
memcpy(k,f,n*sizeof(int));
while (true)
{
if((Offnumbers == 'Y')||(Offnumbers == 'y'))Print (k,n);break;Print (k,n);break;
if((Offnumbers == 'N')||(Offnumbers == 'n')) break;
}
cout << "============================================================================
====\n";
Sleep(1000);
cout << "Сгенерированно... ";
cout << endl;
cout << endl;
Sleep(3000);
cout << endl;
cout << "Активация операции сортировки... ";
Sleep(1000);
cout << endl;
cout << endl;
cout << "============================================================================
====\n";
cout << "Результат после сортировки: ";
if((Offnumbers == 'N')||(Offnumbers == 'n')){ cout <<"Отменён пользователем.\n\n";}
t1 = clock();
int SC = SortPuz(k, n);
t2 = clock();
cout << "Loading";
Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << ".\n\n"; Sleep(500);
while (true)
{
if((Offnumbers == 'Y')||(Offnumbers == 'y'))Print (k,n);break;Print (k,n);break;
if((Offnumbers == 'N')||(Offnumbers == 'n')) break;
}
cout << "============================================================================
====\n";
cout << "Итоговое время замера времени выполнения цикла сортировки: ";
cout <<ends <<((double)(t2-t1))/((double)CLOCKS_PER_SEC)<<ends << ends;
Sleep(5000);
cout << endl;
cout << endl;
cout << "============================================================================
====\n";
cout << "||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||\n";
cout << "============================================================================
====\n";
cout << " Сортировка Шейкера \n\n";
cout << "============================================================================
====\n";
cout << " RGEN: ";
if((Offnumbers == 'N')||(Offnumbers == 'n')){ cout <<"Отменён пользователем.\n\n";}
memcpy(k,f,n*sizeof(int));
while (true)
{
if((Offnumbers == 'Y')||(Offnumbers == 'y'))Print (k,n);break;Print (k,n);break;
if((Offnumbers == 'N')||(Offnumbers == 'n')) break;
}
cout << "============================================================================
====\n";
Sleep(1000);
cout << "Сгенерированно... ";
cout << endl;
cout << endl;
Sleep(3000);
cout << endl;
cout << "Активация операции сортировки... ";
Sleep(1000);
cout << endl;
cout << endl;
cout << "============================================================================
====\n";
cout << "Результат после сортировки: ";
if((Offnumbers == 'N')||(Offnumbers == 'n')){ cout <<"Отменён пользователем.\n\n";}
t1 = clock();
int SD = SortSheiker(k, n);
t2 = clock();
cout << "Loading";
Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << ".\n\n"; Sleep(500);
while (true)
{
if((Offnumbers == 'Y')||(Offnumbers == 'y'))Print (k,n);break;Print (k,n);break;
if((Offnumbers == 'N')||(Offnumbers == 'n')) break;
}
cout << "============================================================================
====\n";
cout << "Итоговое время замера времени выполнения цикла сортировки: ";
cout <<ends <<((double)(t2-t1))/((double)CLOCKS_PER_SEC)<<ends << ends;
Sleep(5000);
cout << endl;
cout << endl;
cout << "============================================================================
====\n";
cout << "||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||\n";
cout << "============================================================================
====\n";
cout << " Сортировка Шелла \n\n";
cout << "============================================================================
====\n";
cout << " RGEN: ";
if((Offnumbers == 'N')||(Offnumbers == 'n')){ cout <<"Отменён пользователем.\n\n";}
memcpy(k,f,n*sizeof(int));
while (true)
{
if((Offnumbers == 'Y')||(Offnumbers == 'y'))Print (k,n);break;Print (k,n);break;
if((Offnumbers == 'N')||(Offnumbers == 'n')) break;
}
cout << "============================================================================
====\n";
Sleep(1000);
cout << "Сгенерированно... ";
cout << endl;
cout << endl;
Sleep(3000);
cout << endl;
cout << "Активация операции сортировки... ";
Sleep(1000);
cout << endl;
cout << endl;
cout << "============================================================================
====\n";
cout << "Результат после сортировки: ";
if((Offnumbers == 'N')||(Offnumbers == 'n')){ cout <<"Отменён пользователем.\n\n";}
t1 = clock();
int SE = SortShella(k, n);
t2 = clock();
cout << "Loading";
Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << ".\n\n"; Sleep(500);
while (true)
{
if((Offnumbers == 'Y')||(Offnumbers == 'y'))Print (k,n);break;Print (k,n);break;
if((Offnumbers == 'N')||(Offnumbers == 'n')) break;
}
cout << "============================================================================
====\n";
cout << "Итоговое время замера времени выполнения цикла сортировки: ";
cout <<ends <<((double)(t2-t1))/((double)CLOCKS_PER_SEC)<<ends << ends;
Sleep(5000);
cout << endl;
cout << endl;
cout << "============================================================================
====\n";
cout << "||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||\n";
cout << "============================================================================
====\n";
cout << " Сортировка подсчётом \n\n";
cout << "============================================================================
====\n";
cout << " RGEN: ";
if((Offnumbers == 'N')||(Offnumbers == 'n')){ cout <<"Отменён пользователем.\n\n";}
memcpy(k,f,n*sizeof(int));
while (true)
{
if((Offnumbers == 'Y')||(Offnumbers == 'y'))Print (k,n);break;Print (k,n);break;
if((Offnumbers == 'N')||(Offnumbers == 'n')) break;
}
cout << "============================================================================
====\n";
Sleep(1000);
cout << "Сгенерированно... ";
cout << endl;
cout << endl;
Sleep(3000);
cout << endl;
cout << "Активация операции сортировки... ";
Sleep(1000);
cout << endl;
cout << endl;
cout << "============================================================================
====\n";
cout << "Результат после сортировки: ";
if((Offnumbers == 'N')||(Offnumbers == 'n')){ cout <<"Отменён пользователем.\n\n";}
t1 = clock();
int SF = Podschet(k, n);
t2 = clock();
cout << "Loading";
Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << "."; Sleep(500); cout << ".\n\n"; Sleep(500);
while (true)
{
if((Offnumbers == 'Y')||(Offnumbers == 'y'))Print (k,n);break;Print (k,n);break;
if((Offnumbers == 'N')||(Offnumbers == 'n')) break;
}
cout << "============================================================================
====\n";
cout << "Итоговое время замера времени выполнения цикла сортировки: ";
cout << ends <<((double)(t2-t1))/((double)CLOCKS_PER_SEC)<< ends << ends;
Sleep(5000);
cout << endl;
cout << endl;
cout << "============================================================================
====\n";
cout << "||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||\n";
cout << "============================================================================
====\n";
cout << endl;
cout << endl;
}
return 0;
}
#include "stdafx.h"
#include <iostream>
#include "string.h"
#include "sort.h"
#include "time.h"
using namespace std;
int GetRandKey(int reg = 0)
{
if (reg > 0) srand((unsigned)time(NULL));
int rmin = 0;
int rmax = 100;
return (int)(((double) rand()/(double)RAND_MAX)*(rmax-rmin) + rmin);
}
void Print (int m[], int n)
{
for (int i=0; i<n; i++)
cout << m[i] << ends;
cout << endl;
}
int SortVstavka (int m[], int n)
{
int buf, k;
for (int i=1; i<n; i++)
{
buf = m[i];
k = i-1;
while (m[k]>buf) m[k+1] = m[k--];
m[k+1] = buf;
}
return *m;
}
int SortPrVybora (int m[], int n)
{
for (int i=0; i<n; i++)
for (int j=i+1; j<+n; j++)
{
if (m[i]>m[j])
{
int buf = m[i];
m[i]=m[j];
m[j]=buf;
}
}
return *m;
}
int SortPuz (int m[], int n)
{
for (int i=0; i<n; i++)
for (int j=0; j<n-i-1; j++)
{
if (m[j]>m[j+1])
{
int buf = m[j];
m[j] = m[j+1];
m[j+1] = buf;
}
}
return *m;
}
int SortSheiker (int m[], int n)
{
bool end = false;
for (int i=0; (i<n) && !end; i++)
{
end = true;
for (int j=0; j<n-i-1; j++)
{
if (m[j]>m[j+1])
{
int buf = m[j];
m[j] = m[j+1];
m[j+1] = buf;
end = false;
}
}
}
return *m;
}
int SortShella(int m[], int n)
{
int buf;
bool sort;
for (int g = n/2; g > 0; g/=2)
{
do
{
sort = false;
for (int i = 0, j = g; j < n; i++,j++)
{
if (m[i] > m[j])
{
sort = true;
buf = m[i];
m[i] = m[j];
m[j] = buf;
}
}
} while (sort);
}
return *m;
}
int Podschet(int m[],int n)
{ int i,j ,cnt;
int temp[5000];
for (i=0; i < n; i++)
{
for ( cnt=0,j=0; j<n; j++)
if (m[j] < m[i]) cnt++;
temp[cnt]=m[i];
}
return 0;
}
#pragma once
int SortVstavka (int m[], int n);
int SortPrVybora (int m[], int n);
int SortPuz (int m[], int n);
int SortSheiker (int m[], int n);
int SortShella(int m[], int n);
int GetRandKey(int reg);
int Podschet(int m[],int n);
void Print (int m[], int n);
Обучение наступательной кибербезопасности в игровой форме. Начать игру!