Tartalomjegyzék

< Programozási tételek

Programozási tételek C megvalósításban

Programozási tételek

Összegzés

osszegzes.c
#include <stdio.h>
 
main()
{
      int tomb[5] = {8, 9, 3, 5, 4};
      int n = 5;
      printf("Összegzés\n";      
      int osszeg = 0;
 
      for (int i = 0; i < 5; i++)
	  osszeg = osszeg + tomb[i];
 
      printf("%d\n", osszeg);
 
}

Megszámolás

megszamolas.c
#include <stdio.h>
 
main()
{
	int tomb[] = {8, 9, 3, 5, 4, 2, 7};
 
	int szamol=0;
	int i;
	for(i=0; i<7;i++)
		if(tomb[i] < 5)
			szamol++;
	printf("5-nél kisebb számok: %d\n", szamol);
 
}

Eldöntés tétel

eldontes.c
#include <stdio.h>
 
main()
{
	int tomb[] = {8, 9, 3, 5, 4, 2, 7};
	int n=7;
	int ker=5;
	int i=0;
	while(i<n && tomb[i] != ker)
		i++;
	if(i<n)
		printf("Van ilyen\n");
	else
		printf("Nem található\n");
}

Kiválasztás tétel

kivalasztas.c
#include <stdio.h>
 
main()
{
	int tomb[] = {8, 9, 3, 5, 4, 2, 7};
	int n=7;
	int ker=5;
	int i=0;
	while(i<n && tomb[i] != ker)
		i++;
 
	printf("A keresett elem helye: %d\n", i);
 
}

Keresés tétel

kereses.c
#include <stdio.h>
 
main()
{
	int tomb[] = {8, 9, 3, 5, 4, 2, 7};
	int n=7;
	int ker=5;
	int i=0;
	while(i<n && tomb[i] != ker)
		i++;
	if(i<n)
	{
		printf("Van ilyen\n");
		printf("A helye: %d\n", i);
	}
	else
		printf("Nem található\n");
}

Kiválogatás tétel

kivalogatas.c
#include <stdio.h>
 
main()
{
	int tomb[] = {8, 9, 3, 5, 4, 2, 7};
	int b[7];
 
	int i, n=7;
	int j=0;
	for(i=0; i<n; i++)
		if(tomb[i] < 5)
		{
			b[j] = tomb[i];
			j++;
		}
	int m = j;
	for(i=0; i<m;i++)
		printf("%d ", b[i]);
	printf("\n");
}

Szétválogatás tétel

szetvalogatas.c
#include <stdio.h>
 
main()
{
	int tomb[] = {8, 9, 3, 5, 4, 2, 7};
	int b[7], c[7];
 
	int i, n=7;
	int j=0, k=0;
	for(i=0; i<n; i++)
		if(tomb[i] < 5)
		{
			b[j] = tomb[i];
			j++;
		}
		else
		{
			c[k] = tomb[i];
			k++;
		}
	int m = j, l = k;
	for(i=0; i<m;i++)
		printf("%d ", b[i]);
	printf("\n");
 
	for(i=0; i<l;i++)
		printf("%d ", c[i]);
	printf("\n");
}

Rendezés

Buborék rendezés

buborek1.c
/* Buborék rendezés */
#include <stdio.h>
 
int main()
{
	int tomb[] = {3, 8, 2, 4, 5, 1, 6};
	int n = 7; // A tömb elemeinek száma
	int i, j, tmp;
 
	for(i= n-1; i>0; i--)
		for(j=0; j<i; j++)
			if(tomb[j] > tomb[j+1])
			{
				tmp = tomb[j];
				tomb[j] = tomb[j+1];
				tomb[j+1] = tmp;
			}
 
	for(i=0; i<n; i++)
		printf("%d ", tomb[i]);
	printf("\n");
}

A belső ciklusban ha nem volt csere, akkor a tömb már rendezett, felesleges tovább vinni a külső ciklust.

buborek2.c
/* Buborék rendezés */
#include <stdio.h>
 
int main()
{
	int tomb[] = {3, 8, 2, 4, 5, 1, 6};
	int n = 7; // A tömb elemeinek száma
	int i, j, tmp, voltcsere=1;
 
	for(i= n-1; i>0 && voltcsere; i--)
        {
                voltcsere = 0;
		for(j=0; j<i; j++)
			if(tomb[j] > tomb[j+1])
			{
				tmp = tomb[j];
				tomb[j] = tomb[j+1];
				tomb[j+1] = tmp;
                                voltcsere = 1;
			}
         }
 
	for(i=0; i<n; i++)
		printf("%d ", tomb[i]);
	printf("\n");
}

Ha azt is megjegyezzük hol történt a csere, a buborékrendezés még inkább felgyorsul.

buborek3.c
/* Buborék rendezés */
#include <stdio.h>
 
int main()
{
	int tomb[] = {3, 8, 2, 4, 5, 1, 6};
	int n = 7; // A tömb elemeinek száma
	int i, j, tmp, utolsocsere;
 
	for(i= n-1; i>0 ; i = utolsocsere)
        {
                utolsocsere = 0;
		for(j=0; j<i; j++)
			if(tomb[j] > tomb[j+1])
			{
				tmp = tomb[j];
				tomb[j] = tomb[j+1];
				tomb[j+1] = tmp;
                                utolsocsere = j;
			}
         }
 
	for(i=0; i<n; i++)
		printf("%d ", tomb[i]);
	printf("\n");
}

Összefésülő-rendezés

merge.c
#include <stdio.h>
 
void osszefesul(int a[], int p, int q, int r)
{
	int n1 = q-p+1;
	int n2 = r-q;
 
	int bal[n1];
	int jobb[n2];
	int i, j, k;
 
	for(i=0; i<n1; i++)
		bal[i] = a[p+i];
 
	for(j=0; j<n2; j++)
		jobb[j] =a[q+j+1];
 
	bal[n1] = 1000;
	jobb[n2] = 1000;
	i=0;
	j=0;
 
	for(k=p ; k<=r;k++)
		if(bal[i]<=jobb[j])
		{
			a[k] = bal[i];
			i++;
		}
		else
		{
			a[k] = jobb[j];
			j++;
		}
}
 
void osszefesulorendezes(int tomb[], int p, int r)
{
	if(p<r)
	{
		int q=(p+r)/2;
		osszefesulorendezes(tomb, p, q);
		osszefesulorendezes(tomb, q + 1, r);
		osszefesul(tomb, p, q, r);		
	}
}
 
 
main()
{	
	int tomb[] = {8, 3, 4, 5, 2, 9, 7};	
 
	osszefesulorendezes(tomb, 0, 6);
 
	int i;
	for(i=0; i<7;i++)
		printf("%d ", tomb[i]);
	printf("\n");
 
}