Kezdőoldal » Számítástechnika » Programozás » Üdv, hogy tudnám megoldani...

Üdv, hogy tudnám megoldani ezt pascalban?

Figyelt kérdés

Azt a feladatot kaptuk a suliban hogy egy számot bontsunk fel prímtényezőkre. Na most egy pici help kéne, mert nem sok kell ahhoz hogy kész legyen. Idáig így fest:

Program primszamok;

Uses Crt;

Var i: Byte;

szam,muvelet: Longint;

prim: Boolean;

Procedure beker;

Begin

Writeln('Kerek egy szamot!');

Readln(szam);

End;

Procedure eldont;

Begin

i:=1; muvelet:=0; prim:=true;

Repeat

i:=i+1;

muvelet:=muvelet+1;

Until (i=Round(sqrt(szam))) or (szam mod i=0);

If szam mod i=0 Then

Begin

Writeln('Nem primszam');

prim:=false;

End

Else Writeln('Primszam');

Writeln('Muveletek szama: ',muvelet);

End;

Procedure felbont;

Begin

If prim=true Then Writeln(szam,'=1*',szam);

If prim=false Then

Begin


End;

End;

Begin

Clrscr;

beker;

eldont;

felbont;

Readkey;

End.


2014. máj. 21. 17:57
1 2
 1/19 A kérdező kommentje:
A behúzások természetesen nekem megvannak, az átláthatóság miatt, de a másolás miatt így "tette b".
2014. máj. 21. 17:58
 2/19 A kérdező kommentje:
Annyi lemaradt, hogy a "Felbont" alprogrammal kéne okoskodni :)
2014. máj. 21. 17:59
 3/19 SimkoL ***** válasza:

Nem valami ilyesmi kellene : [link]

Szerintem ez a felbontás.

2014. máj. 21. 18:23
Hasznos számodra ez a válasz?
 4/19 anonim ***** válasza:

<head>

<del>

<head/>

2014. máj. 21. 18:23
Hasznos számodra ez a válasz?
 5/19 A kérdező kommentje:
De valami ilyesmi kéne. Csak ezt hogy kódoljam le? azt a részét ami "felbontja" tényezőkre, lehetőleg a többi maradjon az én megoldásomból.
2014. máj. 21. 18:28
 6/19 SimkoL ***** válasza:
A küldött program C++ forráskódja segítene ? :)
2014. máj. 21. 18:31
Hasznos számodra ez a válasz?
 7/19 A kérdező kommentje:
Hááát, C-ben életemben nem írtam programot, ezért az utasításaival sem vagyok tisztában, elég lenne nekem az is hogy a logikáját leírod(a felbontás ki íratásának és a felbontásnak)
2014. máj. 21. 18:32
 8/19 SimkoL ***** válasza:

[link]


Itt a Pascal 'fordítása' :


program primfelbont;


var n, d : integer;


function prim(var n: integer) : boolean;

var i: integer;

begin

for i := 2 to n div 2 do

if n mod i = 0 then prim := true else prim := false;

end;


function kovprim(var n: integer) :integer;

begin

repeat

if (n mod 2) = 0 then Inc(n) else Inc(n, 2);

until not prim(n);

kovprim := n;

end;


begin

d:= 2;

Write('Kerem a szamot: ');

ReadLn(n);

while prim(n) do

begin

while true do

begin

if n mod d = 0 then

begin

Write(d,'*');

n := n div d;

break;

end;

d := kovprim(d);

end;

end;

Write(n);

ReadLn;

end.


Érdemes a C++ kódot is megnézni :) teljesen ugyanúgy írtam mint a C++ forrásban van.

2014. máj. 21. 19:16
Hasznos számodra ez a válasz?
 9/19 A kérdező kommentje:

Pont most lettem én is kész, még a tied nem néztem meg, de itt az én megoldásom:

Program primszamok;

Uses Crt;

Var i: Byte;

szam,muvelet,oszto: Longword;

prim: Boolean;

tomb:array[1..255] of Byte;

Procedure beker;

Begin

Writeln('Kerek egy szamot!');

Readln(szam);

End;

Procedure eldont;

Begin

i:=1; muvelet:=0; prim:=true;

Repeat

inc(i);

muvelet:=muvelet+1;

Until (i=Round(sqrt(szam))) or (szam mod i=0);

If szam mod i=0 Then

Begin

Writeln('Nem primszam');

prim:=false;

End

Else Writeln('Primszam');

Writeln('Muveletek szama: ',muvelet);

End;

Procedure felbont;

Begin

If prim=true Then Writeln('Felbontasban: ',szam,'=1*',szam);

If prim=false Then

Begin

i:=2;

Repeat

If szam mod i=0

Then

Begin

Write(i,'*');

szam:=szam div i

End

Else i:=i+1;

Until szam=1;

End;

End;

Begin

Clrscr;

Writeln('Primtenyezos felbontas!');

beker;

eldont;

felbont;

Readkey;

End.

2014. máj. 21. 19:21
 10/19 A kérdező kommentje:
Hatékonyságán hogyan tudnék javítani?
2014. máj. 21. 19:21
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!