PASCAL-problemy

Programovacie jazyky, rady, poradňa...
picuge
Expert
Expert
Príspevky: 167
Registrovaný: 17 dec 2005, 20:38
Bydlisko: Bratislava/Martin

Re: PASCAL-problemy

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

Ak uz ti ide Int64 a ak ti postacuju kladne cisla, tak mozes vyskusat QWord. Rozsahovo je to Unsigned (neznamienkovy) Int64, takze do minusu sa nikdy nedostanes a ziskas 2x vacsi rozsah.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: PASCAL-problemy

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

ty chceš prevádzať v pascale 11 ciferné čísla do dvojkovej sústavy? Vieš mi objasniť k čomu ti treba a prečo si si na to zvolil práve pascal? Niekedy totiž treba zastaviť, a zamyslieť sa či to čo robíš má zmysel a či ideš správnou cestou namiesto toho, aby si slepo skúšal vyriešiť každý problém.
alfaomega
Expert
Expert
Príspevky: 175
Registrovaný: 31 júl 2008, 17:12
Bydlisko: Martin/Brno

Re: PASCAL-problemy

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

audiotrack napísal:ty chceš prevádzať v pascale 11 ciferné čísla do dvojkovej sústavy? Vieš mi objasniť k čomu ti treba a prečo si si na to zvolil práve pascal? Niekedy totiž treba zastaviť, a zamyslieť sa či to čo robíš má zmysel a či ideš správnou cestou namiesto toho, aby si slepo skúšal vyriešiť každý problém.
Presne toto ma napadalo. Program mi bol zadaný na hodine informatiky a rozsah nebol nejako určený. No program som začal robiť doma a chcel som ho urobiť čo najlepšie. Takže jasne že postačí aj menší rozsah, čitak pri prezentácii v škole to budem zase hodiť do longint pretože tie verzie pascalu nebudú poznať int64 alebo QWord.

Ešte všetkým raz ďakujem....problém považujte za vyriešený
94jakub
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2037
Registrovaný: 15 dec 2006, 13:18
Bydlisko: Martin/BA
Kontaktovať používateľa:

Re: PASCAL-problemy

Príspevok od používateľa 94jakub »

Audiotrack: problém je, že to takto často učia v škole. Možno ťa tam naučia napísať program no zamyslieť sa nad tým a porozmýšľať čo by sa dalo zlepšiť, to už moc nie.
Píšem o informatike na strednej škole (s tým mám momentálne skúsenosti)
A druhá vec je, že si moc vyberať nemôžeš takže ti zostáva len pascal.

BTW myslím, že by určite stačil aj integer keď je to školský prìklad.
fake man
Novice
Novice
Príspevky: 3
Registrovaný: 09 okt 2011, 12:14

Re: PASCAL-problemy

Príspevok od používateľa fake man »

Dobrý,
nechcel som zakladať novú tému tak píšem sem.
V turbo pascale 5.5 programujem náhodné naplnenie matice a jej transponovanie. Ale vyhadzuje mi dosť blbú chybu.Neviem čo s tým. Na nete všade píšu taký istý tvar a mne to nejde :/ . Poraďte mi prosím.
Maticu mám definovanú takto :
type maticaA = array[1..150] of array [1..150] of integer;

ďalej v programe keď ju plním hodnotami pomocou random mi píše chybu v tomto výraze :
maticaA[i,j] := ...
Chybu píše ako že mi tam chýbajú () ale keď ich tam dám tak :
maticaA([i,j]) := ... Invalid type cast.

Ja netuším čo s tým ...
javatar
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6112
Registrovaný: 12 aug 2010, 14:49
Bydlisko: I don't exist at all.

Re: PASCAL-problemy

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

type maticaA = array[1..150,1..150] of integer

az potom budes moct pristupovat ako maticaA[x,y]
teraz by ti to malo ist ak by si pristupovat maticaA[x][y]
fake man
Novice
Novice
Príspevky: 3
Registrovaný: 09 okt 2011, 12:14

Re: PASCAL-problemy

Príspevok od používateľa fake man »

ďakujem za tip. nepomohlo. Kašlem na to. Napísal som to celé ale nemám odskúšané. Ak by sa náhodou našla nejaká dobrá duša, ktorá by to odskúšala ...

Kód: Vybrať všetko

program matice;
uses crt;
var s,r,i,j:integer;  {s je pocet stlpcov, r je pocet riadkov}
type A=array[1..150,1..150] of integer;    {        }
     B=array[1..150,1..150] of integer;    { matice }

procedure naplnenie_matice;
 begin
 randomize;
  for i:=1 to s do
   for j:= 1 to r do
    A[i,j]:= random(256);
   end;
  end;
 end;

procedure transponacia_matice;
 begin
  for i:= 1 to s do
   for j:= 1 to r do
    B[j,i]:=A[i,j];
   end;
  end;
 end;

BEGIN          { hlavny program }
write('Program naplni maticu nahodnzmi cislami a vypise');
writeln('povodnu maticu a aj transponovanu maticu');
writeln(' BY Fake Man ');
writeln('Premenne musia byt mensie ako cislo 151');
clrscr;
writeln('Zadaj pocet stlpcov a stlac Enter'); readln(s);
writeln('Zadaj pocet riadkov a stalc Enter'); readln(r);
naplnenie_matice;
transponacia_matice;
write('Povodna matica je ',A, ' a transponovana je ',B);
write('Pre skoncenie stlac Enter');
readln;
end.
javatar
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6112
Registrovaný: 12 aug 2010, 14:49
Bydlisko: I don't exist at all.

Re: PASCAL-problemy

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

no logickych chyb tam mas plnu rit, tie syntakticke ale nevidim (daaaaavno som nerobil s pascalom)

1. transponaciu robis na kkt
2. vypisovanie musi byt tiez v cykle
fake man
Novice
Novice
Príspevky: 3
Registrovaný: 09 okt 2011, 12:14

Re: PASCAL-problemy

Príspevok od používateľa fake man »

Tu je preskúšaný program. Možno sa niekomu zíde .... Ďakujem za rady.

Kód: Vybrať všetko

program matice;
uses crt;
type matica=array [1..20,1..20] of integer;
var s,r,i,j,x,y:integer;
var A,B : matica ;

procedure naplnenie_matice;
 begin
 randomize;
  for i:=1 to s do
   for j:= 1 to r do
    A[j,i]:= random(256);
 end;

procedure transponacia_matice;
 begin
  for i:= 1 to r do
   for j:= 1 to s do
    begin
    B[j,i]:=A[i,j];
    end;
 end;

procedure vypis_matice(A:matica);
 begin
  for i:=1 to x do
   begin
    writeln;
     for j:= 1 to y do
      write(' ',A[i,j]);
   end;
 end;

BEGIN          { hlavny program }
clrscr;
writeln(' By Fake Man');
writeln('Premenne musia byt mensie ako 21');
writeln('Zadaj pocet stlpcov a stlac Enter'); readln(s);
writeln('Zadaj pocet riadkov a stalc Enter'); readln(r);
naplnenie_matice;
x:=r; y:=s;
vypis_matice(A);
writeln;
transponacia_matice;
x:=s;  ;y:=r;
vypis_matice(B);
writeln;
writeln('Pre skoncenie stlac Enter');
readln;
end.
ziegel
Star
Star
Používateľov profilový obrázok
Príspevky: 699
Registrovaný: 07 jún 2011, 15:21

Re: PASCAL-problemy

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

Caute, potrebujem pomoc. Zacal som si trochu opakovat pascal a snazim sa spravit takuto ulohu:
Vymyslete program, který vás vyzve k zadání informace o osobě a zadávat budete: Jméno, věk, výšku. To samozřejmě vyřešíte pomocí záznamu, program ovšem bude chtít zadat šest osob a poté také všechny pěkně pod sebe vypsat.
Tu je zdrojak, niekde robim chybu lebo to nejde spustit.

Kód: Vybrať všetko

program ludze;
uses crt;
type osoba=record
            meno:string;
            vek,vyska:integer;
           end;
var clovek:osoba;
    ludia:array[1..6] of osoba;
    i:integer;
begin
 clrscr;
 for i:=1 to 6 do with ludia[i] do
  begin
   writeln('Zadaj meno');
   readln(clovek.meno);
   writeln('Zadaj vek');
   readln(clovek.vek);
   writeln('Zadaj vysku');
   readln(clovek.vyska);
  end;
 for i:=1 to 6 do writeln(ludia[i]);
 readln;
end.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: PASCAL-problemy

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

"nejde spustiť". Čo to znamená? Akú chybu a kde píše?
ziegel
Star
Star
Používateľov profilový obrázok
Príspevky: 699
Registrovaný: 07 jún 2011, 15:21

Re: PASCAL-problemy

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

Chybu pise pri vypise pola, vid obrazok
Prílohy
chyba.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-problemy

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

Nemyslim si ze je spravne vypisovat cely record. Vypis po jednom kazdy prvok z tvojho recordu.
mirak2
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6719
Registrovaný: 18 sep 2005, 13:44
Bydlisko: Prague, CZE / Kosice, SVK

Re: PASCAL-problemy

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

inac povedane urob si procedurku vypiscloveka s parametrom clovek a v nej vypis udaje o cloveku nejak rozumne...tuto proceduru uz potom len zavolaj v tom poslednom fore
Jankokuk
Medium Expert
Medium Expert
Príspevky: 119
Registrovaný: 25 júl 2010, 19:51

Re: PASCAL-problemy

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

pre Ziegel: Ma to fungovat asi takto?
Co sa tika mena, veku a vysky tak som ich dal ako

Kód: Vybrať všetko

var meno,vek,vyska:array[1..6] of string;
A potom som dal cykli na zapis a vypis
Prílohy
vypismena.rar
(15.15 KiB) 16 stiahnutí
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-problemy

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

To co si tu poslal, absolutne neriesi jeho problem, len ho absolutne obchadza a celkovo nespravne. Prave na to aby sa nemuselo pouzivat niekolko poli, na ukladanie kazdej informacie zvlast, pricom tieto informacie spolu suvisia, tak bol vytvoreny prave record, alebo struct, alebo nazvy si to ako chces, zalezi v akom jazyku robis. Tvoje riesenie je smiesne a hodne mozno tak niekoho, kto z programovania (pripadne teraz povedane pascalu) neovlada este tolko aby mohol davat rady. Tvoje riesenie len uci inych ludi, riesit veci nespravne. Keby si chcel ku kazdej osobe ukladat 20 roznych informacii o niecom, spravil by si si 20 poli? :roll:
ziegel
Star
Star
Používateľov profilový obrázok
Príspevky: 699
Registrovaný: 07 jún 2011, 15:21

Re: PASCAL-problemy

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

Spravil som si tu proceduru, ale neviem vypisat vsetky prvky toho pola, vypisuje mi furt len to iste

Kód: Vybrať všetko

program ludze;
uses crt;
type osoba=record
            meno:string;
            vek,vyska:integer;
           end;

var clovek:osoba;
    ludia:array[1..6] of osoba;
    i:integer;

procedure vypiscloveka(clovek:osoba);
begin
 writeln('Meno: ',clovek.meno);
 writeln('Vek: ',clovek.vek);
 writeln('Vyska: ',clovek.vyska);
 writeln;
end;

begin
 clrscr;
 for i:=1 to 6 do with ludia[i] do
  begin
   writeln('Zadaj meno');
   readln(clovek.meno);
   writeln('Zadaj vek');
   readln(clovek.vek);
   writeln('Zadaj vysku');
   readln(clovek.vyska);
  end;
 clrscr;
 for i:=1 to 6 do vypiscloveka(clovek);
 readln;
end.
Skusal som dat to posledne for este takto:

Kód: Vybrať všetko

for i:=1 to 6 do vypiscloveka(ludia[i]);
ale to mi nevypisalo nic. Asi som uz uplny dement nemysliaci, please help :|
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-problemy

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

Mna by zaujimalo co je toto

Kód: Vybrať všetko

for i:=1 to 6 do with ludia[i] do
O pascal sa moc nezaujimam, len nas to ucia v skole a za tych 6 (alebo kolko) rokov Pascalu v skole, som nevidel takyto zapis. Presnejsie toto "do with ludia". Skus ten cyklus formulovat takto:

Kód: Vybrať všetko

for i:=1 to 6 do
  begin
   writeln('Zadaj meno');
   readln(ludia[i].meno);
   writeln('Zadaj vek');
   readln([ludia[i].vek);
   writeln('Zadaj vysku');
   readln(ludia[i].vyska);
  end;
ziegel
Star
Star
Používateľov profilový obrázok
Príspevky: 699
Registrovaný: 07 jún 2011, 15:21

Re: PASCAL-problemy

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

Wolf diky za rady, uz mi to ide. A co sa tyka toho do with ludia, tak ani ja presne neviem co to je, ale v skole nam vraveli ze by to malo nejako ulahcovat pracu s recordom a pouzivali sme to pri takychto ulohah tak som to tam pouzil aj ja :D Ale moc mi ju to teda nezjedusilo, moja chyba.
Takto vyzera uz fungujuci program:

Kód: Vybrať všetko

program ludze;
uses crt;
type osoba=record
            meno:string;
            vek,vyska:integer;
           end;
var clovek:osoba;
    ludia:array[1..6] of osoba;
    i:integer;
procedure vypiscloveka(clovek:osoba);
begin
 writeln('Meno: ',ludia[i].meno);
 writeln('Vek: ',ludia[i].vek);
 writeln('Vyska: ',ludia[i].vyska);
 writeln;
end;
begin
 clrscr;
for i:=1 to 6 do
  begin
   writeln('Zadaj meno');
   readln(ludia[i].meno);
   writeln('Zadaj vek');
   readln(ludia[i].vek);
   writeln('Zadaj vysku');
   readln(ludia[i].vyska);
  end;
 clrscr;
 for i:=1 to 6 do vypiscloveka(clovek);
 readln;
end.
mirak2
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6719
Registrovaný: 18 sep 2005, 13:44
Bydlisko: Prague, CZE / Kosice, SVK

Re: PASCAL-problemy

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

nemalo by tam v poslednom fore byt vypiscloveka(ludia) ? mam pocit, ze ked som nevedel programovat, tak som tiez taketo paskvily vytvaral a doteraz som nepochopil preco to fungovalo
Napísať odpoveď