Pascal-retazce

Programovacie jazyky, rady, poradňa...
alikishax
Light Expert
Light Expert
Príspevky: 70
Registrovaný: 04 jan 2009, 13:23

Pascal-retazce

Príspevok od používateľa alikishax »

Kód: Vybrať všetko

1. Vytvorte program, ktorý spočíta počet samohlások v reťazci znakov.
2.program upravte tak, aby vedel spočítať počet samohlások alebo
spoluhlások.
3. Vytvorte podprogram, pomocou ktorého zašifrujete vetu. Šifrovací kľúč je:
"32451". Šifrovací kľúč určuje poradie znakov v reťazci.
{Príklad: SKOLA bude OKLAS}

Trosku mam problem s pracou s retazcami...
sundevil
VIP
VIP
Používateľov profilový obrázok
Príspevky: 4169
Registrovaný: 18 mar 2005, 12:03
Bydlisko: BA

Re: Pascal-retazce

Príspevok od používateľa sundevil »

alikishax napísal:Trosku mam problem s pracou s retazcami...
aky konkretne?
necakaj ze ti tu niekto spravi tvoje domace ulohy...
alikishax
Light Expert
Light Expert
Príspevky: 70
Registrovaný: 04 jan 2009, 13:23

Re: Pascal-retazce

Príspevok od používateľa alikishax »

Aby si nepovedala: Viem spravit ze to slovo mi napise odzadu ale neviem podla sifrovacieho kluca vvpisat retazec.

Kód: Vybrať všetko

var
  Meno :string;
  Kluc :string;
  i:integer;
  dlzka:integer;
  
begin
  clrscr;
  writeln('Zadaj meno');
  readln(Meno);
  clrscr;
  dlzka := length(Meno);
  For i :=  dlzka downto 1 Do
    begin
      Kluc:= Kluc + Meno[i];
    end;
  writeln(Meno);
  writeln(Kluc);
  readln;
end.
A na tie samohlasky a spoluhlasky mam tiez spravene podprogramy,ale neviem to hodit do hlavneho...

Kód: Vybrať všetko

program tp7;
uses fdelay,crt;
const
  samohlaska='AEIOUY';
  spoluhlaska='BCDFGHJKLMNPQRSTVWXZ';


  function znak(ch:char):byte;
  begin
    if pos(upcase(ch),samoshlaska)<>0 then znak:=1;
    if pos(upcase(ch),spoluhlaska)<>0 then znak:=2;
  end;

  procedure pocet(s:string);
  var i,psam,pspo:byte;
  begin
    psam:=0;
    pspo:=0;

 For i:=1 to length(s) do
      case Znak(s[i]) do
        1: inc(psam);
        2: inc(pspo);
      end;
    Writeln('Pocet samohlasok je ',psam);
    Writeln('Pocet spoluhlasok je ',pspo);
 end;

  function samohlasky(s:string):byte;
  var i,j:byte;
  begin
    j:=0;
    For i:=1 to length(s) do
      if znak(s[i])=1 then inc(j);
    samohlasky:=j;
  end;


BTW tie farby si viem spravit....potrebujem iba pomoc dokoncenia uloh...
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Príspevok od používateľa BX »

Fu... skusal som tomu porozumiet, ale je mas to dost chaoticke :D
Skus to prepisat na nieco taketo:

S tym klucom:
Ak sa predpoklada len 5 znakove slovo, tak je to lahke. Nacitas slovo (napr. SKOLA) a mas slovo[0]='S', slovo[1]='K' atd...
A tak len prehodis ze pSlovo[0]:=slovo[3]; pSlovo[1]:=slovo[2] atd :) (pSlovo je prehodeneSlovo, dalsi string)

To pocitanie samohlasok a spoluhl.
Nacitas string (napr. zase Slovo) a testujes v cykle for: ak Slovo='A' alebo Slovo='E' atd... (mohlo by to ist aj cez const ako to mas ty, neviem)
tak pocetSamohlasok:=pocetSamohlasok+1 (alebo inc(pocetSamohlasok))

Neviem ci som nieco nezabudol :D

// Dobre ja sa nehadam, ak to ide, tak je vsetko v poriadku :)
// len ja som sa s pos este nestretol, takze nemozem posudzovat :?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

nemáš to slovo vypisovať odzadu, prečítaj si ešte raz zadanie. Ten cyklus by mal vypadať takto nejak:

Kód: Vybrať všetko

for I:= 1 to length(slovo) do write(slovo[Integer(kluc[i])-48]);
pričom na začiatku by bolo dobre spraviť podmienku aby bol klúč rovnako dlhy ako slovo

BX: tie samohlásky má dobre robené, tvoje riešenie by bolo škaredšie. Možno ešte použiť enum, ale aj cez pos a string je to fajn
Napísať odpoveď