Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lab2_3_4 / Удал_нули_пол_конец_функ

.c
Скачиваний:
16
Добавлен:
03.03.2016
Размер:
2.13 Кб
Скачать
//Дан массив типа double. Удалить из массива нулевые элементы,
//затем положительные элементы перенести в конец массива, сохраняя исходный порядок.
//Исходный массив инициализируем константами в операторе описания.
#include<stdio.h>
#include<math.h>
#include<conio.h> /*Модуль функций расширения ввода-вывода(в Паскале аналогичный модуль CRT)*/
#include<windows.h>
void print_array(double *x,int n,char *msg);//Вывод строки заголовка msg и элементов массива х размером n 
void wait_press_key(char *msg);//Вывод строки msg и ожидание нажатия клавиши для продолжения программы.
void Del_Nil_array(double *x,int *n);//Удаление из массива нулевых элементов.
void plus_end_direct_array(double *x,int n);//Положительные элементы перемещаются в конец массива с сохранением исходного порядка
int main()
{
	int i,j,n,fl,col,iminus;
	double x[]={5,0,0,-4,3,2,0,4,8.4, 13.6, -34.5,16.3,-34.9, 18.25,0,12, -56.14,13, 18, 34, -102,66,-38,-71,23,0.4,15},buf;
	//Подключение кирилицы в консольном окне
	SetConsoleOutputCP(1251);//Использует для вывода кодовую таблицу 1251
	SetConsoleCP(1251);      //Использует для ввода кодовую таблицу 1251
	printf("\t Введите размер массива <=20\n");
	scanf("%d",&n); 
	print_array(x,n,"Исходный массив х");
	//Удаляем нули 	
	Del_Nil_array(x,&n);
	print_array(x,n,"Массив х после удаления нулей");
	//Переставляем положительные элементы в конец массива
	plus_end_direct_array(x,n);
	print_array(x,n,"Результирующий массив х");
	wait_press_key("\nДля завершения программы нажмите любую клавишу\n");
	return 0;
}
void print_array(double *x,int n,char *msg)
{	int i;
	printf("\n%s размером %d\n",msg,n);
	for(i=0; i<n;i++)
		printf("%8.2lf",x[i]); 
}
void wait_press_key(char *msg)
{
	printf(msg);
	getch();
}
void Del_Nil_array(double *x,int *n)
{	int i,j;
	for(i=*n-1;i>=0;i--)
		if(x[i]==0)
			{for(j=i;j<*n-1;j++)
				x[j]=x[j+1];
			(*n)--;
			}
}
void plus_end_direct_array(double *x,int n)
{
	int i,j,p;double buf;
	p=n-1;
	for(i=n-1;i>=0;i--)
		if(x[i]>0)
		{
		 buf=x[i];
		 for(j=i;j<p;j++) 
			x[j]=x[j+1];
		 x[p]=buf;
		 p--;
		}
}