NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
S účinností od 26. 3. jsme aktualizovali Zásady zpracování osobních údajů – doplnili jsme informace o monitorování telefonických hovorů se zájemci o studium. Ostatní části zůstávají beze změn.
Mezi 10:00 až cca 10:30 proběhne odstávka sítě z důvodu aktualizace. Web bude po celou dobu nedostupný.

Diskuze – Lekce 5 - Podmínky (větvení) v jazyce C

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Neaktivní uživatel:15.9.2014 11:20

Jak jde udělat větvení pomocí switche s textovými příkazy ?

Odpovědět
15.9.2014 11:20
Neaktivní uživatelský účet
Avatar
xxxvodnikxxx
Člen
Avatar
Odpovídá na Neaktivní uživatel
xxxvodnikxxx:15.9.2014 22:22

Myslim, že céčko Stringy v case nepodporuje, ale je možný to řešit např. takhle http://stackoverflow.com/…with-strings

btw Samuel Kodytek - To okno výstupu je z netbeans?
Je možný v nich nějak pod win zprovoznit kompilátor a programovat Céčko ? dík..
Objevil jsem Cintr https://edux.fit.cvut.cz/…tbeans/CIntr
ale nějak mi nešel zprovoznit

Odpovědět
15.9.2014 22:22
Unix- svět, kde chcete být nulou :) (UID)
Avatar
Samuel Kodytek
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Samuel Kodytek:16.9.2014 17:44

String (textový řetězec) Céčko nepodporuje ale je v céčku něco jako by String ale tím se chci zabývat později :). potřebuješ na to znát pole.

Odpovědět
16.9.2014 17:44
There is more than one way to screw it
Avatar
Samuel Kodytek
Tvůrce
Avatar
Odpovídá na xxxvodnikxxx
Samuel Kodytek:16.9.2014 17:45

Pořádně jsem nepochopil co potřebuješ? Myslíš nainstalovat kompilátor do netbeanu? Pokud ano tak to máš v prvním tutoriálu ( http://www.itnetwork.cz/…-kompilatoru ) :)

Odpovědět
16.9.2014 17:45
There is more than one way to screw it
Avatar
Johny Petka
Člen
Avatar
Johny Petka:18.4.2016 20:19

Ahoj, prosím o pomoc, mám problém s funkcí sqrt() v jazyce C. Pouzivam
NetBeans IDE 8.1 a Debian.

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

/*
*
*/
int main(int argc, char** argv) {
int a;
double o = sqrt (a);

printf("Zadej cislo, ktere muzu odmocnit : \n");
scanf("%d", &a);
if (a>=0)
printf("Odmocnia cisla %d je %f",a,o);
return (EXIT_SUCCESS);

výstup:

cd '/home/chlup/Net­BeansProjects/tet­s'
/usr/bin/make -f Makefile CONF=Debug
"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make[1]: Vstupuje se do adresáře „/home/chlup/Net­BeansProjects/tes­t“
"/usr/bin/make" -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux/test
make[2]: Vstupuje se do adresáře „/home/chlup/Net­BeansProjects/tes­t“
mkdir -p dist/Debug/GNU-Linux
gcc -o dist/Debug/GNU-Linux/tets build/Debug/GNU-Linux/main.o
build/Debug/GNU-Linux/main.o: In function `main':
/home/chlup/Net­BeansProjects/tet­s/main.c:28: undefined reference to `sqrt'
collect2: error: ld returned 1 exit status
nbproject/Makefile-Debug.mk:62: návod pro cíl „dist/Debug/GNU-Linux/test“ selhal
make[2]: *** [dist/Debug/GNU-Linux/tets] Chyba 1
make[2]: Opouští se adresář „/home/chlup/Net­BeansProjects/tes­t“
nbproject/Makefile-Debug.mk:59: návod pro cíl „.build-conf“ selhal
make[1]: *** [.build-conf] Chyba 2
make[1]: Opouští se adresář „/home/chlup/Net­BeansProjects/tet­s“
nbproject/Makefile-impl.mk:39: návod pro cíl „.build-impl“ selhal
make: *** [.build-impl] Chyba 2

googlil jsem, na par forech jsem nasel, ze muze byt problem s libm.so, jenze
mi nejak uniklo, co s tim libm.so delat, jsem zacatecnik. Dekuji za Vas cas :)

 
Odpovědět
18.4.2016 20:19
Avatar
Libor Šimo (libcosenior):19.4.2016 6:04

Po 1. nemáš uzavretý blok main()
po 2.
int a;
double o = sqrt (a);
je blbosť, pretože a nemáš definované.

Skús to takto:

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

/*
*
*/
int main(int argc, char** argv)
{
    int a;
    //double o = sqrt (a);

    printf("Zadej cislo, ktere muzu odmocnit : \n");
    scanf("%d", &a);
    if (a>=0)
    printf("Odmocnia cisla %d je %f",a , sqrt(a));
    return (EXIT_SUCCESS);
}
Odpovědět
19.4.2016 6:04
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Johny Petka
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
Johny Petka:19.4.2016 18:33

Díky moc za reakci :) a omlouvám se, tělo jsem uzavřené měl, neokopíroval jsem složenou závorku. Vyzkušel jsem Tvůj prográmek a přesto mi výstup hází toto :

cd '/home/chlup/Net­BeansProjects/tet­s'
/usr/bin/make -f Makefile CONF=Debug
"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make[1]: Vstupuje se do adresáře „/home/chlup/Net­BeansProjects/tet­s“
"/usr/bin/make" -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux/tets
make[2]: Vstupuje se do adresáře „/home/chlup/Net­BeansProjects/tet­s“
mkdir -p build/Debug/GNU-Linux
rm -f "build/Debug/GNU-Linux/main.o.d"
gcc -c -g -MMD -MP -MF "build/Debug/GNU-Linux/main.o.d" -o build/Debug/GNU-Linux/main.o main.c
mkdir -p dist/Debug/GNU-Linux
gcc -o dist/Debug/GNU-Linux/tets build/Debug/GNU-Linux/main.o
build/Debug/GNU-Linux/main.o: In function `main':
/home/hydra/Net­BeansProjects/tet­s/main.c:29: undefined reference to `sqrt'
collect2: error: ld returned 1 exit status
nbproject/Makefile-Debug.mk:62: návod pro cíl „dist/Debug/GNU-Linux/tets“ selhal
make[2]: *** [dist/Debug/GNU-Linux/tets] Chyba 1
make[2]: Opouští se adresář „/home/chlup/Net­BeansProjects/tet­s“
nbproject/Makefile-Debug.mk:59: návod pro cíl „.build-conf“ selhal
make[1]: *** [.build-conf] Chyba 2
make[1]: Opouští se adresář „/home/chlup/Net­BeansProjects/tet­s“
nbproject/Makefile-impl.mk:39: návod pro cíl „.build-impl“ selhal
make: *** [.build-impl] Chyba 2

BUILD FAILED (exit value 2, total time: 118ms)

 
Odpovědět
19.4.2016 18:33
Avatar
Odpovídá na Johny Petka
Libor Šimo (libcosenior):19.4.2016 18:36

Vykasli sa .na netbeans a nainštaluj si code::blocks.
Pozri sem:h
ttp://www.itnet­work.cz/cplus­plus/cecko-linux/tutorial-c-linux-codeblocks

Editováno 19.4.2016 18:37
Odpovědět
19.4.2016 18:36
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Johny Petka
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
Johny Petka:19.4.2016 19:46

Funguje, díky moc!!!

 
Odpovědět
19.4.2016 19:46
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Samuel Kodytek
DarkCoder:6.10.2016 1:23

Obecná negace ! není relační operátor ale logický. Operátory && a || jsou rovněž logické, pojem základní nikomu nic neřekne.

Používáme-li funkci, kontroluji nejen její návratový typ ale i typy parametrů které přebírá. Funkce sqrt() opravdu nepřebírá typ i. Argumentem funkce je typ double. Takže buď proměnná a bude typu double nebo je třeba argument přetypovat na double.

double o = sqrt((double)a);

Výraz

(a == 0) je lepší psát jako (!a)  a  (a == 1) je lepší psát jako (a)
printf("Vysledek: %lf", vysledek);

pro typ double se používá %f

else
    printf("Neplatná volba \n");
    printf("\n");
    printf("Dekuji za pouziti kalkulacky");

Pokud není použit blok, je dobré dodržovat odsazování. Odsazení v tomto případě může vést čtenáře k domněnce, že všechny příkazy za else patří k sobě.

scanf("%d", &volba);
switch(volba)
{
    case 1:
        vysledek = a + b;
        break;
    case 2:
        vysledek = a - b;
        break;
    case 3:
        vysledek = a * b;
        break;
    case 4:
        vysledek = a / b;
        break;
}
if ((volba > 0) && (volba < 5))
    printf("Vysledek: %f", vysledek);
else
    printf("Neplatná volba \n");

Kód lze zapsat lépe:

scanf("%d", &volba);
switch(volba)
{
    case 1:
        printf("Vysledek: %f\n", a+b);
        break;
    case 2:
        printf("Vysledek: %f\n", a-b);
        break;
    case 3:
        printf("Vysledek: %f\n", a*b);
        break;
    case 4:
        printf("Vysledek: %f\n", a/b);
        break;
    default: printf("Neplatná volba \n");
}

Není třeba používat proměnnou výsledek, vyhodnocení výrazu lze předat jako argument funkci printf().
Navíc odpadá zbytečné porovnávání na neplatnou volbu.

Odpovědět
6.10.2016 1:23
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
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 10 zpráv z 43.