Kezdőoldal » Számítástechnika » Programozás » Hogyan tudok erre a feladatra...

Tordy József kérdése:

Hogyan tudok erre a feladatra sima C programot írni?

Figyelt kérdés

A feladat a következő:

"Írjon egy teljes C programot, amely megkeresi és szabványos kimenetre írja azt a legnagyobb háromjegyű számot, melynek számjegyösszege megegyezik a prímtényezőinek összegével. (pl. 378=2*3*3*3*7, ezek összege 18, ami egyenlő a jegyek összegével is).


A két feladat külön-külön gyerekjáték, de ez okoz némi fejtörést számomra. Csak most tanulom és egy kis segítségre lenne szükségem, mert elakadtam benne. Makacs vagyok és nem tudok továbblépni a következő feladatra, amíg ezt nem sikerül megoldani. Valahogy a Brute force módszerrel gondolkoztam, hogy 100-tól ezerig vizsgálnánk meg a számokat egyesével, de a szám értéke mindig megváltozik, mire 100-ról 101-re ugorhatnék vele. Érzem, hogy közel járok, de kell a segítség. Van akinek ez a kisujjába van.



2019. jan. 15. 13:01
1 2
 1/15 anonim ***** válasza:
0%

"a szám értéke mindig megváltozik, mire 100-ról 101-re ugorhatnék vele."


He?

2019. jan. 15. 13:08
Hasznos számodra ez a válasz?
 2/15 anonim ***** válasza:
100%
(Mivel a legnagyobb ilyen szám kell, javaslom 999-től lefelé keresni az első találatig.)
2019. jan. 15. 13:11
Hasznos számodra ez a válasz?
 3/15 anonim ***** válasza:
100%

"külön-külön gyerekjáték"

Akkor már csak azt kell megnézni egy számnál, hogy a két eredmény egyenlő-e.

2019. jan. 15. 13:13
Hasznos számodra ez a válasz?
 4/15 anonim ***** válasza:
74%
Részekre kell bontani, és a main csak végigmegy egy ciklussal a számokon. A többit egy függvény oldja meg.
2019. jan. 15. 14:38
Hasznos számodra ez a válasz?
 5/15 anonim ***** válasza:
Két függvény, bocs.
2019. jan. 15. 14:38
Hasznos számodra ez a válasz?
 6/15 anonim ***** válasza:

Hát azért ez nem rakétatudomány.

Mi a gond?

2019. jan. 15. 15:00
Hasznos számodra ez a válasz?
 7/15 anonim ***** válasza:
100%

Egyetértek az előző - #2, #3, #4, #5 - hozzászólókkal: bontsd a feladatot részekre:

* Kell egy függvény (nevezzük sumOfDigits-nek), aminek bemenő paramétere egy egész szám, visszaadott értéke megadott szám számjegyeinek összege.

* Kell egy másik függvény (nevezzük sumOfPrimeFactors-nak), aminek bemenő paramétere egy egész szám, visszaadott értéke megadott szám prímtényezőinek összege.

* A main függvényben pedig egy ciklussal végigiterálsz 999-től 100-ig.

A ciklusmagban pedig ellenőrzöd, hogy a szám számjegyeinek összege (sumOfDigits visszatérési értéke) megegyezik-e a a szám prímtényezőinek összegével (sumOfPrimeFactors visszatérési értéke). Ha igen, kiírod a ciklusváltozó értékét, és kilépsz a ciklusból (break).

2019. jan. 15. 15:22
Hasznos számodra ez a válasz?
 8/15 A kérdező kommentje:

Hali! Egy kicsit másként, de megoldottam a feladatot.

Lehet lehetne egyszerűbben, de nekem ez most sikerélmény, mert egyedül tudtam megoldani. Kíváncsi vagyok a véleményetekre


Nos:


#include <stdio.h>

#include <stdlib.h>


int main()

{

int a,szam,maradek,osszeg,primszam,oszto,tenyezo,posszeg;

a=1;

maradek=0;

osszeg=0;

oszto=2;

tenyezo=0;

posszeg=0;

printf("Adj meg egy szamot:\n");

scanf("%d",&szam);

printf("\nA SZAM:%5d",szam);

primszam=szam;

a=szam;

while(a>0){

szam=a;

printf("\nA SZAM ( %d ) 10-el valo osztasi maradekai:",a);

while(szam>0){

maradek=szam%10;

osszeg+=maradek;

szam/=10;

printf("\n%+10d",maradek);

}

printf("\n\nA szamjegyek osszege:\n%+10d",osszeg);

printf("\n\nA szam primtenyezos felbontasa:\n");

while(primszam>=oszto) {

if(primszam%oszto==0){

printf("%10d|%d\n",primszam,oszto);

primszam/=oszto;

posszeg+=oszto;

}

else oszto+=1;

}

printf("\nPrimtenyezok osszege:\n%10d\n",posszeg);

if(osszeg==posszeg){

printf("A legnagyobb szam, mely jegyeinek es primtenyezos felbontasanak osszege egyenlo:%d",a);

}

a--;

primszam=a;

maradek=0;

osszeg=0;

oszto=2;

posszeg=0;

}



return 0;

}

2019. jan. 15. 17:35
 9/15 A kérdező kommentje:
Itt ugyan egyesével kiírja az összes számot, de ugye ez most csak a printf függvények törlésén múlik, szóval ne ebbe kössetek bele lécci! :D
2019. jan. 15. 17:37
 10/15 anonim ***** válasza:
0%
Huhh.
2019. jan. 15. 17:47
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!