Informatika3-2024/Megoldasok2
A MathWikiből
A lap korábbi változatát látod, amilyen Kkovacs (vitalap | szerkesztései) 2024. február 22., 19:40-kor történt szerkesztése után volt.
Tartalomjegyzék |
Megoldások
Csak azoknak a feladatoknak lesznek itt a megoldásai amiket megbeszéltünk gyakorlaton. A többi feladat tökéletes ZH-ra gyakorlásnak!
Távolság
#include<stdio.h> #include<math.h> struct point2 { float x; float y; }; // 2 pont/vektor bemenet, 1 float (tavolsag) kimenet // gyok((x1-x2)^2 + (y1-y2)^2) float tavolsag(struct point2 a, struct point2 b) { // nem muszaj igy darabokra bontani a szamolast, lehet egyben is float x_resz = a.x - b.x; // x1 - x2 float y_resz = a.y - b.y; // y1 - y2 float belso = x_resz * x_resz + y_resz * y_resz; return sqrt(belso); } // teszteles a main fuggvenyben int main(void) { struct point2 p1; struct point2 p2; float tav; p1.x = 1; p1.y = 1; // (1, 1) p2.x = 2; p2.y = 2; // (2, 2) tav = tavolsag(p1, p2); printf("%f\n", tav); return 0; }
Min-max
#include<stdio.h> void csere(int *min, int* max) { if (*max < *min) { // ha rossz sorrendben van int temp; // ideigelenes valtozo temp = *min; *min = *max; // csere *max = temp; } } // csak tesztelunk int main(void) { int a = 5; int b = 7; int c = 9; printf("%d, %d, %d\n", a, b, c); // alap allapot csere(&a, &b); // itt nem varunk cseret csere(&c, &a); // itt varunk cseret printf("%d, %d, %d\n", a, b, c); // 9 7 5 return 0; }
Rendezés
#include<stdio.h> void csere(int *min, int* max) { // elozo feladatbol if (*max < *min) { int temp; temp = *min; *min = *max; *max = temp; } } void rendez(int t[], int n) { // buborek rendezes int i, j; // ciklus valtozok // ket ciklus kell // probaljatok ki mi tortenik ha az egyiket elhagyjuk for(j = 0; j < n-1; j++) { for(i = 0; i < n-1; i++) { csere(&t[i], &t[i+1]); // cserelunk ha kell //printf("%d, %d\n", t[i], t[i+1]); // tesztelesre } } } int main(void) { int t[] = {5, 4, 7, 2}; // teszt tomb int i; // ciklus valtozo for(i = 0; i < 4; i++) { printf("%d ", t[i]); // kezdeti lista kiirasa } printf("\n"); rendez(t, 4); // rendezes for(i = 0; i < 4; i++) { printf("%d ", t[i]); // rendezes utani kiiras } printf("\n"); return 0; }