oktatas:programozas:programozasi_tetelek:c_megvalositas
Tartalomjegyzék
Programozási tételek C megvalósításban
- Szerző: Sallai András
- Copyright © Sallai András, 2011
- Licenc: CC BY-SA 4.0
- Web: https://szit.hu
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
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"); }
oktatas/programozas/programozasi_tetelek/c_megvalositas.txt · Utolsó módosítás: 2023/09/08 15:30 szerkesztette: admin