Напишете програма, която позволява да въведете какви подаръци искате за Коледа (повече от една дума0 и ги отпечатва:
- оградени с по една звезда
- всяка дума на нов ред
- всяка дума разделена от останалите с една звезда
- всяка дума оградена с звезди от двете страни
- целият текст ограден с кутия от звезди
- текстът отзад напред


program Project1; var p: string; izbor: integer; // оградени с по една звезда procedure OgradenPodarak(p: string); var i: integer; begin Write('* '); for i:=1 to Length(p) do if (p[i]=',') then begin WriteLn(' *'); Write('*'); end else Write (p[i]); WriteLn(' *'); end; //всяка дума на нов ред procedure NaNovRed(p: string); var i: integer; begin WriteLn; for i:=1 to Length(p) do if ((p[i]=',') or (p[i]=' ')) then WriteLn else Write (p[i]); WriteLn; end; // всяка дума разделена от останалите с една звезда procedure Granica(p: string); var i: integer; begin WriteLn; Write('* '); for i:=1 to Length(p) do if (p[i]=',') then Write('* ') else Write (p[i]); WriteLn(' *'); end; // всяка дума оградена с звезди от двете страни procedure Ograda(p: string); var i: integer; begin WriteLn; Write('*'); for i:=1 to Length(p) do if ((p[i]=',') or (p[i]=' ')) then Write('* *') else Write (p[i]); WriteLn('*'); end; // целият текст ограден с кутия от звезди procedure Kutia(p: string); var i, l: integer; begin WriteLn; l:=Length(p); for i:=1 to (l+4) do Write('*'); WriteLn; Write('* '); for i:=1 to l do Write (p[i]); WriteLn(' *'); for i:=1 to (l+4) do Write('*'); WriteLn; end; //всички на едно procedure Vsichki(p: string); begin WriteLn('Ako ne mojete da reshite, shte izvedem pismoto po vseki nachin!'); OgradenPodarak(p); NaNovRed(p); Granica(p); Ograda(p); Kutia(p); WriteLn; end; begin //въвеждане на подаръците WriteLn('Kakvi podaraci iskate? Vavedete gi (po vazmojnost s poveche ot edna duma). '); WriteLn('Otdelete gi sas zapetai.'); ReadLn(p); WriteLn; //избор на начин на извеждане WriteLn('Chudesno! A v kakav vid da sa v pismoto do Diado Koleda?'); WriteLn('Izberete ot slednite varianti: '); WriteLn('1 - vseki podarak da e ograden s po edna zvezda'); WriteLn('2 - vsiaka duma da e na nov red'); WriteLn('3 - vsiaka duma da e razdelena ot ostanalite s po edna zvezda'); WriteLn('4 - vsiaka duma da e ogradena s po edna zvezda ot vsiaka strana'); WriteLn('5 - celia text da e v kutia ot zvezdi'); WriteLn('Vavedete chisloto na opciata, koiato haresvate.'); WriteLn('Ako ne movete da reshite, vavedete 0: '); ReadLn(izbor); case izbor of 1: OgradenPodarak(p); 2: NaNovRed(p); 3: Granica(p); 4: Ograda(p); 5: Kutia(p); 0: Vsichki(p); end; //край WriteLn; WriteLn('Chudesno! Pismoto vi e izprateno! Veseli praznici!'); ReadLn; end.S Viki ;o
program Project1; var Z: string; i: integer; begin WriteLn('Kakuv podarak iskate za Koleda?'); ReadLn(z); WriteLn; //подаръкът ограден с по една звезда for i:= 1 to length(z) do if (z[i]=' ') then WriteLn(' *',z,'*'); WriteLn; //всяка дума на нов ред for i:= 1 to length(z) do if (z[i]=' ') then WriteLn else Write(z[i]); WriteLn; WriteLn; //всяка дума разделена от останалите с една звезда for i:= 1 to length(z) do if (z[i]=' ') then Write(' * ') else Write(z[i]); //всяка дума оградена с звезди от двете страни for i:= 1 to length(z) do if (z[i]=' ') then Write(' * ') else Write(z[i]); WriteLn; WriteLn; //целият текст ограден с кутия от звезди for i:= 1 to length(z) + 2 do Write('*'); Writeln; Write('*',z,'*'); WriteLn; for i:= 1 to length(z) + 2 do Write('*'); ReadLn; end.Много добре форматирана и коментирана задача! Но редове 11, 12 са излишни а точката „всяка дума оградена с звезди от двете страни“ не е изпълнена – кодът е като на горната точка. :-)
program Project1; Procedure ogradeniszwezdichka; var S:string[40]; i:integer; begin Writeln(' Wawedete podaruka koito iskate za koleda kato zapochnete i swurshite s zwezdichka ,dumite razdeleni s interval'); Readln(s); Writeln('Podaruka koito si pojelahte e: '); For i:=1 to length(s) do Write(s[i]); end; Procedure dumananovred; var S:string[40]; i:integer; begin Writeln(' Wawedete podaruka koito iskate za koleda kato zapochnete i swurshite s zwezdichka ,dumite razdeleni s interval'); Readln(s); Writeln('Podaruka koito si pojelahte e: '); For i:=1 to length(s) do begin if s[i]=' ' then Writeln else Write(s[i]); end; end; Procedure zwezdaposredata; var S:string[40]; i:integer; begin Writeln(' Wawedete podaruka koito iskate za koleda kato dumite da sa razdeleni s interval'); Readln(s); Writeln('Podaruka koito si pojelahte e: '); For i:=1 to length(s) do begin if s[i]=' ' then Write('*') else Write(s[i]); end; end; Procedure SZwezdichkiOtWsqkade; var S:string[40]; i:integer; begin Writeln(' Wawedete podaruka koito iskate za koleda kato zapochnete i swurshite s zwezdichka ,dumite razdeleni s interval'); Readln(s); Writeln('Podaruka koito si pojelahte e: '); For i:=1 to length(s) do begin if s[i]=' ' then Write('**') else Write(s[i]); end; end; Procedure KutiqOtZwezdichki; var S:string[40]; p:string; i:integer; begin Write(' Wawedete podaruka koito iskate za koleda kato dumite da sa razdeleni s interval'); Readln(s); Writeln; Writeln('Podaruka koito si pojelahte e: '); p:=''; For i:=1 to length(s) do begin p:=p+'*'; end; Writeln(p,'**'); Writeln('*',s,'*'); Writeln(p,'**'); end; var x:integer; begin Writeln('Kak iskate da se otpechata na ekrana washiqt liubim podaruk:'); Writeln('1:Ogradeni s edna zwezdichka'); Writeln('2:Wsqka duma na nov red'); Writeln('3:Wsqka duma razdelena ot dr s edna zwezda'); Writeln('4:Wsqka duma ogradena s zwezdi ot dwete strani'); Writeln('5:Kutiq ot Zwezdichki'); readln(x); If x = 1 then ogradeniszwezdichka; If x = 2 then dumananovred; If x = 3 then zwezdaposredata; If x = 4 then SZwezdichkiOtWsqkade; If x = 5 then KutiqOtZwezdichki; readln; end.Браво, Любо! Много ми хареса как образуваш низ от звездички! Обърни обаче внимание на повтарящите се неща – те могат да бъдат в главната програма, преди процедурите. И не е редно да казваш на потребителя да въведе със звездички – той да си въвежда текста, а ти добави звездичките.
program Project1; //за ограждане на текста с по една звезда procedure OgradisusZvezdi(s:string; i:integer); begin Write('*'); for i:= 1 to Length(s) do Write(s[i]); Writeln('*'); end; //за извеждане на всяка дума на нов ред procedure Dumananovred(s:string; i:integer); begin Writeln; for i:= 1 to Length(s) do if s[i] <> ' ' then Write(s[i]) else Writeln(s[i]); end; //за разделяне на всяка дума от останалите с една звезда procedure RazdelenisusZv(s:string; i:integer); begin Writeln; Write('*'); for i:= 1 to Length(s) do begin if s[i] <> ' 'then Write(s[i]) else Write('*') end; Write('*'); end; //за ограждане на всяка дума със звезди от двете страни procedure DumaOgradenaZv(s:string; i:integer); begin Writeln; Write('*'); for i:= 1 to Length(s) do begin if s[i] <> ' ' then Write(s[i]) else Write('* *') end; Write('*'); end; //за ограждане на целият текст като кутия от звезди procedure KutiqotZv(s:string; i,j:integer); begin Writeln; for j:= 1 to (Length(s)+2) do Write('*'); Writeln; Write('*'); for i:= 1 to Length(s) do if s[i] <> ' 'then Write(s[i]) else Write('*'); Write('*'); Writeln; for j:= 1 to (Length(s)+2) do Write('*'); end; //за отпечатване на текстът отзад напред procedure OtzadNapred(s:string; i:integer); begin for i:= Length(s) downto 1 do Write(s[i]); end; //декларация на променливите var s:string; i,j,o:integer; begin Writeln('Vavedete kakvi podaruci iskate za Koleda! No molq otdelqite gi s interval'); Readln(s); Writeln; //Отпечатване на възможните функции Writeln('Molq izberete kakvo iskate da se sluchi s podarucite:'); Writeln('*****************************************************'); Writeln('1 - za ograjdane na podarucite ot dvete strani s edna zvezda'); Writeln('2 - za izvejdane na podarucite na nov red'); Writeln('3 - za razdelqne na vseki podaruk ot ostanalite s po edna zvezda'); Writeln('4 - za ograjdane na vseki podaruk sus zvedi otstrani'); Writeln('5 - za ograjdane na podarucite v kutiq ot zvezdi'); Writeln('6 - za otpechatvane na podarucite otzad napred'); Writeln; Readln(o); //за избор на функция case o of 1:OgradisusZvezdi(s,i); 2:Dumananovred(s,i); 3:RazdelenisusZv(s,i); 4:DumaOgradenaZv(s,i); 5:KutiqotZv(s,i,j); 6:OtzadNapred(s,i); else Writeln('Sujelqvam mnogo iskate, imam nujda ot pochivka'); end; Readln; end.Направих тази задача след всички други, защото исках малко да „по тренирам“ с по-лесните. Не съм гледал останалите решенията, по време на писането на програмата. П.С. Направих програмата сега, защото надали щях да мога да спя в противен случай!
Много добро решение! :-) И отлично оформена!Само когато извеждаш целия низ, не е нужно да го правиш символ по символ, може директно. И си прочети пак презентацията за параметрите на функциите и локалните променливи – не е нужно всичко да са параметри, част от нещата е по-удачно да са локални променливи. Това ти е 6-тото решение, бая си се ядосал на низовете май! :-D