Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
ahoj prosím o radu, potřebuju napsat program, do kterého uživatel zadá kolik bude zadávat čísel a následně tato čísla zadá a úkolem programu je zjistit, která čísla se tam vyskytla nejčastěji a vypsat jaká čísla to jsou a kolikrát se tam vyskytla
příklad:
chci zadat 8 čísel
zadam čísla: 2 2 1 3 5 4 3 1
a program mi musí vypsat že se nejčastěji vyskytla čísla 1, 2 a 3 a vyskytla se 2x
program mi jen vypisuje kolikrát se které číslo vyskytlo, takže u příkladu který sem uváděla by mi vypsal
číslo 2 se vyskytlo 2x
číslo 1 se vyskytlo 2x
číslo 3 se vyskytlo 2x
číslo 4 se vyskytlo 1x
číslo 5 se vyskytlo 1x
ale nevim jestli mi to vlastně k něčemu je, tak bych se chtěla zeptat jestli by byla možná rada, jak takový program napsat, předem díky
Offline
Musíš použít pole? Jestli ano, asi bude nejlepší udělat 2rozměrné pole, jeden rozměr pro ta čísla ze vstupu, druhý pro jejich četnosti, k tomu dvě proměnné, v jedné budeš mít největší výskyt a ve druhé počet různých čísel. Při načítání čísel u každého projdeš pole jestli už tam je, když ano, změníš u něj četnost, jinak ho zapíšeš na konec. Po načtení všech čísel vypíšeš ta, která mají maximální četnost.
Offline
#include <stdio.h>
#include <stdlib.h>
#define MIN -200000000
#define MAX 200000000
/*
*
*/
int pole[MAX-MIN];
int main(void) {
int cislo,test,pocet,i,test2,pom;
printf("Zadejte pocet cisel:\n");
test = scanf("%d",&pocet);
if(test<1) {
printf("Nespravny vstup.\n");
return(0);
}
if (pocet<=0 || pocet>=10000) {
printf("Nespravny vstup.\n");
return(0);
}
printf("Zadejte cisla:\n");
for (i=0; i<pocet ;i++) {
test2=scanf("%d", &cislo);
if (cislo>=MIN && cislo<=MAX)
pole[cislo-MIN]++;
}
if (test2<1){
printf("Nespravny vstup.\n");
return(0);
}
for (i=MIN; i<=MAX; i++){
/*if(pole[i-MIN]>pole[i]){
pom=pole[i];
pole[i]=pole[i-MIN];
pole[i-MIN]=pom;
*/
if (pole[i-MIN]){
printf("Nejcasteji se opakujici cislo se vyskytlo %dx a bylo to cislo: %d.\n",pole[i-MIN],i);
}
}
return 0;
}
to FailED: ano musím použít pole a to co píšeš, tak myslím že přesně tak nějak by ten postup i měl být, akorát v tom je ten problém, že já moc programování neovládam, takže nemam moc představu jak to napsat, jindy mam aspoň nějaký nápad, teď bohužel jen temno
Offline
↑ case_fcs:
Brali jste dynamické pole?
Podle mě je velikost pole 1,5GB trochu moc pro vstup z konzole, opravdu Ti to funguje?
Pole musíš po deklaraci inicializovat když ho chceš procházet celé a porovnávat hodnoty.
Offline
jo jo dynamické pole sme brali, ale neumim ho použít, to 1.5gb to je asi kvuli tomu min a max jak sem zadefinovala co? myslela sem že tim zadam která čísla(odkud kam) je možné použít, chtěla sem aby tam byla všechna čísla co jsou v integeru, ale to mi ňák nešlo, ale asi to chápu špatně, jinak uživatel smí zadat maximálně 10000 čísel, ale čísla mohou být i záporná
Offline
↑ case_fcs:
No tys deklarovala pole jako
int pole[MAX-MIN]; //to je stejné jako int pole[200000000--200000000];
Indexování podle očekávaných hodnot je dobrý nápad, ale v tomhle případě je to nejspíš opravdu moc paměťově náročné.
Pro jednoduchost, a protože potřebujeme jen 2 hodnoty ke každému indexu si asi vytvoř 2 pole, jedno pro čísla, druhé pro četnosti. Pozor, pole četností musíš vynulovat!
int * PoleCisel; PoleCisel = (int *) malloc(pocet*sizeof(int)); /* Nesmíš nakonec zapomenout vrátit paměť: */ free(PoleCisel);
Potom ve smyčce
for (i=0; i<pocet ;i++) {}
Musíš projet pole (doporučuji proměnnou pro počet různých čísel v poli s čísly a projíždět jen nastavené indexy, abys nemusela pole procházet celé, a nemusela počátečně inicializovat pole s čísly)
a jestli tam číslo už je, zvětšíš hodnotu jeho četnosti v poli s četnostmi na stejném indexu.
Nakonec vypíšeš všechna čísla z pole s čísly, která jsou na indexech jako největší četnost v poli s četnostmi.
Offline
jo tak to sme přesně brali, to sem viděla někde v materiálech to malloc a free, akorát já teď právě nevim vůbec jak to používat a napsat
zrovna tohle "a jestli tam číslo už je, zvětšíš hodnotu jeho četnosti v poli s četnostmi na stejném indexu." tak tam nemam žádnou představu pro kód
jo a třeba tohle teda if (cislo>=MIN && cislo<=MAX)
pole[cislo-MIN]++;
a taky tohle for (i=MIN; i<=MAX; i++)
if (pole[i-MIN])
co mam v tom programu nebudu potřebovat? to mam totiž z přednášky,nerozumim tomu přesně jak to funguje, ale každopádně, aspoň mi to už vypisovalo který číslo se kolikrát objevilo
nevim teda jak to přepsat, omlouvam se za mou nechápavost, ale tenhle program mi moc do hlavy nejde, tak jestli by bylo prosim možný ještě ňáký bližší přiblížení
Offline
↑ case_fcs:
To MIN a MAX jsou konstanty (ještě předtím, než se program přeloží se všude v kódu nahradí svými hodnotami).
Samozřejmě že by ti to fungovalo tvým způsobem, jen bys musela jednou to pole projít a najít největší číslo výskytu a potom vypsat všechna čísla s takovým výskytem.
Já jsem to myslel takhle:
pokud bys měla navíc
dvě pole (celych cisel):
PoleCisel, PoleCetnosti
a dvě další proměnné (cela cisla) pro počet různých čísel a největší četnost
RuznychCisel, NejvyssiCetnost
potom by ten cyklus mohl vypadat třeba takto:
for (i=0; i<pocet ;i++) { test2=scanf("%d", &cislo); for (int j=0; j<=RuznychCisel; j++){ if (PoleCisel[j]==test2){ PoleCetnosti[j]++; if (PoleCetnosti[j]>NejvyssiCetnost){ NejvyssiCetnost++; } break; } else if (j==RuznychCisel){ PoleCisel[j]=test2; PoleCetnosti[j]++; RuznychCisel++; } } }
Doufám že jsem to někde nezkopal.
Edit: PoleCetnosti, RuznychCisel a NejvyssiCetnost musíš na začátku nastavit na 0.
Offline
↑ case_fcs: zkus si projit nasledujici kod, ktery dela to, co potrebujes, treba bude pro tebe lepe pochopitelny. prvni cyklus nacte zadany pocet cisel, druhy cyklus mezi nimi nalezne nejvetsi a treti cyklus spocita, kolikrat se tam toto nejvetsi cislo vyskytuje
#include <iostream> #include <cstdlib> int main(int argc, char** argv) { int pocet; int * zasobnik; printf("Kolik cisel budes nacitat? "); scanf("%d", &pocet); zasobnik = (int*) calloc(pocet, sizeof(int)); for (int i = 0; i < pocet; i++) { printf("Zadej %d. cislo: ", i + 1); scanf("%d", &zasobnik[i]); } int maximum = zasobnik[0]; for (int i = 1; i < pocet; i++) { if (zasobnik[i] > maximum) maximum = zasobnik[i]; } int vyskytu = 0; for (int i = 0; i < pocet; i++) { if (zasobnik[i] == maximum) vyskytu++; } printf("Maximalni zadana hodnota je %d, vyskytla se %d.\n", maximum, vyskytu); return 0; }
Offline
to plisna:
já bych právě potřebovala aby mi ten program vypsal nejvyskytovanější číslo popřípadě čísla (pokud se tam některá vyskytnou stejněkrát), tvůj program vypíše největší číslo, každopádně ale děkuji, prozkoumám to a zkusím to trochu přepsat jestli bych na to nějak nepříšla
to FailED:
a tobě taky děkuji zkusim využít tvého kódu, snad už bych to mohla dát dohromady s tak velkou nápovědou :) ale asi stejně ještě budu psát o radu, tak tohle téma prosím ještě sledujte :)
Offline
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int cislo,test,pocet,i,test2,j,RuznychCisel,NejvyssiCetnost;
int PoleCetnosti[j];
int *PoleCisel;
PoleCisel = (int *) malloc(pocet*sizeof(int));
printf("Zadejte pocet cisel:\n");
test = scanf("%d",&pocet);
PoleCetnosti=0;
RuznychCisel=0;
NejvyssiCetnost = 0;
if(test<1) {
printf("Nespravny vstup.\n");
return(0);
}
if (pocet<=0 || pocet>=10000) {
printf("Nespravny vstup.\n");
return(0);
}
printf("Zadejte cisla:\n");
for (i=0; i<pocet ;i++) {
test2=scanf("%d", &cislo);
for (j=0; j<=RuznychCisel; j++){
if (PoleCisel[j]==test2){
PoleCetnosti[j]++;
if (PoleCetnosti[j]>NejvyssiCetnost){
NejvyssiCetnost++;
}
break;
}
else if (j==RuznychCisel){
PoleCisel[j]=test2;
PoleCetnosti[j]++;
RuznychCisel++;
}
}
}
if (test2<1){
printf("Nespravny vstup.\n");
return(0);
}
for (j=0;j<RuznychCisel;j++){
printf("Nejcasteji se opakujici ");
if(RuznychCisel>1){
printf("cisla se vyskytla %dx a byla to cisla: ");
if(RuznychCisel>2 && RuznychCisel<3)
printf("%d a %d.\n",j,j);
else if (RuznychCisel>3){
printf("%d",j);
printf(",");
printf("%d");
}
}
else
printf("cislo se vyskytlo %dx a bylo to cislo: %d.\n",PoleCisel[j],j)
}
free(PoleCisel);
return 0;
}
to FailED:
tak jo už nemůžu, nemam šanci na to přijít, ale potřebovala bych to, tak prosím asi o úplnou radu, je-li to možné, nevim jak to napsat a hlavně na konci toho kódu už mam zmatek, protože pokud se vyskytne více čísel která jsou nejvícekrát zapsaná tak je to potřeba napsat v jedné řádce, ukážu na příkladu
zadám 7 čísel
2 2 1 3 3 5 1
a výpis musí vypadat takto: Nejcasteji se opakujici cisla se vyskytla 2x a byla to cisla: 1, 2 a 3.
nevim jak tam vepsat tu čárku a to áčko, ikdyž nevim ani co s tim programem celkově, vim že si mi napsal uplně přesnej postup ale stejně tam někde musim dělat chybu protože mi program dovolí napsat jenom jedno číslo a pak vyskočí chyba, tak prosím o detailní radu jak to napsat, moc moc děkuji
Offline
#include <stdio.h> #include <stdlib.h> int main() { int pocet = 0, *pole_cisel, *pole_cetnosti; printf("Kolik cisel chces zadavat? "); scanf("%d", &pocet); if((pole_cisel = (int *) malloc(pocet * sizeof(int))) == NULL) { printf("Chyba pri alokaci pameti\n"); } if((pole_cetnosti = (int *) malloc(pocet * sizeof(int))) == NULL) { printf("Chyba pri alokaci pameti\n"); } for(int i = 0; i < pocet; i++) { printf("Zadej %d. cislo: ", (i + 1)); scanf("%d", &pole_cisel[i]); pole_cetnosti[i] = 0; } bool p = true; for(int i = 0; i < pocet; i++) { for(int k = i - 1; k > -1; k--) if(pole_cisel[k] == pole_cisel[i]) p = false; for(int j = i; j < pocet && p; j++) { if(pole_cisel[i] == pole_cisel[j]) pole_cetnosti[i]++; } p = true; } int max = 0; for(int i = 0; i < pocet; i++) { if(max < pole_cetnosti[i]) max = pole_cetnosti[i]; } for(int i = 0; i < pocet; i++) { if(pole_cetnosti[i] == max) printf("Cislo %d se v posloupnosti vyskytlo %dx\n", pole_cisel[i], pole_cetnosti[i]); } return 0; }
Offline
↑ case_fcs: nize uvadim moznou implementaci tveho programu, ve kterem je pouzita struktura. neni to vubec nic sloziteho a naopak to prinasi mnohe vyhody. strukturu si muzes predstavit jako promennou, ktera v sobe obsahuje dalsi promenne. ja jsem vytvoril strukturu POLOZKA, ktera obsahuje dve vnitrni slozky - integer 'hodnota' pro ulozeni nactene hodnoty a integer 'vyskytu' pro ulozeni cetnosti vyskytu. k vnitrnim slozkam se pristupuje pomoci teckove notace, napr. POLOZKA p, pak lze pouzit p.hodnota nebo p.vyskytu. pri nacitani cisel postupuje program nasledovne: nacte cislo od uzivatele a podiva se, jestli uz takove cislo uzivatel nezadal v predchozich vstupech. pokud ano, tak jej do seznamu neprida, pouze zvysi cetnost u nalezeneho cisla v seznamu. pokud se dane cislo v seznamu nevyskytuje, tak jej prida do seznamu a nastavi cetnost na jednicku. po nacteni vsech cisel program nalezne v cyklu maximalni pocet vyskytu a v dalsim cyklu vypise hodnoty, ktere odpovidaji temto maximalnim vyskytum. pokud je neco nejasneho, tak se ptej, myslim si, ze je to celkem pruhledne.
#include <stdlib.h> #include <stdio.h> int main(int argc, char** argv) { typedef struct { int hodnota; int vyskytu; } POLOZKA; int pocetZadanych; int pocetVseznamu = 0; int nacteneCislo; bool jizUlozene; POLOZKA * zasobnik = NULL; printf("Kolik cisel budes nacitat? "); scanf("%d", &pocetZadanych); for (int i = 0; i < pocetZadanych; i++) { jizUlozene = false; printf("Zadej %d. cislo: ", i + 1); scanf("%d", &nacteneCislo); for (int j = 0; j < pocetVseznamu; j++) { if (zasobnik[j].hodnota == nacteneCislo) { zasobnik[j].vyskytu++; jizUlozene = true; } } if (jizUlozene == false) { pocetVseznamu++; zasobnik = (POLOZKA*) realloc(zasobnik, pocetVseznamu * sizeof(POLOZKA)); zasobnik[pocetVseznamu - 1].hodnota = nacteneCislo; zasobnik[pocetVseznamu - 1].vyskytu = 1; } } int maximalnichVyskytu = zasobnik[0].vyskytu; for (int i = 1; i < pocetVseznamu; i++) { if (zasobnik[i].vyskytu > maximalnichVyskytu) maximalnichVyskytu = zasobnik[i].vyskytu; } printf("Nejvice - a to %dx se vyskytuji tyto cisla: ", maximalnichVyskytu); for (int i = 0; i < pocetVseznamu; i++) { if (zasobnik[i].vyskytu == maximalnichVyskytu) printf("%d ", zasobnik[i].hodnota); } printf("\n"); return (EXIT_SUCCESS); }
Offline
to plisna:
děkuji ti, akorát já právě asi strukturu nesmim použít, musim použít ty pole, vlastně ten program co sem sem kopírovala naposledy, tak tak by to mělo nějak vypadat, akorát já to neumim ani upravit do tý konečný fáze aby mi to fungovalo, tak u toho bych potřebovala nějak poradit co s tim a doupravit to, ale každopádně stejně ti děkuji, kdybych směla použít struktury (kdyby sme se je už učili a já je uměla :) tak bych tvůj program jistě použila
to septolet:
tobě taky děkuji taky si zkusim něco z tvého programu vzít :)
Offline
#include <stdio.h>
#include <stdlib.h>
/*
*
*/
int main(void) {
int cislo,test,pocet,i,test2,j,RuznychCisel,NejvyssiCetnost;
//j=0;
int *PoleCetnosti;
int *PoleCisel;
printf("Zadejte pocet cisel:\n");
test = scanf("%d",&pocet);
if(test<1) {
printf("Nespravny vstup.\n");
return(0);
}
if (pocet<=0 || pocet>=10000) {
printf("Nespravny vstup.\n");
return(0);
}
printf("Zadejte cisla:\n");
PoleCisel = (int *) malloc(pocet*sizeof(int));
free(PoleCisel);
PoleCetnosti=0;
RuznychCisel=0;
NejvyssiCetnost = 0;
for (i=0; i<pocet ;i++) {
test2=scanf("%d", &cislo);
for (j=0; j<=RuznychCisel; j++){
if (PoleCisel[j]==test2){
PoleCetnosti[j]++;
if (PoleCetnosti[j]>NejvyssiCetnost){
NejvyssiCetnost++;
}
//break;
}
else if (j==RuznychCisel){
PoleCisel[j]=test2;
PoleCetnosti[j]++;
RuznychCisel++;
}
}
}
if (test2<1){
printf("Nespravny vstup.\n");
return(0);
}
/*
for (j=0;j<RuznychCisel;j++){
printf("Nejcasteji se opakujici ");
if(RuznychCisel>1){
printf("cisla se vyskytla %dx a byla to cisla: ");
if(RuznychCisel>2 && RuznychCisel<3)
printf("%d a %d.\n",j,j);
else if (RuznychCisel>3){
printf("%d",j);
printf(",");
printf("%d");
}
}
else
printf("cislo se vyskytlo %dx a bylo to cislo: %d.\n",PoleCisel[j],j)
}*/
for (j=0; j<=RuznychCisel;j++)
{
if (PoleCetnosti[j]==NejvyssiCetnost)printf("kolikrat: %d cislo: %d\n",PoleCetnosti[j],PoleCisel[j]);
}
return 0;
}
tak jo prosim co tam dělam pořád špatně že mi to dovolí zadat jenom jedno číslo a pak vyskočí chyba?
jinak prosim někoho kdo by byl schopen tohle teda doupravit tak, aby to fungovalo a dokázalo to i ten výpis jak potřebuji, to jest ukáži na příkladu, který sem tu již uváděla
zadám 7 čísel
2 2 1 3 3 5 1
a výpis musí vypadat takto: Nejcasteji se opakujici cisla se vyskytla 2x a byla to cisla: 1, 2 a 3.
nevim jak tam vepsat tu čárku a to áčko jo a taky když tam napíšu 5 různých čísel a všechna jen jednou tak se všechna musí taky vypsat že se vyskytla nejvícekrát
tak moc moc prosim, jestli by mi sem někdo neposlal upravenej funkční tenhle muj program
Offline
to septolet:
tak teď sem vyzkoušela tvuj program a zjistila sem že dělá vlastně to co potřebuji, jen ještě zkusim upravit ten výstup do té jedné řádky a mělo by to fungovat, tak prosím jestli máte někdo nápad jak udělat ten výstup do jedné řádky, tak se s tím prosím podělte, příklad sem uvedla v příspěvku výše
Offline
Tak pokud má být výpis na jedné řádce, tak pak třeba takto:
#include <stdio.h> #include <stdlib.h> int main() { int pocet = 0, *pole_cisel, *pole_cetnosti; printf("Kolik cisel chces zadavat? "); scanf("%d", &pocet); if((pole_cisel = (int *) malloc(pocet * sizeof(int))) == NULL) { printf("Chyba pri alokaci pameti\n"); } if((pole_cetnosti = (int *) malloc(pocet * sizeof(int))) == NULL) { printf("Chyba pri alokaci pameti\n"); } for(int i = 0; i < pocet; i++) { printf("Zadej %d. cislo: ", (i + 1)); scanf("%d", &pole_cisel[i]); pole_cetnosti[i] = 0; } bool p = true; for(int i = 0; i < pocet; i++) { for(int k = i - 1; k > -1 && p; k--) if(pole_cisel[k] == pole_cisel[i]) p = false; for(int j = i; j < pocet && p; j++) { if(pole_cisel[i] == pole_cisel[j]) pole_cetnosti[i]++; } p = true; } int max = 0; for(int i = 0; i < pocet; i++) { if(max < pole_cetnosti[i]) max = pole_cetnosti[i]; } printf("Nejvice - a to %dx se v zadane posloupnosti vyskytuji tyto cisla: ", max); for(int i = 0; i < pocet; i++) { if(pole_cetnosti[i] == max) printf("%d, ", pole_cisel[i]); } free((void *) pole_cisel); free((void *) pole_cetnosti); return 0; }
EDIT: + jsem tam ještě dodělal malou změnu, a to v tomto:
for(int k = i - 1; k > -1 && p; k--) if(pole_cisel[k] == pole_cisel[i]) p = false;
konkrétně tu podmínku. Není třeba procházet celé pole i v případě, že jsme stejné číslo už nalezli. Také jsem doplnil dealokaci paměti.
Offline
↑ case_fcs:
Problém jak vypsat 1, 2 a 3 vyřešíš cyklem, musíš mít spočítáno kolik těch čísel je a potom budeš tisknout "%d, " do předposledního čísla, a poslední vytiskneš jako "a %d."
Pokud ovšem nemusí být seřazené podle velikosti...
Offline
to septolet:
já to tam mam takhle vim že je to špatně protože mi to vypisuje všechna čísla, ale nevim jak to sepsat, každopádně je potřeba aby byl výpis tak, že (příklad)
zadejte počet čísel: 5
zadejte čísla: 1 2 3 4 1
nejčastěji se opakující číslo se vyskytlo 1x a bylo to číslo 1. (věta v jednotném čísle)
zadejte počet čísel: 5
zadejte čísla: 1 2 3 4 5
nejčastěji se opakující čísla se vyskytla 5x a byla to čísla 1, 2, 3, 4 a 5. (věta v množném čísle, za každým číslem čárka a před posledním čísel je áčko)
tvůj upravený kód ve výpisu, teď mi to vypisuje dobře ty čárky a áčko ale špatně to vypisuje čísla, podívej se mi prosím na to
printf("Nejcasteji se opakujici ");
for(i = 0; i < pocet; i++)
{
if(pole_cetnosti[i] == max){
if (pocet>1){
printf("cisla se vyskytla %dx a byla to cisla: ",pole_cetnosti[i]);
for(j=0;j<pocet;j++){
if (j<pocet-2)printf("%d, ",pole_cisel[j]);
if(j==pocet-2)printf("%d a ",pole_cisel[j]);
if(j==pocet-1)printf("%d.\n",pole_cisel[j]);
}
}
if(pocet==1)printf("cislo se vyskytlo %dx a bylo to cislo: %d.\n", pole_cetnosti[i],pole_cisel[i]);
}
Offline
zadejte počet čísel: 5
zadejte čísla: 1 2 3 4 1
nejčastěji se opakující číslo se vyskytlo 1x a bylo to číslo 1. (věta v jednotném čísle)
To ale přeci není pravda. Nejčastěji se vyskytující číslo je sice 1, ale vyskytlo se v té posloupnosti 2x.
Jestli to tedy myslíš takto (výpis si uprav dle zadání, to už zvládneš):
#include <stdio.h> #include <stdlib.h> #define VELIKOST 1000000 int main() { int pocet = 0, *pole_cisel, *pole_cetnosti; printf("Kolik cisel chces zadavat? "); scanf("%d", &pocet); if((pole_cisel = (int *) malloc(pocet * sizeof(int))) == NULL) { printf("Chyba pri alokaci pameti\n"); } if((pole_cetnosti = (int *) malloc(pocet * sizeof(int))) == NULL) { printf("Chyba pri alokaci pameti\n"); } for(int i = 0; i < pocet; i++) { printf("Zadej %d. cislo: ", (i + 1)); scanf("%d", &pole_cisel[i]); // pole_cisel[i] = rand() % 100 + 0; pole_cetnosti[i] = 0; } bool p = true; for(int i = 0; i < pocet; i++) { for(int k = i - 1; k > -1 && p; k--) if(pole_cisel[k] == pole_cisel[i]) p = false; for(int j = i; j < pocet && p; j++) { if(pole_cisel[i] == pole_cisel[j]) pole_cetnosti[i]++; } p = true; } int max = 0, cetnost = 0; for(int i = 0; i < pocet; i++) { if(max < pole_cetnosti[i]) { max = pole_cetnosti[i]; cetnost = 0; } if(max == pole_cetnosti[i]) cetnost++; } printf("Pocet cisel, ktera se v posloupnosti vyskytla ve stejnem poctu je %d a jsou to cisla: ", cetnost); for(int i = 0; i < pocet; i++) { if(pole_cetnosti[i] == max) printf("%d, ", pole_cisel[i]); } return 0; }
Offline