Avatar
pcrewik
Člen
Avatar
pcrewik:

Nazdar, neviete mi niekto pls. vysvetliť trochu z funkcii? Na nete som nasiel takuto funkciu, s ktorou som sa trocha hral, no nechápem ako pocitac vie ktoru premennu mam na mysli, keď raz je nazvaná a,b a potom i,j ?

 #include <stdio.h>
#include <stdlib.h>
int nacitaj(int *a, int *b)
{
printf("\nzadaj dve cele cisla:");
return scanf("%d %d", a, b);
}



float daj_podiel(int i, int j)
{
return((float) i / (float) j);
}


int main()
{
int i, j;
if (nacitaj(&i, &j) );
printf("podiel je : %f\n", daj_podiel(i, j));


system("PAUSE");
return 0;

} /* main */

predem ďakujem, láme mi to hlavu 8|

 
Odpovědět 24.5.2012 21:57
Avatar
Odpovídá na pcrewik
David Jančík [sczdavos]:

Ahoj,
jazyk C nepoužívej. Co se fcí týče: a,b,c,i,j jsou parametry daných fcí. Chceš fci na podíl:

float daj_podiel(int i, int j)// vyžádá si dvě celočíselné hodnoty
{
return((float) i / (float) j);// přetypuje na float (aby tam byla desetinná čárka) a vrátí podíl těchto čísel
}

Ale nedělej v C je to nízkoúrovňový jazyk - nemá objekty, v kódu co jsi poslal jsou dokonce pointery :X
Mrkni na tutoriály k C#, na kterých se v současné době tvrdě pracuje rovněž tak na Javě. Viz příslušené sekce.

Nahoru Odpovědět 24.5.2012 22:15
Čím více času dostaneš, tím méně ho máš.
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Jančík [sczdavos]
matesax:

Nemůžu říci, že jsem do této problematiky plně zasvěcen, ale bratr ano a tvrdí, že některé jazyky, které tu někteří pohřbývají se stále pužívají. Tedy - Může se vrhnout i na Ruby. Stejně tak na Objektového Pascala - Delphi. Zrovna u nás ve městě je velká firma pro webový desing a informační technologie - dělají v Delphi,...

 
Nahoru Odpovědět 25.5.2012 5:59
Avatar
Drahomír Hanák
Tým ITnetwork
Avatar
Odpovídá na matesax
Drahomír Hanák:

Ty jazyky tu nikdo nepohřbívá, jen se zdůrazňuje, že nemá cenu se zbytečně učit nízkoúrovňový jazyk, když zrovna neprogramuješ operační systém nebo nějaký 3D engine pro hru, kde potřebuješ velmi vysoký výkon. Vysvětlení najdeš třeba v tomto článku: http://www.itnetwork.cz/index.php?… a říká se to tu pořád dokola. Jazyky jako již zmíněný C# nebo Java jsou pro klasické aplikace nejlepší a můžu je doporučit. Nemusíš vůbec řešit něco jako pointery a spousta dalších úloh je vyřešená. Navíc jsou tyto jazyky plně objektově orientované. A například pro Windows phone už nemáš jinou volbu než C#. Pro android zas Java. Z těch nízkoúrovňových jazyků se třeba Céčko taky ještě používá, ale jen pro specifické případy. Osobně si ale nedokáži představit psát větší aplikaci v neobjektovém céčku.

 
Nahoru Odpovědět  +2 25.5.2012 7:51
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na matesax
David Čápka:

Které máš na mysli? Rád ti vysvětlím, proč jsme který pohřbili.

C - Starý a nízkoúrovňový, používá se defakto již jen proto, že v něm je napsané jádro Linuxu. Ve Windows pro něj již dokonce prakticky neexistuje IDE.

Ruby - Velmi kvalitní jazyk, bohužel naprosto nerozšířený a bez zájmu. Navíc s ním nejde nic moc dělat kromě webů kvůli jeho povaze.

Delphi - Delphi bylo populární někdy před 20ti lety, Borland ho již odpískal, firmy si ho předávají jako horký brambor. Návrh jazyka je velmi zastaralý, komponenty obsahují ještě kód pro Windows 3.11. Samozřejmě, že jsou firmy, které v tom mají systém, nevyplatilo by se jim ho přepisovat. To však neznamená, že je ten jazyk kvalitní. V Delphi jsem dělal intenzivně asi 5 let a už se k nim nikdy nevrátím.

Nahoru Odpovědět 25.5.2012 7:56
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na matesax
David Čápka:

Navíc jak píše Drahoš nikdy jsme neřekli, že se nějaký jazyk již nepoužívá, pouze jsme ty nezajímavé dali stranou.

Nahoru Odpovědět 25.5.2012 8:00
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
pcrewik
Člen
Avatar
Odpovídá na David Jančík [sczdavos]
pcrewik:

ok, ďakujem, no ja som začinal pôvodne v c++ (cin >> , cout << ...), potom som si ale uvedomil, že na maturite z informatiky asi buďem potrebovať klasicke c (printf,scanf ...). Ja som sa do programovania v c pustil kôli tomu, že na škole nas z tohto zatial nič neučia, tak v tom mam trochu stale zmätok.

Hlavne mi ide o to vedieť aké c-éčko sa používa na Vysokých školách? Napriklad na infromatike na MUNI -masarykova univerzita , viem že sa tam učí c-éčko a java, tak ak mi viete niekto poradiť bol by som rád.

 
Nahoru Odpovědět 25.5.2012 8:30
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na pcrewik
David Čápka:

Buď učí to staré céčko ve kterém děláš (což je bohužel způsobené zastaráním našeho školství) nebo učí C#.

Nahoru Odpovědět 25.5.2012 15:17
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
pcrewik
Člen
Avatar
Odpovídá na pcrewik
pcrewik:

A viete mi poradiť prečo po tejto úprave to nejde?

 #include <stdio.h>
#include <stdlib.h>
int nacitaj(int i, int j)
{
printf("\nzadaj dve cele cisla:");
return scanf("%d %d", i, j);
}



float daj_podiel(int i, int j)
{
return((float) i / (float) j);
}


int main()
{
int i, j;
if (nacitaj(i, j) );
printf("podiel je : %f\n", daj_podiel(i, j));


system("PAUSE");
return 0;

} /* main */

v podstate som sa chcel zbaviť pointeru, nechapem prečo pri funkcii nacitaj maju byť použité pointery a pri funkcii daj_podiel nemusia byť použité pointery.

Da sa nejako zbaviť v tomto prípade tých pointerov?

 
Nahoru Odpovědět 25.5.2012 18:45
Avatar
Drahomír Hanák
Tým ITnetwork
Avatar
Odpovídá na pcrewik
Drahomír Hanák:

scanf vrací, kolik bylo uložených dat do proměnných. V tomto případě vrátí 2.
Musíš buďto psát načítání proměnných pořád znovu nebo si je tou funkcí uložit do globálních proměnných.
Zápis if podmínky je úplně jiný. Je to

if (podmínka) {
  // podmínka splněna
} else if (podminka2) {
  // pokud neni splněna první, ověří druhou podmínku
} else {
  // jinak se zavolá else
}
 
Nahoru Odpovědět 25.5.2012 19:01
Avatar
pcrewik
Člen
Avatar
Odpovídá na Drahomír Hanák
pcrewik:

musim sa priznať, že teraz vôbec neviem o čom hovoriš

stále mám v tom dosť velky zmätok ;(

 
Nahoru Odpovědět 25.5.2012 19:07
Avatar
Drahomír Hanák
Tým ITnetwork
Avatar
Odpovídá na pcrewik
Drahomír Hanák:

Tak tady to máš celé. Je to okomentované, tak to snad pochopíš.

#include <stdio.h>

int main()
{
  // Deklarujeme proměnné
  int i, j;
  // Vypíšeme zprávu
  printf("Zadej dve cela cisla: ");
  // Načteme proměnné
  scanf("%d %d", &i, &j);
  // Vypíšeme: % = výpis proměnné, .2 = počet desetinných míst, f = datový typ (float - desetinné číslo)
  printf("Podil je: %.2f", (float)i/(float)j);

  system("PAUSE");
  return 0;
}
 
Nahoru Odpovědět 25.5.2012 19:15
Avatar
Drahomír Hanák
Tým ITnetwork
Avatar
Odpovídá na pcrewik
Drahomír Hanák:

Jo mimochodem, při scanf musíš před názvy proměnných psát & (ampercent). Vyjímky jsou textové řetězce. To je otázka pointerů, ale tím se zatím nezatěžuj. A možná by bylo dobré ty proměnné načítat rovnou jako float, aby se nemuseli převádět. Na ten podíl můžeš klidně použít tu tvou funkci "daj_podiel", ta je správně. Jen je to asi zbytečné. Jinak nepoužíváš v kódu nic z knihovny stdlib.h, tak jsem ji ani nezahrnul. Stačí jen stdio.h ;)

 
Nahoru Odpovědět 25.5.2012 19:25
Avatar
pcrewik
Člen
Avatar
Odpovídá na Drahomír Hanák
pcrewik:

No ja použivam devc++ a stdlib.h tu slúži pre system("PAUSE");

Ty v čom píšes/ kompiluješ?

 
Nahoru Odpovědět 25.5.2012 19:47
Avatar
Drahomír Hanák
Tým ITnetwork
Avatar
Odpovídá na pcrewik
Drahomír Hanák:

Taky v DevC++ a vše mi funguje, jak má.

 
Nahoru Odpovědět 25.5.2012 19:53
Avatar
pcrewik
Člen
Avatar
pcrewik:

8| mne nie

citujem z : http://www.bloodshed.net/dev/faq.html

 How do I emulate the MS-DOS pause function?

#include <stdlib.h>

int main()
{
   system ("pause"); // execute M$-DOS' pause command
   return 0;
}
 
Nahoru Odpovědět 25.5.2012 20:04
Avatar
Don
Člen
Avatar
Odpovídá na pcrewik
Don:

Pokud mám správné informace tak se tam prochází více jazyků a každý ať si vybere. Je pravda že se tam ale preferuje hodně ze začátku C a poté Java. Toť to jsem pochytil od studenta 3ho ročníku

 
Nahoru Odpovědět 25.5.2012 21:53
Avatar
Don
Člen
Avatar
Odpovídá na pcrewik
Don:

system("pause") se používá na to aby se nezavřela hned konzole (jen by problikla). Proto se tam čeká na stisk nějakého talčítka. Na linuxu takového nic nemáme.

 
Nahoru Odpovědět 25.5.2012 21:56
Avatar
Posix
Člen
Avatar
Odpovídá na Don
Posix:

na linuxu to není, protože program spouštíš z terminalu a pak se zase vracis do terminalu.. kdybys to tak spustil ve windowsu, tak tam taky nemusis mit to pause :D

Nahoru Odpovědět 25.5.2012 22:04
Proč to dělat jednoduše, když to jde složitě.
Avatar
Don
Člen
Avatar
Don:

Ano je to tak. Chci ale říci že v knihovně vůbec system{"pause") néni

 
Nahoru Odpovědět  +1 25.5.2012 22:13
Avatar
Posix
Člen
Avatar
Odpovídá na Don
Posix:

system ti zavola nejake funkce systemu... takze system("pause") ti ceka na klavesu.. schvalne si zkus zadat do prikazove rady jen pause.. bude to to same... :)

Nahoru Odpovědět 25.5.2012 22:32
Proč to dělat jednoduše, když to jde složitě.
Avatar
Don
Člen
Avatar
Odpovídá na Posix
Don:

Nevím ale příkaz pause prostě termínal nezná.

 
Nahoru Odpovědět 25.5.2012 22:40
Avatar
Odpovídá na Posix
David Jančík [sczdavos]:

system("pause"); a další příkazy volané touto fcí fungují pouze na Windows, protože používají fce z CMD. Proto pro multiplatformní využití tuto fci nepoužívej...

Nahoru Odpovědět 25.5.2012 22:57
Čím více času dostaneš, tím méně ho máš.
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na David Jančík [sczdavos]
Daniel Vítek:

Souhlasím,seznam příkazů viz. tutoriály Batch http://www.itnetwork.cz/index.php?…
Mimochodem příkazy se mění podle systému,třeba ve Win XP HOME normálně používám třeba

sleep 10

a little_wolf si stěžoval že mu to ve win XP Prof nejede..

 
Nahoru Odpovědět 26.5.2012 11:27
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 25 zpráv z 25.