Mássalhangzó, magánhangzó és betű számláló Pascalban?
Sziasztok!
Egy olyan programot kellene írnom Pascalban, ami kér egy szöveget és kiírja hogy mennyi mássalhangzó és magánhangzó található a szövegben, aztán megkérdezi hogy milyen betű számaira vagyunk kíváncsiak és azt is kiírja.
Nos, mégis hogy nézni ki ez a program? A mássalhangzókhoz és magánhangzókhoz tömböt kellene használnom?
program maganhangzo_massalhangzo_betuszamlalo;
Uses CRT;
var
maganhangzo, massalhangzo, kulonlegeskarakter, szoveg : string;
maganhangzos:array[1..14] of byte;
massalhangzos:array[1..21] of byte;
specialiskarakter:array[1..19] of longint;
i,j,k,l : byte;
betu : char;
betus : byte;
ch : char;
function myLoCase(ch : char) : char;
var kicsik : string = Chr($81) + Chr($82) + Chr($8B) + Chr($FB) + Chr($94) + Chr($A0)+ Chr($A1) + Chr($A2) + Chr($A3);
nagyok : string = Chr($9A) + Chr($90) + Chr($8A) + Chr($EB) + Chr($99) + Chr($B5)+ Chr($D6) + Chr($E0) + Chr($E9);
i : byte;
begin
if Ord(ch) > 127 then
begin
for i := 1 to Length(nagyok) do if ch = nagyok[i] then myLoCase := kicsik[i];
for i := 1 to Length(kicsik) do if ch = kicsik[i] then myLoCase := kicsik[i];
end
else
myLoCase := LowerCase(ch);
end;
begin
betus := 0;
for j := 1 to 14 do
maganhangzos[j]:=0;
for k := 1 to 21 do
massalhangzos[k]:=0;
for l := 1 to 19 do
specialiskarakter[l]:=0;
maganhangzo:='áéöőüűúóíaeiou';
massalhangzo:='bcdfghjklmnpqrstvwxyz';
kulonlegeskarakter:=',;?.:-_@#/\+"!%=()*';
write('Irjon be egy szoveget! ');
ReadLn(szoveg);
Write('Kerem a megszamolando betut : ');
ReadLn(betu);
for i := 1 to length(szoveg) do
begin
for l:=1 to 19 do
if (myLoCase(szoveg[i])=kulonlegeskarakter[l]) then inc(specialiskarakter[l]);
for j:=1 to 14 do
if (myLoCase(szoveg[i])=maganhangzo[j]) then inc(maganhangzos[j]);
for k:=1 to 21 do
if (myLoCase(szoveg[i])=massalhangzo[k]) then inc(massalhangzos[k]);
if (myLoCase(szoveg[i])=myLoCase(betu)) then inc(betus);
end;
WriteLn;
WriteLn('A szovegben a(z) ',betu,' betu ',betus,' alkalommal fordult elo.');
writeln;
writeln('Szeretne latni a massalhangzok es maganhangzok szamat is?');
repeat
write(' I/N');
ch := (UpCase(ReadKey));
until (ch <> 'I') or (ch <> 'N');
if ch = 'I' then
begin
WriteLn('Maganhangzok: ');
for j:=1 to 14 do
if maganhangzos[j]>0 then writeln(maganhangzo[j],' betu: ',maganhangzos[j],' alkalommal fordult elo.');
writeln('Massalhangzok:');
for k:=1 to 21 do
if massalhangzos[k]>0 then writeln(massalhangzo[k],' betu: ',massalhangzos[k],' alkalommal fordult elo.');
end;
writeln;
writeln('Szeretne latni a kulunleges karakterek szamat is?');
repeat
write(' I/N');
ch := (UpCase(ReadKey));
until (ch <> 'I') or (ch <> 'N');
if ch = 'I' then
begin
writeln('kulonlegeskarakterek: ');
for l:=1 to 19 do
if specialiskarakter[l]>0 then writeln(kulonlegeskarakter[l],' karakter: ',specialiskarakter[l],' alkalommal fordult elo.');
end;
writeln;
readln;
end.
Ez már túl bonyolult.
program maganhangzo_massalhangzo_betuszamlalo;
uses crt;
var
maganhangzo, massalhangzo, kulonlegeskarakter, szoveg, z : string;
maganhangzos:array[1..14] of byte;
massalhangzos:array[1..21] of byte;
specialiskarakter:array[1..19] of byte;
i,j,k,l : byte;
betu,x : char;
betus : byte;
begin
repeat
clrscr;
betus := 0;
for j := 1 to 14 do
maganhangzos[j]:=0;
for k := 1 to 21 do
massalhangzos[k]:=0;
for l := 1 to 19 do
specialiskarakter[l]:=0;
maganhangzo:='áéöőüűúóíaeiou';
massalhangzo:='bcdfghjklmnpqrstvwxyz';
kulonlegeskarakter:=',;?.:-_@#/\+"!%=()*';
textcolor(12);
write('Irjon be egy szoveget! ');
readln(szoveg);
delay(1400);
Write('Kerem a megszamolando betut : ');
readln(betu);
textcolor(6);
for i := 1 to length(szoveg) do
begin
for l:=1 to 19 do
if (lowercase(szoveg[i])=kulonlegeskarakter[l]) then inc(specialiskarakter[l]);
for j:=1 to 14 do
if (lowercase(szoveg[i])=maganhangzo[j]) then inc(maganhangzos[j]);
for k:=1 to 21 do
if (lowercase(szoveg[i])=massalhangzo[k]) then inc(massalhangzos[k]);
if (lowercase(szoveg[i])=lowercase(betu)) then inc(betus);
end;
WriteLn;
WriteLn('A szovegben a(z) ',betu,' betu ',betus,' alkalommal fordult elo.');
writeln;
textcolor(5);
writeln('Megmutassam a maganhangzokat es massalhangzokat?');
textcolor(6);
repeat
writeln('I/N');
x:=(upcase(readkey));
until(x <> 'I') or (x <> 'N');
if x='I' then begin
writeln('Maganhangzok: ');
for j:=1 to 14 do
if maganhangzos[j]>0 then writeln(maganhangzo[j],' betu: ',maganhangzos[j],' alkalommal fordult elo.');
writeln('Massalhangzok:');
for k:=1 to 21 do
if massalhangzos[k]>0 then writeln(massalhangzo[k],' betu: ',massalhangzos[k],' alkalommal fordult elo.');
end;
textcolor(5);
writeln('Megmutassam a kulonleges karaktereket?');
textcolor(6);
repeat
writeln('I/N');
x:=(upcase(readkey));
until(x <> 'I') or (x <> 'N');
if x='I' then begin
writeln('Kulonleges karakterek: ');
for l:=1 to 19 do
if specialiskarakter[l]>0 then writeln(kulonlegeskarakter[l],' karakter: ',specialiskarakter[l],' alkalommal fordult elo.');
end;
textcolor(5);
writeln('Erdekli hogy hany karaktert gepelt be?');
textcolor(6);
repeat
writeln('I/N');
x:=(upcase(readkey));
until(x <> 'I') or (x <> 'N');
if x='I' then begin
writeln('Ennyi karakter talaltam osszesen: ',length(szoveg));
end;
textcolor(5);
writeln('Futtassam meg egyszer a programot?');
textcolor(6);
writeln('Igen/Nem');
readln(z)
until z='nem';
readln;
end.
Én erre jutottam, ami kell megvan szerintem. Köszönöm szépen mindenkinek a segítséget! :)
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!