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
Inteligentní nemá čas si pamatovat, inteligentní musí vymýšlet.
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  +1 26.3.2016 21:45
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  +1 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.