Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Pouze tento týden sleva až 80 % na e-learning týkající se C a C++. Zároveň využij akce až 80 % zdarma při nákupu e-learningu - více informací.
discount week 80 + hiring
Avatar
Richard Halás:26.3.2016 18:01

Ahoj, mám taký menši problém s programom. Za úlohu som dostal vytvoriť program ktorý dokáže toto :

Vytvorte program, ktorý bude implementáciou tejto hry. Program na začiatku načíta číslo n, pre ktoré platí: 0 < n < 10000. Váš program následne vypíše na každý riadok samostatne čísla v poradí od 1 po n, pričom dodrží pravidlá uvedené vyššie:

Ak je číslo deliteľné číslom 3, vypíše miesto neho na obrazovku tik.
Ak je číslo deliteľné číslom 5, vypíše miesto neho na obrazovku tak.
Ak je číslo deliteľné číslami 3 a 5 súčasne, vypíše miesto nich na obrazovku tiktak.
V prípade, ak bol zadaný nesprávny vstup (zadané číslo n nie je z rozsahu 0 < n < 10000), program vypíše na obrazovku hodnotu -1.

Môj zdroják vyzerá takto :

#include <stdio.h>
#include <stdlib.h>

void print_tiktak(const int);

int main(){
int n;
scanf("%d", &n);
print_tiktak(n);
return 0;
}
void print_tiktak(const int n){
if (n < 1 || n > 9999){
printf("-1\n");
return;
}
for(int i = 1; 1 <= n; 1++){
if (1 % 3 == 0){
printf ("tik");
}
if (1 % 5 == 0){
printf ("tak");
}
if (1 % 3 |=0 && 1 % 5|=0){
printf ("%d", i);
}
}

}

Niekde je tam chyba ale netuším kde .... viete mi poradiť ??? Som začiatočník.
Ďakujem.

 
Odpovědět
26.3.2016 18:01
Avatar
Odpovídá na Richard Halás
Jirka Vavřík:26.3.2016 21:42

V těch podmínkách, kde kontroluješ dělitelnost vůbec nepoužíváš to číslo (místo něj máš jedničku a vždy ti to vrátí stejnou hodnotu).

if (i % 3 == 0){ //zde
printf ("tik\n");
}
if (i % 5 == 0){ //zde
printf ("tak\n");
}
if (i % 3 ==0 && i % 5==0){ //a zde
printf ("tiktak\n");    //tady bys měl asi vypisovat "tiktak" místo čísla
}
 
Nahoru Odpovědět
26.3.2016 21:42
Avatar
Tycek
Člen
Avatar
Tycek:26.3.2016 21:45

V cyklu for a v jeho vnořených podmínkách máš nesmysly. Testuješ zda je jednička menší nebo rovna n a tak dál.

Edit: Jirka byl rychlejší. :D
Edit2: Ta poslední podmínka je dobře až na ten výraz. Pokud číslo není dělitelné ani 3 ani 5, tak se vypíše číslo.

Editováno 26.3.2016 21:47
 
Nahoru Odpovědět
26.3.2016 21:45
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Richard Halás:27.3.2016 13:13

Jasne dakujem uz som si to vsimol ze som tam blbosti pisal :)
Teraz uz to ide ako ma .... Dakujem :)

 
Nahoru Odpovědět
27.3.2016 13:13
Avatar
Odpovídá na Richard Halás
Libor Šimo (libcosenior):27.3.2016 14:59

A čo takto?

#include <stdio.h>

int main(void)
{
    int n;

    scanf("%d", &n);
    if (n < 1 || n > 9999)
        printf("-1\n");
    else {
        for (int i = 1; i <= n; i++) {
            i % 3 == 0 && i % 5 == 0 ? printf("tiktak\n") : i % 3 == 0 ? printf("tik\n") :
            i % 5 == 0 ? printf("tak\n") : printf("%d\n", i);
        }
    }

    return 0;
}
;-)
Nahoru Odpovědět
27.3.2016 14:59
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Jakub Šilhavý:27.3.2016 16:03

V C++:

#include <iostream>
using namespace std;

int main() {
        int n;
        cin >> n;
        if (n < 1 || n > 9999) {
                cout << -1;
        }
        else {
                for (int i = 1; i <= n; i++) {
                        if (i % 3 == 0 && i % 5 == 0) {
                                cout << "tiktak" << endl;
                        }
                        else if (i % 3 == 0) {
                                cout << "tik" << endl;
                        }
                        else if (i % 5 == 0) {
                                cout << "tak" << endl;
                        }
                        else {
                                cout << i << endl;
                        }
                }
        }
        return 0;
}
Nahoru Odpovědět
27.3.2016 16:03
Život je pes, a proto žít je psina.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.