Programy C (pt.2)

Do działania programów wymagane są pliki czas (skrypt Basha), dane0 (pobierz) i dane1 (pobierz). Sprawdzanie czasu wykonania następuje poprzez:

./czas twoj_program dane0 plik_z_wynikami

Sprawdzanie inwersji

main()
{
int i,inv;
float x,xprev;

/* program sprawdza czy kolejna podana liczba jest wieksza od poprzedniej */

inv = 0;
x = 0;
xprev = 0;

scanf("%f",&x);

for (i=1; i<100000; i++)	// 99 999
{
	xprev = x;
	scanf("%f",&x);

	inv = (xprev > x) ? inv+1 : inv;
}

printf("Znaleziono %i inwersji\n",inv);

}

Sortowanie liczb (bąbelkowe, poprzez szukanie)

main ()
{

/* sortowanie liczb w tablicy od najm. do najw */

int i,j,k;
float x,a[100000];

for (i = 0; i < 100000; i++)
{
	scanf("%f",&a[i]);
}	

for (i=100000; i>0; i--)
{
	k=0;

	for (j=0; j<i; j++)
	{
		if ( a[k]<a[j] )
		{
			k=j;
		}
	}	

	x = a[k];
	a[k] = a[i-1];
	a[i-1]=x;
}

for (i = 0; i < 100000; i++)
{
	printf("%f\n",a[i]);
}

}

Sortowanie 2 (szukanie pierwszej niepasującej liczby i wstawianie jej na prawidłowe miejsce).

main()
{
int n,i;
float x,a[100000];

for(i=0;i<100000;i++)
scanf("%f",&a[i]);

for(n=0;n<100000;n++)
{
if(a[n]>a[n+1])
	{
	i=n+1;
	while(a[i]<a[i-1])
		{
		x=a[i];
		a[i]=a[i-1];
		a[i-1]=x;
		i--;
		}
	}
}

for(i=0;i<100000;i++)
printf("%f\n",a[i]);

}

Program czas (bash)

#!/bin/bash

POCZsek="$(date +%s)"
POCZnano="$(date +%N)"

$PWD/$1 <$2 >$3

KONsek="$(date +%s)"
KONnano="$(date +%N)"

echo; echo "CZAS WYKONANIA PROGRAMU $1:"

if  [ $POCZnano -le $KONnano ]
then  echo "$(($KONsek - $POCZsek)).$(($KONnano - $POCZnano)) sek."
else  echo "$(($KONsek - $POCZsek - 1)).$(($KONnano + 1000000000 - $POCZnano)) sek."
fi
echo

.

Dodaj komentarz