Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 5. diel - Podmienky (vetvenia) v jazyku C

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Neaktivní uživatel:15.9.2014 11:20

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

Odpovedať
Neaktivní uživatelský účet
Avatar
xxxvodnikxxx
Člen
Avatar
Odpovedá 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

Odpovedať
Unix- svět, kde chcete být nulou :) (UID)
Avatar
Samuel Kodytek
Tvůrce
Avatar
Odpovedá 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.

Odpovedať
There is more than one way to screw it
Avatar
Samuel Kodytek
Tvůrce
Avatar
Odpovedá 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 ) :)

Odpovedať
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 :)

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);
}
Odpovedať
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Johny Petka
Člen
Avatar
Odpovedá 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)

Avatar
Odpovedá 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

Editované
Odpovedať
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Johny Petka
Člen
Avatar
Odpovedá na Libor Šimo (libcosenior)
Johny Petka:19.4.2016 19:46

Funguje, díky moc!!!

Avatar
DarkCoder
Člen
Avatar
Odpovedá 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.

Odpovedať
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 43.