Ahoj, vidim ze jste tady strase sikovi lidi tak bych se chtel zeptat jestli by mi sti nekdo nepomohl protoze v tom trochu plavu. Tady je muj ukol:
Z klávesnice je zadáváno N vstupních hodnot z rozmezí 1 až 100 včetní. Napište program zjišťující četnost jednotlivých hodnot. Zadávání bude probíhat tak dlouho dokud uživatel nezadá 0 a ENTER. Pak se vypíšou hodnoty s četností >= 1. Program bude obsahovat funkci, která po zadání hodnoty N (počet vstupních hodnot) a četnosti konkrétní hodnoty vypočítá a vrátí její relativní četnost v procentech. Oddělení tabulátorem. Včetní nadpisu a procentuálního vyjádření relativní četnosti. Ošetřete případ, kdy uživatel zadá hodnotu mimo stanovený rozsah.
Predem dekuji tem ochotym.
Fórum › Pascal
Pomoc - Program na četnost
Připravil bych si pole (array). V každém prvku by byl záznam (record) s položkami "číslo" a "počet". Pak bych si deklaroval celočíselnou proměnnou, ve které bych měl uloženo, kolik čísel už jsem od uživatele načetl (na začátku vynulovat!).
Potom cyklus: nechám zadat číslo (Readln). Pokud je to 0, končím, jinak ho zpracuji.
Zpracování čísla: projdu pole. Pokud v něm zadané číslo najdu, zvýším mu jeho počet o 1. Pokud ho nenajdu, vytvořím nové s počtem 1 (a o 1 zvýším proměnnou s počtem prvků v poli, abych věděl, odkaď pokaď mám to pole procházet).
Teď mám pole, kde v každém prvku je uloženo číslo a jeho četnost.
Relativní četnost se vypočítá tak, že se sečtou všechny četnosti v celém poli, tímto součtem se vydělí příslušná absolutní četnost (nutno použít reálné dělení - "/") a vynásobí se to 100, aby to vyšlo v %.
Stačí takhle?
Moje stránka.
Něco takového se tu už řešilo:
http://programujte.com/index.php?akce=diskuze&kam=vlakno&tema=6596-pomoc-du
No tak dobře, tady je řešení:
const MAXHODNOTA = 20000;
MAXPOCET = 100;
type practype = record
cislo,cetnost:word;
end;
var data:array[1..MAXPOCET] of word;
prac:array[1..MAXPOCET] of practype;
Function NactiHodnoty:integer;
var s:string;
i,n:longint;
j:integer;
begin
n:=0;
writeln('Napis N hodnot. Zadavani ukoncis hodnotou 0');
repeat
readln(s);
Val(s,i,j);
if (j<>0) or (i<0) or (i>MAXHODNOTA)
then writeln('Zadavej pouze cela cisla v rozsahu 1 az ',MAXHODNOTA,'. Vstup ukoncis nulou.')
else
if i>0 then
begin
inc(n);
data[n]:=i;
end;
until (i=0) and (j=0);
NactiHodnoty:=n;
end;
var a,d,c,p:word;
r:real;
je_tam:boolean;
begin
c:=0;
p:=NactiHodnoty;
if p=0 then
begin
writeln('Nebyla zadana zadna data, koncim');
Halt;
end;
for a:=1 to p do
begin
je_tam:=false;
for d:=1 to c do
if prac[d].cislo=data[a] then
begin
inc(prac[d].cetnost);
je_tam:=true;
Break;
end;
if je_tam=false then
begin
inc(c);
prac[c].cislo:=data[a];
prac[c].cetnost:=1;
end;
end;
writeln;
writeln('Bylo zadano ',c,' ruznych hodnot:');
writeln('hodnota',#9,'cetnost',#9,'v procentech');
for a:=1 to c do
begin
r:=prac[a].cetnost/p*100;
writeln(prac[a].cislo,#9,prac[a].cetnost,#9,r:3:1,'%');
end;
readln;
end.
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
Program ve VB - pomoc — založil Hanes
Pomoc s program — založil sa54d
Pomoc: program v jazyce C: dvě matice — založil Radektomek
Pomoc - program pro vypsani retezce N hodnot — založil IronBoy
Program na vypsání prvočísel do max.čísla - pomoc — založil aoedann
Moderátoři diskuze