Kezdőoldal » Számítástechnika » Programok » Írjunk programot,mely beolvas...

Írjunk programot,mely beolvas egy egész számot.Cseréljük fel a szám utolsó két számjegyét,majd írassuk ki az így kapott számot. Van egy rész megoldásom az mennyire helyes? Miért nem adja ki ha be írom az 123 at132re

Figyelt kérdés

csak 6 os számot ír ki valamit ki felejtettem mutatom .

Itt egy példa amit kí kéne írjon :Pl:ha a szám 123, az új szám 132.

#include <stdio.h>

#include <stdlib.h>


int main()

{

int a, b, c;

printf("a = "); scanf("%d", &a);

if(a > 999)

printf("a tobb mint 3 szamjegyu.\n");

else

printf("%d", a%10 + (a/10)%10 + (a/100)%10);

return 0;


}



2020. nov. 15. 16:52
 1/5 tabaki ***** válasza:
100%

Lássuk:

a = 123

a % 10 = 3

(a / 10) % 10 = 12 % 10 = 2

(a / 100) % 10 = 1 % 10 = 1


Ennek megfelelően:

a%10 + (a/10)%10 + (a/100)%10) = 3 + 2 + 1 = 6


...vagyis a program pontosan a műveletek által meghatározott eredményt adja, tehát biztos, hogy a módszerrel probléma van. Mindjárt megpróbálok hasonlókból valami működőképeset összerakni.

2020. nov. 15. 17:44
Hasznos számodra ez a válasz?
 2/5 tabaki ***** válasza:
100%

Itt az én próbálkozásom:


#include <stdio.h>


int main()

{

      int a, b, c;

      printf("a = ");

      scanf("%d", &a);

      if(a > -100 && a < 100)

            printf("Kevesebb, mint 3 szamjegyu!\n");

      else

      {

            b = a % 10 * 10;

            a /= 10;

            c = a % 10;

            a /= 10;

            a *= 100;

            printf("%d", a + b + c);

            }

      return 0;

}


Megjegyzés: Nem egészen értem, hogy a programodban miért zártad ki a 3-nál több számjegyű számokat, amikor a feladat ezt nem tartalmazza. Gondot inkább a kettőnél kevesebb számjegy okoz, mivel ott nincs mit megcserélni. Azonban ez is okozna, ha nem is hibát, de egy kis értelmezési billegést, ezért a magam változatában megtartottam a három számjegyes határt, csak éppen fordítva, hogy legalább annyinak meg kell lennie. Valójában a túl nagy, az int adatméretén túlcsorduló szám is okozhat hibás működést, ennek a kiküszöbölésével most nem bonyolítottam a programot.

2020. nov. 15. 18:17
Hasznos számodra ez a válasz?
 3/5 tabaki ***** válasza:

„egy kis értelmezési billegést”


Ezt talán illendő megmagyaráznom... Tételezzük fel, hogy a kétjegyű szám 0-ra végződik, legyen mondjuk 30. A számjegyek megcserélése után 03 lesz, ebből a program nem írja ki a felvezető nullát, ami az egyik (logikusabb) értelmezés szerint teljesen rendben is van, mivel a szám értékére vagyunk kíváncsiak. A másik (korlátoltabb) megközelítés értelmében viszont a beírt két számjegyet akarod látni a képernyőn, csak éppen fordított sorrendben. A felvezető nulla kiíratása a feladattól független, ügyefogyott vizsgálatot igényelne, amin még csavarintana egyet, ha mínusz számról volna szó. Ezért tartottam egyszerűbbnek simán kizárni a kétjegyű számokat is.

2020. nov. 15. 18:38
Hasznos számodra ez a válasz?
 4/5 A kérdező kommentje:
Értem ha még elakadok valahol vagy nem találok megoldást kérhetem a segítséget ? Előre is köszi a segítséget .
2020. nov. 15. 18:47
 5/5 tabaki ***** válasza:
Kérni kérhetsz, aztán meglátjuk mire megyek a feladattal. Szerencsére általában vannak itt olyanok is, akik még értenek is hozzá. Maradjunk annyiban, hogy nem reménytelen kiírni a kérdésedet.
2020. nov. 15. 20:08
Hasznos számodra ez a válasz?

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!