Kezdőoldal » Számítástechnika » Programozás » Csak félig működik a programom...

2105as kérdése:

Csak félig működik a programom, elakadtam nem tduom hogyan kellene tvább? (c nyelv)

Figyelt kérdés

Maga a feladat: Írj programot, mely a billentyűzetről beolvas két egész számot, majd eldönti, hogy a nagyobb osztója-e a kisebbnek. Ha igen kiírja, ha nem akkor kiírja a hányadost és az osztási maradékot. A feladat megoldása során ne használj elágazást! (Gondolj a feltételes értékadásra!)



Ameddig jutottam :

#include <stdio.h>

int main()

{

int a,b,c;

printf("Adj meg 2db pozitiv szamot:\n");

scanf("%d\t%d",&a,&b);


c=( a>b && a%b==0 ? a/b : b/a );

printf("%d es %d hanyadosa: %d",a,b,c);


getchar();



return 0;

}



Tehát már csak az kellene, hogy ha nem osztható akkor kiírja a hányadost és a maraadékot, mivel nem osztható igy biztos hogy 0,xxxx lesz de ezt értékadó operátornak hogy "mondja meg"??


2016. okt. 10. 20:53
 1/8 anonim ***** válasza:
50%

A printf sort cseréld ki erre:


(a % b == 0) ? printf("%d es %d hanyadosa: %d",a,b,c) : printf("Hanyados: %d, maradek: %d",c,a%b);

2016. okt. 10. 21:20
Hasznos számodra ez a válasz?
 2/8 anonim ***** válasza:

// Tegyük fel, hogy a nulla osztást nem kell figyelni.


// ..

int a,b,hanyados,maradék;

printf("Adj meg 2db pozitiv szamot:\n");

scanf("%d\t%d",&a,&b);


hanyados = a>b ? a/b : b/a;

maradek = a>b ? a%b : b%a;


printf("%d es %d hanyadosa: %d\nmaradek: %d\n%s",

a,b,hanyados,maradek,

maradek==0 ? "maradek nelkul oszthato" : ""

);


getchar(); // stb...

2016. okt. 11. 17:11
Hasznos számodra ez a válasz?
 3/8 A kérdező kommentje:

ez esetleg:

#include <stdio.h>

#include <stdlib.h>


main()

{

float a,b,c,hanyados,maradek;

float x,y;

printf("Adj meg 2db egesz szamot!\n");

scanf("%f\n",&a);

scanf("%f\n",&b);

x=a/b;

y=b/a;

c=(a>b ? printf("a ket szam hanyadosa: %f",x) : printf("%f es %f hanyadosa: %f",a,b,y) );

return 0;

}



de a printf("%f es %f hanyadosa: %f",a,b,y) nem ad pontos eredményt.

Amúgy a float típusnál a tizedesjegyeket hogyan lehet korlátozi, hogy csak pl 2 tizedesig legyen látható ?

2016. okt. 11. 19:51
 4/8 A kérdező kommentje:

Na végre :

#include <stdio.h>

int main()

{

int a,b,c;

int maradek;

int null;

printf("Adj meg 2db pozitiv szamot:\n");

scanf("%d\t%d",&a,&b);

maradek=(a%b);

null=0;

c=(a>b && a%b==0 ? printf("%d es a(z) %d hanyadosa: %d",a,b,a/b) :

printf("A szam hanyadosa: %d!\n",null) && printf("A hanyados maradeka: %d!\n",maradek));



getchar();


return 0;

}

Így jó ? a hanyados maradéka lényegében mindig a kissebbik szám lesz az (vagy is vagy 'a' változó) ?

2016. okt. 11. 20:49
 5/8 A kérdező kommentje:
Bocs az ilyen sok kommentért csak még annyit, hogy ha az első számom nagyobb,de nincs meg maradéknélkül az adott szám pl:600/124, akkor a programom ilyen esetekben sosem fog jó eredményt adni nem ?
2016. okt. 11. 20:57
 6/8 A kérdező kommentje:

AZ előző kommenteket kérem ne vegyétek figyelmbe!

(Nem nagyon gondoltam át a dolgokat)

#include <stdio.h>

int main()

{

int a,b,c;

int maradek;

int null;

printf("Adj meg 2db pozitiv szamot:\n");

scanf("%d\t%d",&a,&b);

maradek=(a%b);

null=0;

c=(a>b || a%b==0 ? printf("%d es a(z) %d hanyadosa: %d\n",a,b,a/b) && printf("A maradeka: %d",maradek) :

printf("A szam hanyadosa: %d!\n",null) && printf("A hanyados maradeka: %d!\n",maradek));



getchar();


return 0;

}


ez a sor: "printf("A maradeka: %d",maradek)" (első utasítás második fele) csak akkor jelenjen meg ha a maradék nem nulla

(1)pl: 50/2=25, de kiírja hogy a maradék : 0

(2)pl: 600/124 hanyados : 4 , maradek : 104--> így jó,

de az első pl-ban valahogy kilehetne "szedni", hogy a maradek:0 ne írodon ki ?

vagy nem, mivel ha kiszedem akkor a 2.pl-ban nem jelenik meg hogy 104 a maradek ami baj.

2016. okt. 11. 21:10
 7/8 anonim válasza:

Nem tudom hogy az "elágazás" mire utal, de ezt legrövidebben így lehet megoldani



[...]


(a > b) ? (a % b == 0) ? printf("A(z) %d osztója a(z) %d -nak.", b, a) : printf("%d és %d hányadosa: %d", a, b, a%b) : (b % a == 0) ? printf("A(z) %d osztója a(z) %d -nak.", a, b) : printf("%d és %d hányadosa: %d", b, a, b%a);


[...]

2016. okt. 11. 22:34
Hasznos számodra ez a válasz?
 8/8 anonim ***** válasza:

Hát igen, a ?: operátor valójában egy elágazás, csak nem annyira látszik, mint egy if-nél. :)

Szóval ha a ? után utasításokat teszünk, az sima elágazás lesz.

Fentebbi válaszomban direkt próbáltam ezt elkerülni.

2016. okt. 12. 12:51
Hasznos számodra ez a válasz?

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!