Anonymní profil MadKing – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil MadKing – Programujte.comAnonymní profil MadKing – Programujte.com

 

Příspěvky odeslané z IP adresy 188.75.182.–

MadKing
Delphi › Počítání písmen
30. 5. 2012   #158574

#2 JoDiK
Díky za radu. Tady přikládám řešení, kdyby někdo chtěl mrknout.

procedure TForm1.Button1Click(Sender: TObject);
var s:string[255];
    pole:array[65..90] of integer;
    i,j,poc,poc1,poc2:integer;
begin
poc:=0;
s:=edit1.text;
For j:=65 to 90 do
pole[j]:=0;
For i:=1 to length(s) do
If ord(upcase(s[i])) in [65..90] then pole[ord(upcase(s[i]))]:= pole[ord(upcase(s[i]))]+1;
for j:=65 to 90 do
If pole[j]>0 then poc:=poc+1;
If poc=0 then label2.caption:='Musíte psát pomocí znaků anglické abecedy'
          else Label2.caption:='Počet různých písmen obsažených ve větě je '+IntToStr(poc);

//______________________________________________________________________________________________________  //

poc1:=0;
Label3.caption:='Písmena vyskytující se v textu právě jednou: ' ;
for j:=65 to 90 do
If pole[j]=1 then begin
                  Label3.caption:=Label3.caption+chr(j)+', ';
                  poc1:=poc1+1;
              end;
If poc1=0 then label3.caption:='Ve větě se nenachází písmeno s jedním výskytem';
//______________________________________________________________________________________________________  //

poc2:=0;
Label4.caption:='Písmena vyskytující se v textu alespoň 3-krát: ' ;
for j:=65 to 90 do
If pole[j]>=3 then begin
                  Label4.caption:=Label4.caption+chr(j)+', ';
                  poc2:=poc2+1;
              end;
If poc2=0 then label4.caption:='Ve větě se nenachází písmeno obsažené alespoň 3-krát';





end;
MadKing
Delphi › Počítání písmen
29. 5. 2012   #158537

Zadání :

Na vstupu je dána věta.

a) Kolik různých písmen angl. abecedy se ve větě nachází?

Dosavadní kód:

procedure TForm1.Button1Click(Sender: TObject);
var s:string;
    i,count:integer;
    c:char;
begin
s:=Edit1.text;
count:=0;
while Length(s) > 0 do

  begin
    Inc(Count);
    c := s[1];
    i := 1;
    while i <= Length(s) do
    begin
      If (c=s[i]) then
        delete(s,i,1)
      else
        Inc(i);
  end;
      end;
 label2.caption:='Počet různých písmen ve větě je '+InttoStr(Count);
 end;

Problém mám tedy akorát s tím, že počítám všechny znaky, nikoliv jen písmena. Nevím, jak tam správně hodit nějaký ten cyklus. Další úkoly, jako například vypsat písmena, která se nachází právě jednou nebo písmena, která se nachází alespoň třikrát, z toho doufám následně odvodím. Díky všem za pomoc.

Loleq
Delphi › matice
29. 5. 2012   #158536

#13 JoDiK
No, však právě, akorát si myslím, že bude snažší domluva než tu na webu...

Loleq
Delphi › matice
29. 5. 2012   #158534

#8 JoDiK
Jodik neměl bys nějakej kontakt : ICQ, Skype, xfire ?

Loleq
Delphi › matice
29. 5. 2012   #158531

#1 plsicek
Plšo. ty lofásku to nejsi sám kdo si neví rady xDDD...

Pascal › Šifrování v pascalu
18. 5. 2011   #142250

To Mircosoft : Díky moc, že sis našel čas. No já to předělám na to case, měl jsem to v hlavě, ale nechtělo se mi to už editovat opět :D ,tak sem to tak nechal. ještě nevím co za typ je byte a proč to nemůže být klasika integer. Jinak teda dík a já to jdu tedy dodělat :)

Pascal › Šifrování v pascalu
18. 5. 2011   #142246

Tak jsem zesmolil tohle xD , prosím někdo na to mrkněte popř. poupravte a postněte, díky moc. jinak to háže chyby u podmínek:
Fatal: Syntax error, THEN expected but .. found

Program Rocnik;


var text:string[255];

i,k,n:integer;

z:char;

function sifra1:char;

begin

z:=text[i];

n:=ord(z)+k;

while n>ord('9') do n:=ord('0')+(n-ord('9'))-1;

sifra1:=chr(n);

end;



function sifra2:char;

begin

z:=text[i];

n:=ord(z)+k;

while n>ord('Z') do n:=ord('A')+(n-ord('Z'))-1;

sifra2:=chr(n);

end;



function sifra3:char;

begin

z:=text[i];

n:=ord(z)+k;

while n>ord('z') do n:=ord('a')+(n-ord('z'))-1;

sifra3:=chr(n);

end;





begin

write('Zadejte vetu: ');

readln(text);

write('Zadejte o kolik chcete danou vetu zasifrovat: ');

readln(k);

for i:=1 to length(text) do



begin

if text[i]=' ' then i:=i+1;

if text[i]='0'..'9' then text[i]:=sifra1;

if text[i]='A'..'Z' then text[i]:=sifra2;

if text[i]='a'..'z' then text[i]:=sifra3;

end;

writeln('Zasifrovany text: ',text);

readln;

end.


Pascal › Šifrování v pascalu
15. 5. 2011   #142008

To nervak : Tak já to naprogramuji a potom sem hodím kód, protože to beztak pos**u xDDD. Díky za pomoc, Potom to prosím checkni teda :) Snad to tu do zítra bude ;)

Pascal › Šifrování v pascalu
15. 5. 2011   #142002

To nervak : Něměl bych tu podmínku spíš změnit na cyklus while c>b do c:=a+(c-b)-1; ??? Teď nevím jak to funguje, ale když se zadá větší číslo o které budeme posouvat např. 50, tak se podmínka provede pouze jednou a potom už ne, nebo snad ano ?

Pascal › Šifrování v pascalu
14. 5. 2011   #141961

Blbost sorry, Jeden for cyklus projetí věty a potom 3 podmínky na malá,velká písmena a číslice, potom funkce zašifrování a mělo by to být hotovo ne :) ?

Pascal › Šifrování v pascalu
14. 5. 2011   #141960

To nervak : Takže budu muset dělat 3 for cykly. . . pro malá, velká písmena a čísla zvlášť :) ?

Pascal › Šifrování v pascalu
14. 5. 2011   #141957

To nervak : Mohl by jsi mi prosím hodit příklad toho příkazu :)

Pascal › Šifrování v pascalu
14. 5. 2011   #141952

Zdarec hoši, potřeboval bych s něčím pomoci. Mám zadanou práci: Je dán text a přirozené číslo k. Zašifrujte text, že každé písmeno ang. abecedy nahradíte písmenem o k znaků dále. Číslici nahradíte číslicí o k znaků dále. Ost. Znaky zůstavají.

Napsal jsem si program přes funkci ord, ale háček je v tom, že nevím jak udělat, aby šlo posunutí v ascii tabulce v cyklu. Když ord(text[i])+k přesáhne kód znaku Z popř. 9 , aby se zbytek posouvání(k) vrátil na znak A popř. 0.

Nejsem v programování příliš zběhlý, budu rád za vaši pomoc :)

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý