Kezdőoldal » Számítástechnika » Programozás » Mit rontokk el ebben a C...

Mit rontokk el ebben a C programban?

Figyelt kérdés

Vannak kommentek a feladathoz, a main függvényhez nem kell nyúlni.


#include <stdio.h>


/* Feladat: Adjal meg egy 'Intervallum' struktura tipust.

A struktura ketto adattaggal rendelkezik:

* 'low': egesz tipusu es az intervallum also hatarat adja meg.

* 'high': egesz tipusu es az intervallum felo hatarat adja meg.

Az intervallum mindket vege zart.


Az alabbi feltetel garantalt:

'low' <= 'high'

*/

/* A fuggveny fejlecen ne valtoztass!!!!!! */

struct Intervallum{

int low;

int high;

};



int van_metszet(Intervallum rA, Intervallum rB)

{

struct Intervallum rangeA;

struct Intervallum rangeB;

int tA[], tB[];

int i, j, x;

if((rangeA.low<rangeB.high && rangeA.high<rangeB.low) || (rangeB.low<rangeA.high && rangeB.high<rangeA.low))

return -1;

else {

return 1;

}


/*for(i=0; i<(rangeA.high-rangeA.low); i++)

tA[i]=rangeA.low+i;

for (j=0; j<rangeB.high-rangeB.low; i++)

tB[j]=rangeB.low+j;

*/



/* Feladat: a 'van_metszet' fgv. 1-essel (numerikus egy) terjen vissza

ha van a 'rangeA' es 'rangeB' intervallumoknak metszetuk.

Ha nincs metszet akkor pedig -1-el (minusz egy).

*/

}



/***********************************************************/

/*

EZ ALATT A PROGRAMON NE VALTOZTASS!

*/

/***********************************************************/


int main()

{

int test_data[][5] = {

{ 10, 25, 22, 24, 1},

{ -1, 25, -22, 24, 1},

{ 3, 4, 22, 24, -1},

{ -3, 4, 22, 24, -1},

{ 30, 40, 15, 29, -1},

{ 30, 40, 15, 30, 1},

{ 30, 40, 30, 40, 1},

{ 30, 30, 30, 40, 1},

{ 30, 30, 30, 30, 1},

{ 40, 40, 41, 41, -1},

{-99, 49, 50, 99, -1},

};


int total_tests = sizeof(test_data)/sizeof(test_data[0]);

int passed_tests = 0;

for (int i = 0; i < total_tests; i++)

{

Intervallum rA;

rA.low = test_data[i][0];

rA.high = test_data[i][1];


Intervallum rB;

rB.low = test_data[i][2];

rB.high = test_data[i][3];


printf("Teszt input: [%3d;%3d] metszet [%3d; %3d] Eredmeny: ",

rA.low, rA.high, rB.low, rB.high);

int teszt_metszet = van_metszet(rA, rB);


if (teszt_metszet == test_data[i][4])

{

printf("OK\n");

passed_tests++;

}

else

{

printf("HIBAS!\n");

}

}


printf("Teszt sikeresseg: %.2f%%\n", ((float)passed_tests / total_tests) * 100);


return 0;

}


2017. nov. 22. 17:56
 1/8 A kérdező kommentje:
Két futtatás között még ha nem is írok át semmit, más eredményt ad.
2017. nov. 22. 17:58
 2/8 anonim ***** válasza:
Ez az egész kód egy nagy hiba.
2017. nov. 22. 18:07
Hasznos számodra ez a válasz?
 3/8 anonim ***** válasza:

Ha jol ertem akkor a keretet megkaptad, neked csak az "int van_metszet(Intervallum rA, Intervallum rB)" fuggvenyt kell kitoltened.


Na akkor nezzuk mit csinalsz:

- ugye megkapod kivulrol a 2 valtozot: rA-t es rB-t

- ezutan definialsz 2 masikat veletlenszeruen feltoltve

- felveszel ures int tomboket is foloslegesen

- definialsz nehany veletlenszeru szamot

- majd megvizsgalod hogy a veletlenszeruen feltoltott valtozoidra igaz-e a feltetel


A megoldas egyszeru, a folosleges valtozokat torold ki, hasznald azt amit kivulrol kapsz.

2017. nov. 22. 18:12
Hasznos számodra ez a válasz?
 4/8 A kérdező kommentje:
Az üres tömbök és változók véletlenül maradtak ott, de a programon így se befolyásol semmit, nem?
2017. nov. 22. 18:32
 5/8 anonim ***** válasza:
De. Rontja az atlathatosagot. Es emiatt kovetted el azt a hibat, amit leirtam.
2017. nov. 22. 19:03
Hasznos számodra ez a válasz?
 6/8 A kérdező kommentje:

Így néz ki most a main fgv-en kívül, de az rA.low és high meg az rB.low high-ra azt írja, hogy nincs inicializálva. A main függvénynek jónak kéne lennie, azt nem én írtam.

typedef struct Intervallum{

int low;

int high;

} Intervallum;



int van_metszet(Intervallum rangeA, Intervallum rangeB)

{

Intervallum rA;

Intervallum rB;


if((rA.low<rB.high && rA.high<rB.low) || (rB.low<rA.high && rB.high<rA.low))

return -1;

else {

return 1;

}

2017. nov. 22. 19:58
 7/8 anonim ***** válasza:

De miert definialod megint, hogyha megkapod a szukseges intervallumokat a parameterben?


int van_metszet(Intervallum rA, Intervallum rB)

{

if((rA.low<rB.high && rA.high<rB.low) || (rB.low<rA.high && rB.high<rA.low))

return -1;

else {

return 1;

}


Igy mar nem hasznalsz inicializalatlan szamokat. A feltetelt viszont nezd at ujra.

2017. nov. 22. 20:06
Hasznos számodra ez a válasz?
 8/8 A kérdező kommentje:

Megvan már. A van_metszet paraméterei először rangeA és rangeB-ként volt megadva, én meg belenéztem a main-be, ahol rA, rB volt használva. Az zavart meg.


Kösz a segítséget!

2017. nov. 22. 20:24

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!