Free Pascal csillag kiíratási probléma?!?! (Sor, oszlop)
Az a feladat, hogy a beolvasott számokat (pl.: 4 oszlop, 7 sor) és a csillagokat azokra a koordinátákra írja ki, de úgy, hogy a sorokat és oszlopokat töltse ki.
Én megírtam a programot, de csak az adott koordinátára egy csillagot ír ki és az előtte lévő helyet nem tölti ki.
Lehet, hogy picit értelmetlen, de megpróbáltam elmagyarázni.
Itt a program:
PROGRAM oszlopsor;
uses crt;
var i,j,oszlop,sor:integer;
BEGIN
writeln('Melyik oszlopba írjam?';
readln(oszlop);
writeln('Melyik sorba írjam?');
readln(sor);
clrscr;
for i:=1 to oszlop do
for i:=1 to sor do
begin
gotoxy(oszlop,sor);
writeln('*');
end;
readln;
End.
Nem látok benne semmi hibát.
1. Minkét ciklusban i-t futtatod.
2. gotoxy(oszlop,sor)?? Miért, ha i és j a ciklusváltozód?
Hoppsz, igazad van. Még csak most nézem!
Köszi!
Nos igen mert a programot egy ciklust használ, és csupán egy koordinátára ír javítom a híbát:
program oszlopsor;
uses crt;
var i,j,oszlop,sor:byte;
Begin
Wirteln('Melyik sorba írjam');
readln(sor);
Writeln('melyik oszlopba írjam');
readln(oszlop);
ClrScr;
for i:=1 to oszlop do begin
for j:=1 to oszlop do begin
Gotoxy(i,j);
Writeln('*');
end;
end;
readln;
end.
Ez kitölti addig a pontig ameddig megadtad. Az integer helyet word adattipust használtam( max 255 sorra működik de az elég is.)
program oszlopsor;
uses crt;
var i, j, oszlop, sor: byte;
Begin
Clrscr;
Wirteln('Melyik sorig írjam');
readln(sor);
Writeln('melyik oszlopig írjam');
readln(oszlop);
ClrScr;
for i:=1 to sor do begin
for j:=1 to oszlop do begin
Write('*');
end;
Writeln;
end;
readln;
end.
GotoXY nélkül szerintem szebb:)
Jogos, hiszen úgyis egyesével haladunk előre mind sorban mind oszlopban:)
De az GOTOXY általánosabb, mondjuk ha egy előre feltöltött tömben megadnánk, hogy ide meg ide írjon egy csillagot, akkor lenne értelme a használatának. De nem ez volt a feladat:)
Igazából nemrég kezdtem el foglalkozni ezzel, de elég ügyetlen vagyok. Gyorsan tanulok és nagyjából értem is, de néha elakadok.
Most van egy elég hülye feladat.
Kiíratjuk 1-től 50-ig a számokat, majd 10 sorral arrébb kiírjuk a számoknak a kétszeresét.
Valaki segítene?
Nagyon megköszönném!
Elnézést, hogy ilyen szerencsétlen vagyok ,de még nagyon kezdő vagyok és kellene a jó pont.
Oké, de milyen irányba írjuk ki a 100 számot?
program kiiír;
uses crt;
var i, j, sor:integer;
BEGIN
for i:=1 to 100 do begin
Write(i);
sor:=i;
Gotoxy(sor,11);
Writeln(2*i);
end;
readln;
end.
Ez egy egyszerűsített megoldás a bonyolultabb az lenne, hogy az utolsó karaktertől számított 10 oszloppal írná ki.
( bocs de most sor vagy oszlop kell? mert ez nem egyértelmű számomra)
Üdv!
Nos, még mindig nem nagyon vágom mi a feladat, de mind a kétféle értelmezésem szerint megcsinálom neked...
Egyik verzió (itt kiírom a számokat egymás alá 1-től 50-ig, majd 10 sorral lejjebb megint egymás alá a kétszeresüket):
program oszlop;
uses crt;
var i: integer;
begin
clrscr;
for i:= 1 to 50 do
writeln(i);
for i:= 1 to 50 do
begin
gotoXY(1,60);writeln(2*i);
end;
repeat until keypressed;
end.
Másik verzió (amit sztem neked kell csinálni, hogy kiírom a számokat 50-ig egymás alá, majd melléjük a kétszeresüket is):
program oszlop2;
uses crt;
var i : integer;
begin
clrscr;
for i:= 1 to 50 do
begin
gotoXY(1,i);write(i);
gotoXY(10,i);write(i*2);
end;
end.
Ha erre gondoltál remélem segíthettem :) Ja, és ne szabadkozz, mindenki volt kezdő, részemről szívesen segítek, nem megterhelő ilyen progikat írni :)) A továbbiakban azért, ha javasolhatom saját magad is foglalkozz a feladatokkal, különben nincs sok értelme az egésznek...
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!