Informatika3-2024/Megoldasok2

A MathWikiből

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;
}
Személyes eszközök