Zdravim, mám udělat jeden prográmek. Nemám na programování absolutně hlavu tak bych potřeboval, jestli by jste mi to někdo neudělal. Zadání zní: Napiš větu a zjisti kolik tam je velkých písmen a která, měl jsem se podívat do ASCII tabulky na ty velká písmena a našel jsem čísla 065 - 095, že jsou velká, jestli to teda k něčemu je. Potřeboval bych to v co nejjednodušší formě aby to nevypadalo moc chytře na mě :), jinak jsme brali řetězce string s FOR cyklem, tak aby to bylo kdyžtak něco na tento způsob. Díky moc
Fórum › Pascal
Domácí úkol
To Zelenáč [:D
To jelis : sprav si for "dlzky" na pocet znakov vo vete
potom donho daj podmienku ktora otestuje ci je "intova hodnota charu" v rozmedzi od 65 do 95
a ak ano pridaj 1 nejakemu cislu, v ktorom bude pocet velkych pismen
Santas napsal:
To jelis : sprav si for "dlzky" na pocet znakov vo vete
potom donho daj podmienku ktora otestuje ci je "intova hodnota charu" v rozmedzi od 65 do 95
a ak ano pridaj 1 nejakemu cislu, v ktorom bude pocet velkych pismen
díky , tobě se to ale řekne, já jsem úplná lama na programování a moc tomu teda nerozumim
To jelis : Toto by malo stacit...
program VelkePismena;
uses crt;
var veta,pismena : string;
i,pocet : integer;
begin
clrscr;
write('Zadaj vetu: ');
readln(veta);
pismena:='';
for i:=1 to length(veta) do
if (Ord(veta[i]) >= 65) AND (Ord(veta[i]) <= 95) then
begin
inc(pocet);
pismena:=pismena+veta[i];
end;
writeln;
writeln('Pocet velkych pismen: ',pocet);
writeln('Vo vete su velke pismena: ',pismena);
readln;
end.
Čau, já jsem stejnej případ jako Jelis, letos jsem zahlcenej maturitníma předmětama a na programování, který máme první rok, nemám vůbec čas, a proto tomu moc nerozumím, tak bych vás chtěl teda poprosit o pomoc.
Zadání je takový, že mám v Pascalu vytvořit program, který mě určitý finanční obnos vypíše do tabulky po částkách, které se dají vyplatit: např. 26 530 - 2x10 000, 1x10 000, 1x500, 1x20, 1x10
předem moc díky za pomoc
To Rouder : no neviem ako vy v Čechách ale my tu peniaze rozkladáme na 5000, 1000 ,500 ... ale tak takto by malo vyzerať riešenie
program rozklad;
uses crt;
var peniaze:array[1..11] of integer;
suma: longint;
BEGIN
clrscr;
write('Zadaj pozadovanu sumu: ');
readln(suma);
peniaze[1]:=suma div 5000;
suma:=suma mod 5000;
peniaze[2]:=suma div 1000;
suma:=suma mod 1000;
peniaze[3]:=suma div 500;
suma:= suma mod 500;
peniaze[4]:=suma div 200;
suma:=suma mod 200;
peniaze[5]:=suma div 100;
suma:=suma mod 100;
peniaze[6]:= suma div 50;
suma:=suma mod 50;
peniaze[7]:=suma div 20;
suma:=suma mod 20;
peniaze[8]:=suma div 10;
suma:= suma mod 10;
peniaze[9]:= suma div 5;
suma:=suma mod 5;
peniaze[10]:=suma div 2;
suma:=suma mod 2;
peniaze[11]:=suma;
if peniaze[1]<>0 then writeln(peniaze[1],' x 5000');
if peniaze[2]<>0 then writeln(peniaze[2],' x 1000');
if peniaze[3]<>0 then writeln(peniaze[3],' x 500');
if peniaze[4]<>0 then writeln(peniaze[4],' x 200');
if peniaze[5]<>0 then writeln(peniaze[5],' x 100');
if peniaze[6]<>0 then writeln(peniaze[6],' x 50');
if peniaze[7]<>0 then writeln(peniaze[7],' x 20');
if peniaze[8]<>0 then writeln(peniaze[8],' x 10');
if peniaze[9]<>0 then writeln(peniaze[9],' x 5');
if peniaze[10]<>0 then writeln(peniaze[10],' x 2');
if peniaze[11]<>0 then writeln(peniaze[11],' x 1');
readkey;
END.
PS: ak to ideš odovzdávať tak si to prepíš do češtiny ;)
To jelis : length je funkcia alebo procedura nie som si isty teraz, ktora vracia dlzku retazca ako cislo, teda ciselne vyjadri kolko znakov je v retazci, da sa to nahradit este tak ze by si namiesto length(veta) napisal Ord(veta[0])
Urcite sa to da aj inak ze by si si zaviedol nejake pocitadlo kolko krat si tukol do klavesnice ale neskusal som take riesenie...
Ahoj chlapci nechcete si nekdo zkusit tenhle program? Sme s Jelisem a rouderem z jedny tridy co dostali programovani a sme uplne v prdeli.. konkrétně mě kvuli tomu uteklo přijetí na Vš :-!
Zadání: zadat pocet hodnot do pole (max 20) a vysledkem je vypis poli kde jsou cisla suda
vypsat na kterych pozicich v poli jsou suda cisla.
takze zadat pocet..treba 5
pak zadat ty cisla
a vysledkem je vypis pozic kde lezi suda cisla...
Vám to bude vhodné jako trénink a mě jako záchrana.. Díky předem všem!
V čem vidíte problém? Výjimečně sem napíšu hotový program, ale uvědom si, že když nesestavíš takhle triviální program, tak na VŠ dopadneš špatně.
const max=20;
var pole:array[1..max] of integer;
a,i:integer;
begin
write('Kolik hodnot chces zadat?: ');
readln(i);
if (i<1) or (i>max) then Halt;
for a:=1 to i do
begin
write('cislo ',a,'?: ');
readln(pole[a]);
end;
writeln('Suda cisla jsou na nasledujicich pozicich:');
for a:=1 to i do
if not odd(pole[a]) then write(a,', ');
writeln(#8#8,' ');
readln;
end.
Předem odpověď na jeden očekávaný dotaz :-) :
#8 je kód backspacu, writeln(#8#8); funguje jako jeho dvě zmáčknutí. Takže způsobí umazání posledních dvou znaků před kurzorem (zde čárka a mezera za posledním vypsaným číslem). Je to jen takový kosmetický detail.
Moje stránka.
Díky moc za program. Abych věc uvedl na pravou míru: Vím, že na VŠ bych byl v prdeli, kdybych měl dělat nějakou, kde by to po mě chtěli. Ted jsem na střední kde nám přidali do rozvrhu prostě 2 hodiny každýmu chtě nechtě a víceméně sem neměl jinou možnost než jít na programování který vůbec dělat nechci, nezajímá mě a nebaví mě. Prostě to nějak musím přežít. Toť ovšem naše školství. Tímto se všem omlouvám za "lamerský" dotazy a ještě jednou děkuji za vypracování.
Nevíte někdo jak vyřešit tento program: Je zadáno počet prvků do 20; prvky vložit do pole a sečíst zvlášť čísla na sudých postech a zvlášť čísla na lichých postech. Vypadá to jednoduše, ale mě to prostě nejde.
wen napsal:
Zkus napsat kus kodu co mas...a co ti nebezi? Abychom to pripadne doladili
Program Pole;
uses crt;
var p: array [1..20] of integer;
i: integer;
begin clrscr;
write ('Zadej cisla: ');readln(i)
FOR i:1 TO 20 DO IF
Jak vidíš moc daleko jsem nepokročil a určitě bude i tohle špatně
To Average : zacal si celkom dobre, ale koniec je zly tak ako to mas by si nacital len jednu hodnotu a aj to len do premennej i a nie do pola. Do pola mozes nacitavat napr takymto sposobom
for i:=1 to 20 do
begin
write(i,'.cislo = ');
readln(pole[i]);
end;
cyklus zabezpeci ze sa nacita cislo vzdy do dalsieho miesta(indexu) pola, az kym sa pole nenaplni 20 cislami
takto by to mohlo cele vyzerat:
program pole;
uses crt;
const MaxCisel = 20;
var cisla : Array[1..MaxCisel] of integer;
i, ParneSum, NeparneSum : integer;
begin
clrscr;
ParneSum:=0;
NeparneSum:=0;
writeln('Zadajte 20 cisel');
for i:=1 to MaxCisel do
begin
write(i,'.cislo = ');
readln(cisla[i]);
end;
write('Sucet cisel na parnych poziciach pola = ');
for i:=1 to MaxCisel do
if i mod 2 = 0 then ParneSum:=ParneSum+cisla[i]
else NeparneSum:=NeparneSum+cisla[i];
writeln(ParneSum);
writeln('Sucet cisel na neparnych poziciach pola = ',NeparneSum);
readln;
end.
zhruba to funguje tak ze pomocou cyklu sa nacitaju cisla do pola a potom pomocou dalsieho cyklu ktory obsahuje podmienku
sa spocitaju cisla na parnych poziciach, ta podmienka zistuje ci je index parny a to pomocou zvysku po celociselnom deleni, ak je zvysok 0 tak je to parny index inak je neparny a spocitaju sa cisla na neparnych poziciach
Potřevoval bych vyřešit jeden program v pascalu, spíše začátečnický až pokročilý, na programování moc nejsem, triviální začátky umím ale tohle už je na mě moc.Pokud máte nekdo chuť (což doufám že ano) dejte mi pls vědět na ICQ 411304770. prosím napište, díky.
Proč to řešit v kuloárech, šup s tím na fórum:
const maxkulicek=100;
var f:text;
k:array[1..maxkulicek] of record x,y,z:real;barva:byte;end;
i,j,pocet:byte;
m,c,mc,u:real;
m1,m2,c1,c2,mc1,mc2:byte;
begin
pocet:=0; {zatim jsme zadne kulicky nenacetli}
Assign(f,'kulicky.txt');
Reset(f);
while not eof(f) do
begin
inc(pocet); {nova radka s novou kulickou}
read(f,k[pocet].x); {nacti X souradnici}
read(f,k[pocet].y); {nacti Y souradnici}
read(f,k[pocet].z); {nacti Z souradnici}
readln(f,k[pocet].barva); {nacti barvu a ukonci radku}
end;
Close(f);
m:=0;
c:=0;
mc:=0;
for i:=1 to pocet-1 do
for j:=i+1 to pocet do
begin
{vzdalenost 2 bodu v prostoru}
u:=sqrt(sqr(k[i].x-k[j].x)+sqr(k[i].y-k[j].y)+sqr(k[i].z-k[j].z));
if k[i].barva<>k[j].barva then
if (u<mc) or (mc=0) then begin mc:=u;mc1:=i;mc2:=j;end else else
if k[i].barva=0 then
if (u<m) or (m=0) then begin m:=u;m1:=i;m2:=j;end else else
if (u<c) or (c=0) then begin c:=u;c1:=i;c2:=j;end;
end;
writeln('CERVENY PAR:');
writeln('vzdalenost: ',c:3:3);
writeln('jde o: c.',c1,' & c.',c2);
writeln('jejich souradnice: ',k[c1].x:3:3,',',k[c1].y:3:3,',',k[c1].z:3:3,' & ',
k[c2].x:3:3,',',k[c2].y:3:3,',',k[c2].z:3:3);
writeln;
writeln('MODRY PAR:');
writeln('vzdalenost: ',m:3:3);
writeln('jde o: c.',m1,' & c.',m2);
writeln('jejich souradnice: ',k[m1].x:3:3,',',k[m1].y:3:3,',',k[m1].z:3:3,' & ',
k[m2].x:3:3,',',k[m2].y:3:3,',',k[m2].z:3:3);
writeln;
writeln('CERVENO-MODRY PAR:');
writeln('vzdalenost: ',mc:3:3);
writeln('jde o: c.',mc1,' & c.',mc2);
writeln('jejich souradnice: ',k[mc1].x:3:3,',',k[mc1].y:3:3,',',k[mc1].z:3:3,' & ',
k[mc2].x:3:3,',',k[mc2].y:3:3,',',k[mc2].z:3:3);
writeln;
readln;
end.
Předně to ulož jako textový soubor a ne DOC (ten neotevřeš ničím jiným než Wordem). Takže Ctrl+C nebo tak něco, přenes do Poznámkového bloku a ulož. Pak to čteš normálně procedurami Read a Readln, jak je uvedeno v tom programu.
Moje stránka.
Tuhle hlášku jsem ještě neviděl. Zkontroluj Compile -> Target a kdyžtak sem hoď screen (ale v GIFu a trochu ho ořízni, ať nemusím zase stahovat 300kilové JPG).
Soubor kul.txt jsi neposlal, tak jsem si musel udělat svůj:
10 20 30 1
100 50 1 12
2 5 66 10
Program jsem spustil, výstup je v příloze. Chyba 201 je Range check error a objevila se proto, že se snažíš přistupovat k prvkům pole s indexy c1 a c2, jenže tyhle proměnné mají zrovna hodnotu 0 a indexy pole začínají až od 1, takže jsi mimo a proto ta chyba.
Syntakticky je program v pořádku (opsal jsi to dobře), takže teď se zamysli nad funkcí a vlož do toho nějakou vlastní práci.
Moje stránka.
Mircosofte, tvůj KUL.TXT nemá správný formát dat, protože jako identifikaci barvy tam máš hodnoty 12 a 10, kdežto povolené jsou jenom 1 a 0.
Ale je fakt, že já jsem opomněl pořešit případ, kdy jsou v souboru KUL.TXT jenom červené nebo naopak jenom modré kuličky. V takovém případě doopravdy vnikne chyba 201.
Tudíž kolega Tomano by mohl tyto kontoly doplnit :smile14:
1) Nepiš stejný dotaz do více vláken.
2) Pro nový dotaz založ nové vlákno.
3) Prohledej fórum (stačí jenom o pár vláken zpátky). Jsem si jistý, že jsem tohle vysvětloval minimálně třikrát.
:smile20:
Moje stránka.
Aha, tak už je to jasné!
Základní problém je to, že kuliček je moc, tedy více, než je hodnota maxkulicek
Proto je nutné
1) zvýšit hodnotu Maxkulicek
2) změnit typ BYTE na typ INTEGER, abychom mohli zpracovávat více než 255 kuliček.
3) pro jistotu dát pojistku proti překročení Maxkulicek
Další problém s tvým souborem KULICKY.TXT je to, že na konci obsahuje několik prázdnýxh řádek. To působí potíže proceduře Read(číslo), protože není schopná z takového řádku načíst číselnou hodnotu. Read je extrémně citlivá na správný formát vstupních dat. Proto je rozumné načítání kuliček změnit, aby to bylo blbuvzdornější. Změněný program bude vypadat takto:
const maxkulicek=1200;
var f:text;
s:string;
k:array[1..maxkulicek] of record x,y,z:real;barva:byte;end;
i,j,pocet:integer;
m,c,mc,u:real;
m1,m2,c1,c2,mc1,mc2:integer;
begin
pocet:=0; {zatim jsme zadne kulicky nenacetli}
Assign(f,'kulicky.txt');
Reset(f);
while not eof(f) do
begin
readln(f,s);
while (s[1] in [' ',#9]) and (s<>'') do
delete(s,1,1); {smaze pripadne mezery a taby}
if s='' then Break;
inc(pocet); {nova radka s novou kulickou}
if pocet>maxkulicek then
begin
pocet:=maxkulicek;
writeln('Soubor je prilis velky, bude zpracovano pouze prvnich, ',
maxkulicek,' kulicek.'#13#10);
Break;
end;
i:=pos(' ',s);
Val(Copy(s,1,i-1),k[pocet].x,j);
delete(s,1,i);
while s[1] in [' ',#9] do delete(s,1,1); {smaze pripadne mezery a taby}
i:=pos(' ',s);
Val(Copy(s,1,i-1),k[pocet].y,j);
delete(s,1,i);
while s[1] in [' ',#9] do delete(s,1,1); {smaze pripadne mezery a taby}
i:=pos(' ',s);
Val(Copy(s,1,i-1),k[pocet].z,j);
delete(s,1,i);
while s[1] in [' ',#9] do delete(s,1,1); {smaze pripadne mezery a taby}
Val(s[1],k[pocet].barva,j);
end;
Close(f);
m:=0;
c:=0;
mc:=0;
for i:=1 to pocet-1 do
for j:=i+1 to pocet do
begin
{vzdalenost 2 bodu v prostoru}
u:=sqrt(sqr(k[i].x-k[j].x)+sqr(k[i].y-k[j].y)+sqr(k[i].z-k[j].z));
{ukol pro pozorneho ctenare: proc asi davam ke vzdalenostem zaporne znamenko?}
if k[i].barva<>k[j].barva then
if (u<mc) or (mc=0) then begin mc:=u;mc1:=i;mc2:=j;end else else
if k[i].barva=0 then
if (u<m) or (m=0) then begin m:=u;m1:=i;m2:=j;end else else
if (u<c) or (c=0) then begin c:=u;c1:=i;c2:=j;end;
end;
writeln('CERVENY PAR:');
writeln('vzdalenost: ',c:3:3);
writeln('jde o: c.',c1,' & c.',c2);
writeln('jejich souradnice: ',k[c1].x:3:3,',',k[c1].y:3:3,',',k[c1].z:3:3,' & ',
k[c2].x:3:3,',',k[c2].y:3:3,',',k[c2].z:3:3);
writeln;
writeln('MODRY PAR:');
writeln('vzdalenost: ',m:3:3);
writeln('jde o: c.',m1,' & c.',m2);
writeln('jejich souradnice: ',k[m1].x:3:3,',',k[m1].y:3:3,',',k[m1].z:3:3,' & ',
k[m2].x:3:3,',',k[m2].y:3:3,',',k[m2].z:3:3);
writeln;
writeln('CERVENO-MODRY PAR:');
writeln('vzdalenost: ',mc:3:3);
writeln('jde o: c.',mc1,' & c.',mc2);
writeln('jejich souradnice: ',k[mc1].x:3:3,',',k[mc1].y:3:3,',',k[mc1].z:3:3,' & ',
k[mc2].x:3:3,',',k[mc2].y:3:3,',',k[mc2].z:3:3);
writeln;
readln;
end.
(ošetření proti případu, že je obsažen jen jeden druh kuliček jsem nepřidal - zůstává to na tobě)
skvělé - teď už mi to opravdu funguje. Poklona.
Ale rád bych se zeptal jestli by to šlo udělat i bez té pojistky. To by mi ve škole učitel asi neuvěřil že sem vymyslel tu pijistku. Když sem se ji snažil odstranit, tak mi to zase házelo chybu.
Jo a rád bych věděl proč si psal do těch vzdáleností ty záporná znamínka?
Komentář o záporním znaménku...
...ten ehm... zruš.
Já jsem to původně napsal trošku jinak, kde se záporná známénka používala, myslel jsem to jako fígl, jak zajistit, aby v IF nemusela být dvojitá podmínka, ale nefungovalo to dobře, tak jsem to nakonec udělal bez něj.
Bez pojistky by to udělat šlo, ale fakt ti nebudu upravovat program z důvodu, aby učitel nepřišel na to, že jsi ho nepsal ty a že jsi ho vlastně oklamal.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Domácí úkol — založil Anonim
Domaci ukol — založil Jakub
Domácí úkol (?) — založil Montezo
Domáci úkol — založil Franta
Domácí úkol — založil Ondra
Moderátoři diskuze