Switch, case loop – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Switch, case loop – C / C++ – Fórum – Programujte.comSwitch, case loop – C / C++ – Fórum – Programujte.com

 

Kefi
~ Anonymní uživatel
9 příspěvků
2. 10. 2014   #1
-
0
-

Dobrý večer!

Zo školy som dostal úlohu naprogramovať jednu úlohu.
Zadanie je nasledovné:
Zistite počty, t.j. ktorá hodnota sa koľkokrát nachádza v poli, v ktorom sú vygenerované 100 celých čísiel.
Moje riešenie je nasledovné:

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
    const int POCET = 100;
    int pole[POCET] = {0};

    for(int i=0;i<POCET;++i)
    {
        pole[i]= 10 + rand() % 21;
    }
    const int POCET2 = 21;
    int pole2[POCET2];
    int pp=0; // pomocna premenna
    for(int i=0;i<POCET;++i)
    {
        for(int a=10;a<30;++a)
        {
            switch(pole[i])
            {
            case a:
                {
                    for(int b=0;b<POCET2;++b)
                    {
                        pole2[b] = ++pp; // pridame 1-krat sa nachadza
                    }
                break;
                }
            default:0;
            }
        }
    pp=0; //vynulujeme
    }
    for(int i=0;i<POCET2;++i)
    {
        cout << pole2[i] << '\n';
    }
   return 0;
}

Po skompilovaní mi to vyhlási takúto chybu: 'a' cannot appear in a constant-expression

Nahlásit jako SPAM
IP: 91.221.110.–
Flowy0
Věrný člen
2. 10. 2014   #2
-
0
-

#1 Kefi
switch neni dobra vec (maximalne pre jednoduche vybery) ... navyse sa takto neda pouzit pretoze case musia byt zname pri kompilacii ... ak to chces spravit takto tak pouzi 'if' ... najlepsie by bolo napisat to objektovo

Nahlásit jako SPAM
IP: 84.47.43.–
https://github.com/Flowy
Kefi
~ Anonymní uživatel
9 příspěvků
2. 10. 2014   #3
-
0
-

#2 Flowy
OOP sa ešte len budeme učiť.
Dobre, pokúsim sa použiť if.

Ďakujem!

Nahlásit jako SPAM
IP: 91.221.110.–
Kefi
~ Anonymní uživatel
9 příspěvků
2. 10. 2014   #4
-
0
-

#3 Kefi 

int main()
{
    const int POCET = 10;
    int pole[POCET] = {0};

    for(int i=0;i<POCET;++i)
    {
        pole[i]= 10 + rand() % 21;
        cout << pole[i] << '\n';
    }
    const int POCET2 = 21;
    int pole2[POCET2];
    int pp=0; // pomocna premenna

    for(int a=10;a<=POCET2;++a)
    {
        for(int i=0;i<=POCET;++i)
        {
            for(int b=10;b<21;++b)
            {
                if( a == pole[i])
                {
                    ++pp;
                    pole2[b] = pp;
                }
            }
        }
    pp=0;
    }
    for(int i=0;i<POCET2;++i)
    {
        cout << endl<< pole2[i] << '\n';
    }

   return 0;
}

Nemyslí mi to. Ja si to celkom neviem predstaviť, že ako by to malo vyzerať.
 

Nahlásit jako SPAM
IP: 91.221.110.–
Kefi
~ Anonymní uživatel
9 příspěvků
2. 10. 2014   #5
-
0
-

#4 Kefi
Jaj, som sa pomýlil.
 

for(int b=0;b<POCET2;++b)
    {
        for(int i=0;i<=POCET;++i)
        {
            for(int a=10;a<=POCET2;++a)
            {
                if( a == pole[i])
                {
                    ++pp;
                    pole2[b] = pp;
                }
            }
        }

Aj tu je chyba, ale logická.   

Nahlásit jako SPAM
IP: 91.221.110.–
Kefi
~ Anonymní uživatel
9 příspěvků
2. 10. 2014   #6
-
0
-

#5 Kefi
Takto: úloha je takáto:

Mám vytvoriť 100 prvkové pole, ktoré mám mať z intervalu od 10 po 30 náhodne generované čísla.
Potom z tohto poľa mám do druhého poľa zapísať počet opakujúcich sa čísiel.

Napr.: pole[0]= 4 // 4 krát sa tam nachádza desiatka
atď

Nahlásit jako SPAM
IP: 91.221.110.–
KIIV
~ Moderátor
+43
God of flame
2. 10. 2014   #7
-
0
-

proc tolik zanoreni cyklu?

to jde prece jen jedinym cyklem (respektive dvema - prvni na vynulovani hodnot v pole2 a druhej pak pricist 1 k pole2[pole1[index]-10];)

Nahlásit jako SPAM
IP: 94.113.95.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Kefi
~ Anonymní uživatel
9 příspěvků
4. 10. 2014   #8
-
0
-

Takto?
Včera som nemal prístup k PC, tak som nemohol sa na to pozrieť.

const int POCET2 = 30;
    int pole2[POCET2];
    int pp=0; // pomocna premenna
    for(int a=10;a < POCET2;++a)
    {
        pp=0;
        pole2[a]=0;
        for(int i=0;i<POCET;++i)
        {
            if(pole[i]==a)
            {
                pole2[pole[i]-10]=++pp;
            }
        }

    }

Nahlásit jako SPAM
IP: 91.221.110.–
KIIV
~ Moderátor
+43
God of flame
4. 10. 2014   #9
-
0
-

no ja si to spis predstavoval jako 

int main()
{
  const int POSUN = 10;
  const int POCET2= 21;
  const int POCET = 100;
  int pole[POCET] = {0};
  int pole2[POCET2] = {0};

  for(int i=0; i<POCET; ++i)
  {
    pole[i]= POSUN + rand() % POCET2;
    cout << pole[i] << "\n";
  }

  for (int i=0; i<POCET; ++i) ++pole2[pole[i]-POSUN];

  for (int i=0; i<POCET2; ++i) cout << (i+POSUN) << " - " << pole2[i] << "\n";

  return 0;
}
Nahlásit jako SPAM
IP: 94.113.95.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Kefi
~ Anonymní uživatel
9 příspěvků
4. 10. 2014   #10
-
0
-

#9 KIIV
Ďakujem za pomoc!

Nahlásit jako SPAM
IP: 91.221.110.–
KIIV
~ Moderátor
+43
God of flame
4. 10. 2014   #11
-
0
-

#10 Kefi
hlavne se na to poradne koukni a rozmysli si, cos tam delal tak priserne slozite oproti tomu mymu kodu

Nahlásit jako SPAM
IP: 94.113.95.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Kefi
~ Anonymní uživatel
9 příspěvků
4. 10. 2014   #12
-
0
-

#11 KIIV
Ja som si to nevedel prestaviť. Ten proces riešenia.
Dlho som neprogramoval, až teraz máme pokročilé techniky C++ na INF.
Nepoznáte nejakú zbierku príkladov?

Nahlásit jako SPAM
IP: 91.221.110.–
Kefi
~ Anonymní uživatel
9 příspěvků
4. 10. 2014   #13
-
0
-

#12 Kefi
*predstaviť

Nahlásit jako SPAM
IP: 91.221.110.–
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, 100 hostů

Podobná vlákna

Switch case — založil Nicolas

Switch case — založil Bart

Switch case problem — založil vrtkoo

Do-Loop-While — založil Stigi

Python for loop — založil Bius

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ý