Pascal - viac problémov :/

Programovacie jazyky, rady, poradňa...
Mick_14
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 458
Registrovaný: 07 aug 2008, 18:44

Pascal - viac problémov :/

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

Čaute chcel by som vedieť ako sa v Pascale dá usporiadať zoznam mien.
Problem 1.
napr. adam iksovy , jozef beckový, maria ackova ...Ako sa to dá spraviť aby mi to tieto mená usporiadalo podla abecedy? :)
______________________________
Problem 2.
...plus ešte by som chcel vedieť ako sa daju posuvat pismenka napr napišem "abc" a výsledok bude o 2 pismena posunuty čiže "ced"
_______________________________
Problem 3.
...a ešte neviem spraviť procedúru na program, ktorý načíta n ludí a vypyta si ich výšku, vahu a narodnosť. (na to mam vytvorenu vlastnu premenu RECORD) . Viem to načitat ale neviem zapisat tu proceduru ktora by mala robit to, že zadam napr. narodnost slovensku a ona mi vypiše mena všetkých ludí ktorý maju slovensku narodnost.
...ak mi s tým niekto pomože budem velmi rád :)
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Pascal - viac problémov :/

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

Problem 2.
Cez ordinárne hodnoty
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Pascal - viac problémov :/

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

1.) Porovnávanie stringov nie je nič ťažké. Urob si funkciu, ktorá zoberie dva stringy a porovná ich písmeno po písmene. Akonáhle narazíš na rozdiel, zareaguješ a funkciu ukončíš s rozhodnutím, ktorý je "menší".

2.) Vyhľadaj si čo najviac informácií o skratke ASCII (čo to je nepoviem :P )

3.) Podľa toho čo sa pýtaš, poradím klasické pole a lineárne vyhľadávanie s porovnávaním správnych prvkov. Ideš od indexu 0 do N a ak narazíš na niekoho zo Slovenska, vypíšeš ho a ideš ďalej. Kde je problém?
metthal
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2475
Registrovaný: 26 jan 2006, 18:32
Bydlisko: Nitra / Brno

Re: Pascal - viac problémov :/

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

K tej 1 dodam ze najdi si na internete aj triediace algoritmi. Pokial neovladas taketo zakladne veci, pochybujem ze si budes vediet napisat nejake triedenie sam.
Mick_14
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 458
Registrovaný: 07 aug 2008, 18:44

Re: Pascal - viac problémov :/

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

ďakujem, takže niečo som si naštudoval a problém 2 a 3 mám vyriešený ale v tej jednotke neviem kde mám chybu :/

Kód: Vybrať všetko

Program Zoznam;
uses crt;
var meno:array[1..30] of string;
    znak1,znak2:char;
    pom:string;
    n,i,j,dlzka1,dlzka2:integer;
begin
     clrscr;
     writeln('Zadajte pocet ziakov');
     readln(n);
     for i:=1 to n do
         begin
               writeln('Zadajte meno ',i,' ziaka');
               readln(meno[i]);
         end;
     for i:=1 to n-1 do
         begin
               dlzka1:=length(meno[i]);
               dlzka2:=length(meno[i+1]);
               writeln(dlzka1,' ',dlzka2);
               if dlzka1<=dlzka2 then
                  begin
                        for j:=1 to dlzka1 do
                            begin
                                  znak1:=meno[i][j];
                                  znak2:=meno[i+1][j];
                                  while znak1<>znak2 do
                                        begin
                                        if (ord(znak1)>ord(znak2)) then
                                        begin
                                           pom:=meno[i+1];
                                           meno[i+1]:=meno[i];
                                           meno[i]:=pom;
                                           j:=dlzka1;
                                        end
                                        else begin j:=dlzka1; writeln(meno[1]);
                                             end;
                                        end;
                             end;
                                       if znak1=znak2 then j:=j+1;
                  end
               else begin
                          for j:=1 to dlzka2 do
                            begin
                                  znak1:=meno[i][j];
                                  znak2:=meno[i+1][j];
                                  while znak1<>znak2 do
                                        begin
                                        if (ord(znak1)>ord(znak2)) then
                                           begin
                                           pom:=meno[i+1];
                                           meno[i+1]:=meno[i];
                                           meno[i]:=pom;
                                           j:=dlzka2;        
                                           end
                                         else j:=dlzka2;
                                        end;
                            end;

                  end;             if znak1=znak2 then j:=j+1;
         end;
     for i:=1 to n do
         begin
               writeln(meno[i]);
         end;
     readln;
end.
ešte neviem prečo mi tento program vypisuje stále všetky čísla, malo by to načítat čísla a A{1,2,3,2,4,5,4} a vypisat ich s tým, že tie čo sa opakuju to vynecha B{1,2,3,4,5}

Kód: Vybrať všetko

Program Vyber;
uses crt;
var A,B:array[1..20] of integer;
    n,i,j,d,c:integer;
begin
     clrscr;
     writeln('Zadajte pocet cisel');
     readln(n);
     for i:=1 to n do
         begin
               writeln('Zadajte ',i,' cislo');
               readln(A[i]);
         end;
     d:=0;
     for i:=1 to n do
         begin
              for j:=1 to d do
                  if A[i]<>B[j] {c=0} then begin
                                      d:=d+1;
                                      B[d]:=A[i];
                              end;
         end;
     writeln('Cisla ');
     for i:=1 to d do
         begin
               write(B[i],' ');
         end;
     readln;
end.
a ešte by som chcel vedieť ako upravím tento program tak aby mi počítal to čo je v prílohe :)

Kód: Vybrať všetko

Program Sinus;
uses crt;
var zaklad,n,exponent,znamienko,i:integer;
    sinus,vysledok:real;

function mocnina(zaklad:integer;exponent:integer):longint;
var i,vysl:longint;
begin
      vysl:=1;
      for i:=1 to exponent do
          begin
               if i mod 2<>0 then vysl:=vysl*zaklad;
          end;
      mocnina:=vysl;
end;
function fakt(exp:longint):real;
var i,fakty,d,faktorial:integer;
begin
     fakty:=1;
     for i:=1 to exp do
         begin
              if i mod 2<>0 then faktorial:=faktorial*i;
         end;
     fakt:=faktorial;
end;

begin
     clrscr;
     writeln('Zadajte pocet clenov(exponent)');
     readln(exponent);
     writeln('Zadajte zaklad');
     readln(zaklad);
     znamienko:=(-1);
     sinus:=zaklad;
     for i:=2 to exponent do
         begin
               znamienko:=znamienko*(-1);
               vysledok:=(mocnina(zaklad,exponent)/fakt(exponent));
               sinus:=sinus*znamienko+vysledok;
         end;
     writeln('Sinus je ',sinus:0:2);
     readln;
end.
Prílohy
img006.jpg
metthal
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2475
Registrovaný: 26 jan 2006, 18:32
Bydlisko: Nitra / Brno

Re: Pascal - viac problémov :/

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

Vypocet toho sinusus sme robili v skole, pisal som to tu v prehliadaci, nerucim za tie ; a ani tu vyslednu podmienku pri until, pretoze sa mi zda ze to ma Pascal opacne ako C (opisaval som to z C)

Kód: Vybrať všetko

function sinus(x,e:integer):real;
var i:integer;
     sin,current:real;
begin
i:=1;
current:=x;
sin:=x;
repeat
inc(i,2);
current := (-current*x*x) / (i*(i-1));
sin := sin + current;
until (abs(current) <= e);

sinus:=sin;

end;
Napísať odpoveď