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.
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