zjistěte počet 3 místných čísel, které mají první a poslední číslici stejnou.... takhle zní program, který chcu vytvořit. zajímalo by mě, jakým způsobem na to mám jít. je mě jasný že vytvořím pole od 100 do 999 , ale co dál. nějaký nápad jak na to ? díky
Fórum › C / C++
Práce v poli čísel
#1 dean
Riešiť toto polom je zbytočné.
Načo ti je vôbec vytvárať takýto program bez vstupu ? Šak to máš normálne 9*10.
Ak by si mal ako vstup koľko ciferné číslo to má byť, tak to je 9*(10^(x-2)).
Ak máš na vstupe x a máš zistiť počet x-ciferných palindrómov, tak to máš tiež nejakú jednoduchú kombinatoriku. Ale nepotrebuješ cykly a už vôbec nie polia.
#2 lukas.balaz
tohle je zadání jednoho z úkolu do zápočtu na vš. ale když chcu vypsat "počet 3 místných čísel, které mají první a poslední číslici stejnou", tak přeci musím pracovat s polem ne . Všechny ty čísla se nachází v intervalu od 100 do 999 , z toho jsem chtěl vycházet.
#3 dean
Ak som správne pochopil, tá úloha je bez vstupu.
To znamená, že výsledok je 90. Načo robiť program ktorý neurobí nič iné len vypíše 90 ? Ak to chceš vypočítať, tak kombinatorikou 9 možností pre prvé číslo a 10 pre druhé a tretie je rovnaké ako prvé. Takže 9*10. Ak to je naozaj bez vstupu, tak potrebuješ jeden riadok: vypis(9*10) (neviem či C alebo C++, takze pseudokod)
A ak tam je vstup tak napiš zadanie ešte raz tak, aby som pochopil.
JA viem skôr v C++ tak dúfam že nejakú chybu neurobím (ten kod som netestoval):
bool pole[900];
for(int i=0;i!=900;++i)
{
if((i+100)/100==(i+100)%10)pole[i]=true;
else pole[i]=false;
}
int v=0;
for(int i=0;i!=900;++i)
{
if(pole[i])++v;
}
printf("%d",v);
ALE NAČO TU POUŽÍVAŤ POLE ?? akože ak by boli kázané cykly, tak nepoviem, ale pole ??
hmm, trochu špatný zadání na zápočet, když cyklus nebo pole je naprosto zbytečný.. ale toto by mělo uspokojit obě strany :-D
int ziskejPocet(int pocetRadu) // 3
{
int pole[100];
int sum = 0;
// nějaká práce s polem, aby VŠ byla spokojená
for (int i = 0; i < sizeof(pole) / sizeof(int); i++) {
*(pole + i) = rand() + i * pocetRadu;
sum += *(pole + i);
}
return 9 * 9 + 9; // získání výsledku
}
#1 dean
Asi to zadání přecejen není celé. Pokud to opravdu mý být zadání pro výuku práce s polem, tak bych ho viděl spíš takto: Naplňte pole o velikosti x náhodnými hodnotami. Zjistěte počet 3 místných čísel, které mají první a poslední číslici stejnou.
Neboli procvičí se jak procházení polem, tak zjišťování počtu cifer a rozdělení na jednotlivé cifry.
Áno aj mne to napadlo.
V takom prípade celá pointa kódu bude v prechádzaní pola a hádzania čísel do tejto podmienky:
if(i>=100 && i<1000 && i/100==i%10)
#12 lukas.balaz
ta podmínka by nefungovala správně, na některý případy asi jo, ale né vždy proběhne u čísel, který začínají i končí stejným číslem
osobně bych to řešil porovnáváním znaku u prvního a posledního čísla (nejjednodušší co mě v tuhle chvíli napadá)
// nejaky cyklus nahodnych cisel, kde "number" je aktualni cislo z pole
if (number > 99 && number < 1000) {
char buffer[sizeof(int)];
sprintf(buffer, "%d", number);
if (*buffer == *(buffer + sizeof(int) - 2)) {
// vysledek (vypsani "number" nebo ulozeni do pole)
}
}
#14 lukas.balaz
pokud máš postoupnost od 100 do 999 tak to je ok, ale pokud by bylo pole náhodných čísel (řekněme od 0-2000), tak tohle řešení neprojde :) A přislo mi, že si odpovídal na pole náhodných čísel, pokud ne tak jsem nic nenapsal ;-)
#17 ingiraxo
Zadanie o ktorom sa tu teraz bavíme je to, čo napísal JoDiK, že by "mohlo" byť:
Naplňte pole o velikosti x náhodnými hodnotami. Zjistěte počet 3 místných čísel, které mají první a poslední číslici stejnou.
tá podmienka vracia true len vtedy, ak je číslo trojciferné a prvú a poslednú cifru má rovnakú. Takže ak číslo nie je 3ciferné, automaticky vracia false a na delenie 100 a modulovanie 10 sa ani nepozerá.Ak by hrubo vytlačená časť v zadaní nebola, tak by to nefugovalo. Ale mám pocit, že s tou hrubo vytlačenou časťou počítaš aj ty v #13. Takže nájdi číslo, pre ktoré by sa naše riešenia správali inak.
#18 lukas.balaz
vim jaký je zadání... ale jak si psal tu podmínku, tak to "i" jsem bral jako index z cyklu a ne jako aktualni cislo, proto jsem psal, že to moc dobře nevychází, protože jsem přepokladal, že vycházíš z indexace pole
ale jinak ano, pokud "i" bude aktuální číslo a né index (možná si to mohl pojmenovat jinak), tak máš pravdu ;)
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
Opakování čísel v poli — založil Daran
Počet čísel v poli — založil TomasekTom
Práce s poli — založil Elektron112
Príklad - výskyt čísel v poli — založil Tomas
Práce s poli, objasnění — založil Robi
Moderátoři diskuze