Ahoj dostal jsem od učitelky úkol, abych udělal program přes cyklus. Učili jsme se zatím jen FOR, REPEAT a WHILE. Já si nevím rady tak mi ten program prosím někdo napište. Zadání je: Vypočítej průměrné rychlosti 10 aut a pak by měl program vybrat maximální a minimální rychlost. Tak to prosím někdo zkuste spěchá to. Díky
Fórum › Pascal
Rychlosti NALÉHAVÉ
Obávám se, že úkoly tu za tebe nikdo psát nebude. Pošli část kódu kterou už máš a řekni co ti nefunguje, poradíme:)
To Cherokee007 :
To hlavní ti řekl Chrasty. Já jen doplním:
- Víc cyklů než for, repeat a while neexistuje, takže znáš všechno, co potřebuješ.
- Pro ukládání rychlostí bude nejvhodnější pole čísel (array).
- Hledání největší a nejmenší hodnoty už se tu řešilo mockrát, hledej.
- Výpočet průměrné rychlosti znamená sečíst všechny rychlosti a podělit počtem aut.
Moje stránka.
Tak tady je to co mi nejde hází to všelijaké chyby a nejde to tak nějak celkově tak se mi na to prosím někdo mrkněte díky.
program vypocet;
{$APPTYPE CONSOLE}
uses
SysUtils;
var s,t,i:integer;
v: array[1..10] of real;
sucet,priemer:real;
procedure bubblesort;
var k,l:integer;
p:real;
begin
for k := 1 to 10 do begin
for l := 1 to 9 do begin
if v[l] < v[l+1] then begin
p := v[l];
v[l] := v[l+1];
v[l+1] := p;
end;
end;
end;
end;
begin
{ TODO -oUser -cConsole Main : Insert code here }
for i := 1 to 10 do begin
write('Zadaj ' + inttostr(i) + '. zaznam v tvare drahaMEDZERAcas: ');
read(s, t);
{hned prepocitam na rychlost a zapisem do pola, nech si nemusim pamatat vela veci naraz}
v[i] := s / t;
writeln('Rychlost: ',v[i]:0:2);
end;
bubblesort;
for i := 1 to 10 do begin
sucet := sucet + v[i];
end;
priemer := sucet / 10;
writeln('Sucet: ',sucet:0:2,', priemer: ',priemer:0:2,', najvacsia rychlost: ',v[1]:0:2,'.');
readln;
readln; {neviem preco treba 2x readln}
end.
Mircosoft napsal:
To Cherokee007 :
To hlavní ti řekl Chrasty. Já jen doplním:
- Víc cyklů než for, repeat a while neexistuje, takže znáš všechno, co potřebuješ.
- Pro ukládání rychlostí bude nejvhodnější pole čísel (array).
- Hledání největší a nejmenší hodnoty už se tu řešilo mockrát, hledej.
- Výpočet průměrné rychlosti znamená sečíst všechny rychlosti a podělit počtem aut.
A čo povieš na foreach ?? ;)
>Tocimanko: na foreach povím, že v Pascalu není :smile3:
>Cherokee:
- nevím, jestli má FP ve standardní výbavě (nebo v té jednotce Sysutils) funkci Inttostr. Jestli ti na ní hlásí chybu "unknown identifier", tak ten řádek přepiš na:
write('Zadaj ',i,'. zaznam v tvare drahaMEDZERAcas: ');
- Dráhu a čas (s, t) bych dal radši reálné (uživatel určitě nebude zadávat jen celá čísla).
- Místo Read(s,t) použij radši Readln(t,s) (Readln je stavěná na čtení z klávesnice, Read moc ne). Možná že se tím vyřeší problém s Readln na konci programu a bude stačit jedno.
- Před počítáním součtu musíš proměnnou Součet vynulovat, jinak se ti do ní připočítá nějaká nedefinovaná hodnota, která v ní byla před začátkem cyklu (globální proměnné sice bývají obvykle na začátku programu nulové, ale nespoléhal bych se na to)
- Nejmenší rychlost najdeš na opačném konci pole než jsi našel tu největší.
Zbytek mi připadá v pořádku.
Moje stránka.
To Tocimanko : Jeden důvod, proč by měl být Pascal přežitek? Řeší se to tady asi 10krát do roka :-). Pascal je IMHO srozumitelnej a jednoduchounkej programovací jazyk, jehož kód může normální člověk číst jako knihu :-). Neznám žádný druhý takový. A Pascal dokáže vše, jako jiné programovací jazyky. Jenom vědět, jak na to. Jestli máš něco proti, zkus si naprogramovat podmínku s else větví v Brainfucku a pak teprve komentuj.
ktyž jsem hledal na internetu všelijaký návod vůbec mi nic nefungovalo ani nevim proč
Keď si skúšal na .NET platforme príklady z VB 4/5/6 alebo inej verzie, tak pochopiteľne to nefungovalo... Inak je to strašne jednoduchý a pochopiteľný jazyk
Zpět k tématu.
Cherokee007, tvůj program funguje, nedodělky uprav podle toho, co psal Mircosoft a bude to dobrý.
Ještě doporučuju, upozornit na začátku programu uživatele, že bude zadávat 10 hodnot. Ono když člověk zadává už šestou hodnotu a neví, kdy to bude končit, tak je to dost frustrující.
Dále, smyčka FOR s jedním příkazem. V takovém případě není třeba uzavírat tento příkaz do bloku BEGIN END. Tedy, místo
for i := 1 to 10 do begin sucet := sucet + v[i];end;
stačí for i := 1 to 10 do sucet := sucet + v[i];
Zbytečně také používáš proceduru BubbleSort. To je učebnicový příklad tzv. použití kanónu na vrabce. Ty přece nepotřebuješ setřídit pole, ale jen vybrat největší hodnotu.
Zjistit počet nových příspěvků
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
Pomoc v nouzi je to nalehave — založil Lama pls help
Pád rychlosti na AP/Switchi — založil Dominik
Výpočet rychlosti stahování — založil Mariz
Omezeni rychlosti uploadu/downloadu — založil anonym
Pomoc pri rychlosti s mikrovlnkou — založil Redy
Moderátoři diskuze
TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Duch

Nahlásit jako SPAM
IP: 195.113.181.–
Posthunter

Věrný člen
Grafoman
Expert
Stálý člen

