Kezdőoldal » Számítástechnika » Programozás » Hogyan tudom C nyelven egy...

Tordy József kérdése:

Hogyan tudom C nyelven egy "bekért" szám osztóit?

Figyelt kérdés
C programozást kezdtem el tanulni és az a feladat, hogy kérjünk be egy számot, aminek az összes lehetséges osztóját irassuk ki a géppel. Tudna nekem valaki erre egy algoritmust?

2017. febr. 15. 23:45
1 2
 1/12 anonim ***** válasza:
Ez a feladat, hogy ezt neked kellene kitalálni.
2017. febr. 15. 23:51
Hasznos számodra ez a válasz?
 2/12 anonim ***** válasza:
0%

"C programozást kezdtem el tanulni"


Innen nézve nem úgy tűnik.

2017. febr. 15. 23:56
Hasznos számodra ez a válasz?
 3/12 anonim ***** válasza:

Megesett rajtad a szivem:


program nem_oszto_kereso;

const TAB = #09;

var i,j: integer;

begin

j:= strtoint(Inputs.text);

for i := 1 to j do

if (j mod i) <> 0 then writeln(inttostr(i)+TAB+' NEM osztó!')

end;

end.


És itt a kimenet, ha j = 111:


2 NEM osztó!

4 NEM osztó!

5 NEM osztó!

6 NEM osztó!

7 NEM osztó!

8 NEM osztó!

9 NEM osztó!

10 NEM osztó!

11 NEM osztó!

12 NEM osztó!

13 NEM osztó!

14 NEM osztó!

15 NEM osztó!

16 NEM osztó!

17 NEM osztó!

18 NEM osztó!

19 NEM osztó!

20 NEM osztó!

21 NEM osztó!

22 NEM osztó!

23 NEM osztó!

24 NEM osztó!

25 NEM osztó!

26 NEM osztó!

27 NEM osztó!

28 NEM osztó!

29 NEM osztó!

30 NEM osztó!

31 NEM osztó!

32 NEM osztó!

33 NEM osztó!

34 NEM osztó!

35 NEM osztó!

36 NEM osztó!

38 NEM osztó!

39 NEM osztó!

40 NEM osztó!

41 NEM osztó!

42 NEM osztó!

43 NEM osztó!

44 NEM osztó!

45 NEM osztó!

46 NEM osztó!

47 NEM osztó!

48 NEM osztó!

49 NEM osztó!

50 NEM osztó!

51 NEM osztó!

52 NEM osztó!

53 NEM osztó!

54 NEM osztó!

55 NEM osztó!

56 NEM osztó!

57 NEM osztó!

58 NEM osztó!

59 NEM osztó!

60 NEM osztó!

61 NEM osztó!

62 NEM osztó!

63 NEM osztó!

64 NEM osztó!

65 NEM osztó!

66 NEM osztó!

67 NEM osztó!

68 NEM osztó!

69 NEM osztó!

70 NEM osztó!

71 NEM osztó!

72 NEM osztó!

73 NEM osztó!

74 NEM osztó!

75 NEM osztó!

76 NEM osztó!

77 NEM osztó!

78 NEM osztó!

79 NEM osztó!

80 NEM osztó!

81 NEM osztó!

82 NEM osztó!

83 NEM osztó!

84 NEM osztó!

85 NEM osztó!

86 NEM osztó!

87 NEM osztó!

88 NEM osztó!

89 NEM osztó!

90 NEM osztó!

91 NEM osztó!

92 NEM osztó!

93 NEM osztó!

94 NEM osztó!

95 NEM osztó!

96 NEM osztó!

97 NEM osztó!

98 NEM osztó!

99 NEM osztó!

100 NEM osztó!

101 NEM osztó!

102 NEM osztó!

103 NEM osztó!

104 NEM osztó!

105 NEM osztó!

106 NEM osztó!

107 NEM osztó!

108 NEM osztó!

109 NEM osztó!

110 NEM osztó!

2017. febr. 16. 00:47
Hasznos számodra ez a válasz?
 4/12 anonim ***** válasza:
for ciklussal el kell kezdeni számolni(0->bekértszámig) bekért szám összegik és if meg else-vel megvizsgálni hogy osztható e
2017. febr. 16. 00:51
Hasznos számodra ez a válasz?
 5/12 anonim ***** válasza:

Beírsz egy számot (pl 72).

Legelső amit jó ha megtanulsz: nem kell elmenj 72-ig, 37-től 71-ig nincs olyan szám amivel tudod osztani.


Szóval elég a feléig.


For ciklus, 1-től szam feléig, if szam osztva az i-vel = 0, kiiratod az i-t. Miután végigment a for ciklus, kiiratod a szamot is osztóként.

2017. febr. 16. 01:04
Hasznos számodra ez a válasz?
 6/12 anonim ***** válasza:

A feléig sem kell elmenni, elég a négyzetgyökéig. Alapvető programozói tudás, hogy lehetőleg ne írj négyzetes futásidejű kódot, ha nem muszáj.


void osztok(int n) {

int i;

for(i=1;i*i<=n;i++) if(n % i == 0) printf("%d\n",i);

printf("%d\n",n);

}

2017. febr. 16. 08:38
Hasznos számodra ez a válasz?
 7/12 A kérdező kommentje:

Köszönöm a válaszokat. Aki meg csak odafent a megjegyzéseivel tud sértegetni, annak hajnali egykor nincs jobb dolga? Tényleg teljesen a 0-ról indulok, sőt, -2-ről és bocs, hogy szeretnék mindent 100%-osan megérteni.

Én ezt írtam,saját logikából,de nem jó.Mi a hiba?

Biztos, hogy rosszul értelmezem valamelyik parancsot. Kérlek segítsetek megérteni.


#include <stdio.h>

#include <stdlib.h>


int main()

{

int a, o=1;

printf("Adj meg egy szamot, en pedig kiirom neked, hogy milyen szamokkal oszthato: ");

scanf("%d",&a);

while(a>=o) {

if(a%o==0) {

printf("%d",o);

o=o+1;

}

}

return 0;

}

2017. febr. 16. 09:08
 8/12 anonim ***** válasza:
Nem neked való ez. Nézz inkább más szakma után.
2017. febr. 16. 09:25
Hasznos számodra ez a válasz?
 9/12 anonim ***** válasza:

Az igaz, hogy elég elmenni a gyökéig, de amit a #6-os írt az (félig) baromság.


Ez mi?

printf("%d\n",n);

Minek kirni a számot külön?


És egyébként a kisebb osztók párjait nem fogja kiírni a programja.


Tehát pl n=120 esetén 10-ig kiírja az osztókat és kiírja a 120-at. A többit nem.


Helyesen ugy lenne, hogy amikor kiírja az i-t, akkor kiírja az n/i-t is, persze ekkor nem sorrendben kapod meg az osztokat, de remélem ez nem baj.

2017. febr. 16. 09:28
Hasznos számodra ez a válasz?
 10/12 anonim ***** válasza:
A párokat valóban elfelejtettem... Ez így max akkor lenne jó, ha prímszámot keresnél.
2017. febr. 16. 09:47
Hasznos számodra ez a válasz?
1 2

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!