Mi a hiba a programozási feladatomban? (pascal)
Program ujsor;
Uses Crt;
Var V:boolean;
I,J:integer;
Begin
V:=true;
for i:=1 to 8 do
begin
if (i mod 2)>0 then v:=true
else v:=false;
end;
for j:=1 to 8 do
begin
if (j mod 2)>0 then begin v:=true;
writeln('A');
end
else writeln('B');
end;
end.
Nem fut le maga a program sem így.
Elvileg a megoldás ez lenne:
ABABABAB
BABABABA
ABABABAB
BABABABA
ABABABAB
BABABABA
ABABABAB
BABABABA
Egyeltalán minek bele a v, úgysem olvasod egyszer sem.
Másrészről a két ciklus egymásba kéne ágyazni
for i:=1 to 8 do begin
for j:=1 to 8 do begin
...
én az i+j mod 2 -t csinálnám, akkor az első sorban AB..., a második sorban BA...-al kezdődne, és így tovább.
Szerencséd, hogy a pascal nem case sensitive.
Nem értem a programod, hogy minek van két for, ami nincs is egymásban... talán ha egymásba tennéd őket... meg azt sem értem miért csak A és B betűket irsz ki és utánuk új sort hagysz... :D
Esetleg:
var s1,s2:string;
...
s1 := 'ABABABAB';
s2 := 'BABABABA';
for i:=1 to 8 do
if odd(i) (ha paratlan) then writeln(s1)
else writeln(s2)
Talán mert a feladat ez:
A KI(X) eljárás az X szöveges kifejezés értékét írja a szabványos kimenetre (általában a képernyőre), az aktuális karakter-pozícióba.
A KI(új_sor) eljáráshívás egy „új sor” karaktert ír a kimenetre.
A NEM(V) logikai függvény a paramétere tagadását adja eredményül.
Beadandó az algoritmust Pascal nyelven kódolva tartalmazó fájl!
Változók:
V:logikai
I:egész
J:egész
Program eleje
V := igaz
Ciklus i:=1-től 8-ig 1-esével
Ha i páratlan szám akkor V:= igaz
különben V:= hamis
elágazás vége
Ciklus j:=1-től 8–ig 1–esével
Ha V akkor KI(„A”)
különben KI(„B”)
elágazás vége
V := NEM(V)
Ciklus vége
KI(új_sor)
Ciklus vége
Program vége
Igen, ahogy a pszeudokódban van, ott értelmes, pár megjegyzést fűznék hozzá ezalapján a programodhoz:
-Ha jól megnézed a két ciklus egymásba van ágyazva (a ciklus vége majdnem a program végén van, a másik for után)
-A második for ciklusban már nem azt vizsgálja páros-e, hanem hogy a v értéke igaz-e.
-Az új sor kiírása csak a belső for ciklus után van
-A belső for ciklusban van egy NEM(v), ott ezt be kéne írni, ha jól emlékszek az a NOT(v)-nek felel meg
Így esetleg? :
program ujsor;
procedure ki(s:string);
begin
if s='új_sor' then writeln
else write(s);
end;
function nem(x:boolean):boolean;
begin
nem:=not x;
end;
var
v: boolean;
i: integer;
j: integer;
begin
v:=True;
for i:=1 to 8 do
begin
if (i mod 2)>0 then v:=True
else v:=False;
for j:=1 to 8 do
begin
case v of
True : ki('A');
False : ki('B');
end;
v:=nem(v);
end;
ki('új_sor');
end;
end.
1. Milyen hibaüzenetet ad?
2. Másold be ide a programod mostani állapotát.
program ujsor;
uses crt;
var i,j: integer;
betu: char;
BEGIN
betu:='A';
for i:=1 to 8 do
begin
for j:=1 to do
begin
write(betu);
if betu='A' then betu:='B'
else betu:='A';
end;
writeln();
end;
END.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!