Anonymní profil Aliande – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Aliande – Programujte.comAnonymní profil Aliande – Programujte.com

 

Příspěvky odeslané z IP adresy 188.175.163.–

Mats
C / C++ › Převod z hex na dec
11. 11. 2012   #166476

Zdravím, mám kód

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    int hexa;
    cout << "Zadejte hexadecimalni cislo: \n\n";
cin >> hex >> hexa;

    cout << "\nDesitkove: " << hexa << endl;


char reakce;
cin >> reakce;
    return 0;
}

Jak je možné v tomto bloku aplikovat podmínku na špatný vstup? Jde to vůbec? Protože když napíšu něco úmyslně špatného, je hodnota 10 :-(

Rocky
C / C++ › Výpočet kombinace
11. 11. 2012   #166453

V případě jiných znaků, než číslic by se to dalo ošetřit takto: if(cin.fail()){
cout << "Nespravny vstup." << endl;
return 1;

}

Ale nevím, jak to udělat v případě těch čísel, ze kterých není možné vypočítat kombinaci :-(

Zajímalo by mě to však a přemýšlím nad tím

Maty
C / C++ › Výpočet kombinace
11. 11. 2012   #166451

Paráda! Ještě jedna věc - jak ošetřit nepovolené znaky? Když jsem to zkoušel, neustále to vypisuje "Zadej n a k:"

Nebo ještě hodnoty, ze kterých nejde kombinace spočítat, například n = 1 a k = 6...? Jak ošetřit, aby program vyhodil chybu a neukončil se jako v tomto případě?

Rocky
C / C++ › Výpočet kombinace
11. 11. 2012   #166448

Jasně že dal ;-)

#include <iostream>
#include <string>

using namespace std;

int main () {
   
  
    float n, r;
    int   group, choose;
    long int c = 1;

   
 
    try {
        do {
           
           
            cout << "Zadej n a k: ";
           
            cin  >> n >> r;
  
        } while (n < 0 && r < 0 );
       
       
        cout << endl;
       
        group  = (int)n;
        choose = (int)r;
    }
    catch (...) {
        cout << "Error: << Unexpected Input >>" << endl;
        return (-1);
    }
   
    if (choose > group) {
        cout << 0 << endl << endl;
        return (0);
    }
   
    for (int i = 1; i <= choose; ++i)
        c *= ((float)(group - choose + i)/i);
   
    cout << "\nC = " << c;
     char reakce;
  cin >> reakce;
    return (0);
}

Pak mi řekni/těte, jak můj domácí úkol pro vás dopadl :D

Maty
C / C++ › Výpočet kombinace
11. 11. 2012   #166444

Já to napsal celkem jinak :D Myslím, že by se daly využít i jiné postupy, třeba i kratší.

Když se pokouším udělat kód, abych mohl n i k (jak je ve vzorci v prvním příspěvku) - n! / (k! * (n-k)!

napsat do jednoho řádku, potvrdit enterem, tak mám jednu chybu po druhé. Jak z toho ven? Nedá se upravit ten kód nad mým příspěvkem k tomu? Taky by se mi to hodilo

Migiran
C / C++ › Výpočet kombinace
11. 11. 2012   #166442

Řekl bych, že pán spíše obšlehl nějaký kód z internetu, zkusil jej upravit a dopadl takhle, že se ptá zde...

No, přidám jeden kód, který funguje

#include <iostream>
#include <string>

using namespace std;

int main () {
    
   
    float n, r;
    int   group, choose;
    long int result = 1;

    
  
    try {
        do {
            cout << endl;
            
            cout << "Size of the group (n): ";
            
            cin  >> n;
        } while (n < 0);
        
        do {
            cout << endl;
            
            cout << "Number of choices (r): ";
            
            cin  >> r;
        } while (r < 0);
        
        cout << endl;
        
        group  = (int)n;
        choose = (int)r;
    }
    catch (...) {
        cout << "Error: << Unexpected Input >>" << endl;
        return (-1);
    }
    
    if (choose > group) {
        cout << 0 << endl << endl;
        return (0);
    }
    
    for (int i = 1; i <= choose; ++i)
        result *= ((float)(group - choose + i)/i);
    
    cout << result << endl << endl;
     char reakce;
  cin >> reakce;
    return (0);
}

Aliande
C / C++ › Výpočet kombinace
11. 11. 2012   #166438

Ahoj, píšu program pro výpočet kombinace. Uživatel napíše dvě čísla n, k. Program vypočítá dle vzorce n! / (k! * (n-k)!  a uloží do proměnné c.

Zatím jsem to sepsal takto, ale mám problém. Asi dělám nějaké hloupé chyby :-(

#include <iostream>
using namespace std;
int Faktorial(int n);
int KombinacniCislo(int n, int k);

int main()
{
    int a, b;
cin >> n, k;
cout << KombinacniCislo(int n, int k) << "\n";
    char reakce;
  cin >> reakce;
return 0;
}

int Faktorial(int n)
{
    if (n == 0)
        return 1;
   
    int vysledek = n;
    for (int i = n - 1; i > 0; i--)
    {
        vysledek *= i;
    }
    return vysledek;
}

int KombinacniCislo(int n, int k)
{   
    return Faktorial(n) / (Faktorial(k) * Faktorial(n-k));
}

 

 

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