Kezdőoldal » Számítástechnika » Programozás » Mi a hiba a feladatban?

Mi a hiba a feladatban?

Figyelt kérdés

Komplex számokat kéne összeadni, kivonni, szorozni és kiiratni "a+bi" formában. Az összeadás, kivonás, szorzás függvényeknél azt írja ki futtatáskor, hogy 'Komplex'et vár, de int-et kap.


#include <stdio.h>



/* Feladat: Definialj egy 'Komplex' nevu strukturat

ami egy komplex szamot kepes reprezentalni.


A 'Komplex' strukturanak ketto eleme van:

* 'valos': a komplex szam valos reszet tartalmazza

* 'kepzetes': a komplex szam kepzetes reszet tartalmazza

Minden elem legyen valos tipusu.


Komplex szamok a "vadonban" az alabbi formaban vannak:

a + bi


Ahol 'a' a valos resze es 'b' a kepzetes resze a komplex szamnak.

Az 'i' pedig a kepzetes reszt "suffixe".

*/

typedef struct Komplex{

int valos;

int kepzetes;

} Komplex;


Komplex komplex_osszeadas(Komplex left, Komplex right)

{

/* Feladat: 'left' es 'right' komplex szamok osszeadasa es

az osszeadott komplex szamot visszadani.


Komplex szamok osszeadasa:

(a+bi) + (c+di) = (a+c) + (b+d)i

*/

return (left.valos+right.valos)+(left.kepzetes+right.kepzetes);


}


Komplex komplex_kivonas(Komplex left, Komplex right)

{

/* Feladat: 'left' es 'right' komplex szamok kivonasa es

az eredmennyel visszaterni.


Komplex szamok kivonasa:

(a+bi) - (c+di) = (a-c) + (b-d)i

*/

return (left.valos-right.valos)+(left.kepzetes-right.kepzetes);


}


Komplex komplex_szorzat(Komplex left, Komplex right)

{

/* Feladat: 'left' es 'right' komplex szamok osszeszorzasa

es az eredmennyel visszaterni.


Komplex szamok szorzasa:

(a+bi) * (c+di) = (a*c - b*d) + (b*c - a*d)i

*/


return ((left.valos*right.valos)-(left.kepzetes*right.kepzetes))+((left.kepzetes*right.valos)-(left.valos*right.kepzetes));


}


void komplex_print(Komplex value)

{

/* Feladat: A 'value' komplex szam kiiratas az stdout-ra az

alabbi formaban:

a + bi

*/

printf("%d", &value);


}


int main()

{

char muvelet;

printf("Muvelet [+, -, *]: ");

scanf("%c", &muvelet);


/*****/


Komplex left;

scanf("%d %d", &left.valos, &left.kepzetes);


Komplex right;

scanf("%d %d", &right.valos, &right.kepzetes);

/* Feladat: Belovasni egy komplex szamot a 'left' valtozoba stdin-rol */

/* Feladat: Beolvasni egy komplex szamot a 'right' valtozoba stdin-rol */



/*****/


Komplex result;

switch (muvelet) {

case '+':

result = komplex_osszeadas(left, right);

break;

case '-':

result = komplex_kivonas(left, right);

break;

case '*':

result = komplex_szorzat(left, right);

break;


default:

printf("Ervenytelen muvelet.\n");

return -1;

}


printf("Eredmeny: ");

komplex_print(result);

printf("\n");


return 0;

}


2017. nov. 22. 22:48
1 2
 1/11 A kérdező kommentje:
A komplex_print-et még nem csináltam meg, az előzőekkel van gondom.
2017. nov. 22. 22:50
 2/11 anonim ***** válasza:
Mivel a returnök után mindenhol egy intet eredményező kifejezés van...
2017. nov. 22. 23:08
Hasznos számodra ez a válasz?
 3/11 A kérdező kommentje:
Igen, csak nem tudom, mire írjam át, hogy jó legyen...
2017. nov. 22. 23:12
 4/11 A kérdező kommentje:
Oké, hogy Komplex, de milyen formában?
2017. nov. 22. 23:13
 5/11 anonim ***** válasza:
A Komplex nevű típust hsszmálva.
2017. nov. 22. 23:14
Hasznos számodra ez a válasz?
 6/11 A kérdező kommentje:
És hogy nézne ki?
2017. nov. 22. 23:21
 7/11 anonim ***** válasza:

Létrehozol a függvényben egy komplexet, annak adod értékül, és azt adod vissza.

Tessék, összeadásra: a többit írd meg!


Komplex komplex_osszeadas(Komplex left, Komplex right)

{

Komplex eredmeny;

eredmeny.valos=left.valos+right.valos;

eredmeny.kepzetes=left.kepzetes+right.kepzetes;

return eredmeny;

}

2017. nov. 22. 23:47
Hasznos számodra ez a válasz?
 8/11 A kérdező kommentje:
Az közben már meglett, kösz azért. Most a printtel bajlódok...
2017. nov. 22. 23:54
 9/11 A kérdező kommentje:

A komplex_print(Komplex value) így néz ki nálam:


Komplex result;

printf("%d+%di", value.valos, value.kepzetes);


És az outputom így, ha + 2 3 4 5 az input:

Muvelet [+, -, *]: Eredmeny 6+8i


Az inputnak előszőr a Muvelet [+, -, *] kéne kiírni, nem a végén. Ez miért lehet?

2017. nov. 23. 00:30
 10/11 anonim ***** válasza:
#9, A legutolsó sorodat nem értem. Mi a kérdés?
2017. nov. 23. 00:56
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, 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!