#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#define true 1
//prototypes of the functions
void inputOfArray();
void inputRandom();
void inputKeyboard();
void algorithmExec();
void outputOfArray();
int minSearch();
int maxSearch();
int mainMenu();
//main array
float mainArray[ 100 ];
int number = 0;
void main() {
char ch[500] ;int k;
while(true)
{
printf( "Input the number of elements of the array from 1 to 100:\n" );
//scanf( "%9d%1[^\n]",&number );
k= scanf("%9d%1[^\n]", &number, ch);
fflush(stdin);
if(k == 1) {
break;
} else {
printf("\nError!\n");
}
if( number > 100 || number < 0 )
printf("\nEnter retry!\n");
else{
//fflush(stdin);//хуй его знает, нужно или нет, ЗАЕБАЛО ВСЕ:)
break;
}
printf( "\n" );
}
/*while(true)
{
printf( "Input the number of elements of the array from 1 to 100:\n" );
scanf( "%d",&number );
while(true)
{
while ((ch=getchar()) != '\n')
putchar(ch);
break;
}
if( number > 100 || number < 0 )
printf("\nEnter retry!\n");
else{
//fflush(stdin);//хуй его знает, нужно или нет, ЗАЕБАЛО ВСЕ:)
break;
}
printf( "\n" );
}*/
printf( "\nElements in the array. Choose the item in Main Menu:\n");
printf( "\n" );
while( true ) {
//menu items
switch( mainMenu() ) {
case 1:
inputOfArray();
break;
case 2:
outputOfArray();
break;
case 3:
algorithmExec();
break;
case 4:
return;
break;
default:
printf( "Error of the input. Try again.\n" );
break;
}
printf( "\nPlease, press any key to continue." );
/*
returns the next character read from the console,
but does not display this symbol on the screen.
*/
getch();
//clean the screen
system( "cls" );
}
}
//function of main menu
int mainMenu() {
printf( "Main Menu:\n1. Input the array.\n2. Output the array.\n3. Run the task.\n4. Exit\n" );
int solution; char ch;
//scanf( "%d", &solution );
while(true)
{
printf("Your choise: ");
scanf( "%d", &solution );
while(true)
{
while ((ch=getchar()) != '\n')
putchar(ch);
break;
}
if( solution > 4 || solution < 0 )
printf("\nEnter retry!\n");
else
break;
printf( "\n" );
}
return solution;
}
//Function, which is responsible for entering the array.
void inputOfArray() {
printf( "\nWay to enter array:\n1. Random numbers.\n2. Keyboard.\nYour choise: " );
int solution; char ch;
//scanf( "%d", &solution );
while(true)
{
printf("Your choise: ");
scanf( "%d", &solution );
while(true)
{
while ((ch=getchar()) != '\n')
putchar(ch);
break;
}
if( solution > 4 || solution < 0 )
printf("\nEnter retry!\n");
else
break;
printf( "\n" );
}
//the second menu
switch( solution ) {
case 1:
inputRandom();
break;
case 2:
inputKeyboard();
break;
default:
printf( "Input error. Try it again.\n" );
break;
}
}
//Directly to the algorithm
void algorithmExec() {
//count - counter, coordinate is the position of the element
int count = 0, coordinate;
while( count != number - 1 ) {
coordinate = minSearch();
mainArray[ coordinate ] = 0;
count++;
if( count != number - 1 ) {
coordinate = maxSearch();
mainArray[ coordinate ] = 0;
count++;
}
if( count == number - 1 )
coordinate = maxSearch();
}
outputOfArray();
//output the results
printf( "\nElement: %f; Position of the element: %d\n",mainArray[ coordinate ], coordinate );
}
//search min element
int minSearch() {
int indicator = 0;
while( mainArray[ indicator ] == 0 )
indicator++;
double min = mainArray[ indicator ]; int imin = indicator;
for( int count = indicator; count < number; count++ ) {
if( mainArray[ count ] < min && mainArray[ count ] != 0 ) {
min = mainArray[ count ];
imin = count;
}
}
return imin;
}
//search max element
int maxSearch() {
double max = mainArray[ 0 ]; int imax = 0;
for( int count = 0; count < number; count++ ) {
if( mainArray[ count ] > max && mainArray[ count ] != 0 ) {
max = mainArray[ count ];
imax = count;
}
}
return imax;
}
//function of random filling
void inputRandom() {
printf( "\nRange fill with random numbers from 0.1 to 1000.\n" );
//randome filling part
srand( time( 0 ) );
for( int count = 0; count < number; count++ ) {
mainArray[ count ] =(float)rand() / RAND_MAX * ( 1000 - 0.1 ) + 0.1;
}
outputOfArray();
}
//function of filling by keyboard
void inputKeyboard() {
printf( "Enter the array elements :\n" );
for( int count = 0; count < number; count++ ) {
scanf( "%f", &mainArray[ count ] );
//checking for null
if( mainArray[ count ] == 0 ) {
printf("You type a number 0. Please perform the re-entry.\n");
return;
}
}
outputOfArray();
}
//output of array
void outputOfArray() {
printf( "\nFinal output of array:\n" );
for( int count = 0; count < number; count++ ) {
printf( "%.2f ", mainArray[ count ] );
}
}