Pomoc - Program na četnost – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

 Pomoc - Program na četnost – Pascal – Fórum – Programujte.com Pomoc - Program na četnost – Pascal – Fórum – Programujte.com

 

Marrek
~ Anonymní uživatel
1 příspěvek
2. 12. 2007   #1
-
0
-

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.

Nahlásit jako SPAM
IP: 213.191.111.–
Mircosoft+1
Věrný člen
3. 12. 2007   #2
-
0
-

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?

Nahlásit jako SPAM
IP: 89.176.249.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
Laaca0
Stálý člen
4. 12. 2007   #3
-
0
-
Nahlásit jako SPAM
IP: 81.0.253.–
DOS-u-akbar
Laaca0
Stálý člen
8. 12. 2007   #4
-
0
-

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.

Nahlásit jako SPAM
IP: 81.0.253.–
DOS-u-akbar
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 4 hosté

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý