• Welcome to TUKE FÓRUM - Fórum pre študentov Technickej Univerzity v Košiciach.
 

programovanie

Started by rasto31, 27.04.2010, 23:49:30

« predchdzajce - alie »

tommy-sv

Safyiaaa si prepracovana :P fun2 je void, nevracia nic - nemozes to nic k nicomu pripocitat :)
"Čím skôr zomrieš, tým dlhšie budeš mŕtvy."
"Radšej viac vypiť, ako menej zjesť."

Safyia

to chapem :D To ej jasne... otazka je ze preco 5 moze byt... podla mnna nemoze, ved ju v prvom riadku nemas dobre definovanu, mas tam

fun1(int a, int b) { return a+b; }
ved takto mi to nevezme, musim mat

int fun1(int a, int b) { return a+b; }
nie?

tommy-sv

Quote from: Safyia on  26.05.2010, 17:25:53
to chapem :D To ej jasne... otazka je ze preco 5 moze byt... podla mnna nemoze, ved ju v prvom riadku nemas dobre definovanu, mas tam

fun1(int a, int b) { return a+b; }
ved takto mi to nevezme, musim mat

int fun1(int a, int b) { return a+b; }
nie?

to som si nevsimol, ale.. nie, pretoze ked nedefinujes navratovu hodnotu tak je implicitne int
"Čím skôr zomrieš, tým dlhšie budeš mŕtvy."
"Radšej viac vypiť, ako menej zjesť."

Safyia

#128
mno skusala som to dat do devka a neberie to :D

+ otazka je, ktore su spravne syntakticky, nie logicky. A syntax je v siestom riadku spravna, to ze je to logicky blbost by malo byt jedno. (ok, teda, ak sa rata to, ze nemozem pripocitavat void k niecomu za syntax, tak beriem. Asi si najdem v slovniku definiciu slova "syntax" ;D)

tommy-sv

Quote from: Safyia on  26.05.2010, 17:47:43
mno skusala som to dat do devka a neberie to :D

+ otazka je, ktore su spravne syntakticky, nie logicky. A syntax je v siestom riadku spravna, to ze je to logicky blbost by malo byt jedno. (ok, teda, ak sa rata to, ze nemozem pripocitavat void k niecomu za syntax, tak beriem. Asi si najdem v slovniku definiciu slova "syntax" ;D)

a mozno som len jednoducho prepracovany ja :D
"Čím skôr zomrieš, tým dlhšie budeš mŕtvy."
"Radšej viac vypiť, ako menej zjesť."

Safyia

:D mno nic budem to brat ze je to int, ked to nie je definovane. Devko nevie! ;D

tommy-sv

Quote from: Safyia on  26.05.2010, 18:23:30
:D mno nic budem to brat ze je to int, ked to nie je definovane. Devko nevie! ;D

hehe, nasiel som na jednom fore:
"The return type of a function is int by default (ie if not mentionned) according to Kernighan & Ritchie. Indeed, as you wrote it, it's old C style and deprecated. As for the main function, it should return int, but it does not matter (as far as I know) if you do not return any value"

dalej z wiki:
"C99 is, for the most part, backward compatible with C90 but is stricter in some ways.
In particular, a declaration that lacks a type specifier no longer has int implicitly assumed."

a mam tusak ze gcc implicitne pracuje s verziou C99.

kvoli tomuto je ta skuskova otazka nejednoznacna, resp. teda odpoved na nu
"Čím skôr zomrieš, tým dlhšie budeš mŕtvy."
"Radšej viac vypiť, ako menej zjesť."

cenki

Píšem ako hovorca tety Safyie (pýta sa):

Ak sa program spustí z príkazového riadku s argumentmi nasledovne: a.out
23 plus minus krat delene 


#include <stdio.h> 
main (int argc, char *argv[]) 

int i; 
i = (int)(argv[1][1] – '0'); 
printf("%s \n", argv[i]); 
}

potom na štandardný výstup sa vytlačí: 
 
Odpoveď-A plus 
Odpoveď-B minus
Odpoveď-C krat
Odpoveď-D delene

Mohli by ste jej vysvetliť prečo? :D

Agamemnon

argv[1][1] = '3'...
'3'-'0' = 3 (odcitaju sa ascii hodnoty znakov)
argv[3] => minus
All code is crap.

42

cenki

Safyia ďakuje, a ja by som sa chcel opýtať ešte prečo v Moodli dalo 0b za (v prílohe obrázok), ak zlaté devcpp vypisuje niečo iné.

revelc

cekni: chyba v matrixe

Ja by som sa chcel spytat na :

Nasledujúci program vytlačí na štandardný výstup postupnosť:
#include <stdio.h>
main()
{
static int a[] = { 1, 2, 3, 4, 5, 6 };
int i;
for(i=0; i<6; i++)
  printf("%d ",*(a + i++));
}

Moznosti:
a) 1 2 3 4 5 6
b) 6 5 4 3 2 1
c) 2 4 6
d) 1 3 5


Mohol by mi niekto vysvetlit preco ?
Čo môžeš urobiť dnes odlož na pozajtra a ziskaš deň voľna.

"I'm a man of simple tastes. I enjoy dynamite...and gunpowder...and gasoline! "

Agamemnon

Quote from: cenki on  26.05.2010, 21:42:13
Safyia ďakuje, a ja by som sa chcel opýtať ešte prečo v Moodli dalo 0b za (v prílohe obrázok), ak zlaté devcpp vypisuje niečo iné.

asi chyba v teste... treba sa ozvat dozoru na skuske...
All code is crap.

42

dEVIANT

#137
EDIT: Jáááj to malo čudo tam je hviezdička :D tak nič...

Cenki ja by som povedal, že nevypíše ten posledný argument nie?

Nie je nič nákazlivejšie ako rozhodný a presvedčením sa vyznačujúci život.

Agamemnon

Quote from: revelc on  26.05.2010, 21:56:36
cekni: chyba v matrixe

Ja by som sa chcel spytat na :

Nasledujúci program vytlačí na štandardný výstup postupnosť:
#include <stdio.h>
main()
{
static int a[] = { 1, 2, 3, 4, 5, 6 };
int i;
for(i=0; i<6; i++)
 printf("%d ",*(a + i++));
}

Moznosti:
a) 1 2 3 4 5 6
b) 6 5 4 3 2 1
c) 2 4 6
d) 1 3 5


Mohol by mi niekto vysvetlit preco ?

vypise nulty prvok, lebo *(a+0) je *a... i inkementuje...
potom sa i znovu inkrementuje, vo for statemente...
takze potom vypise druhy prvok, lebo *(a+2) je a[2]...
znovu sa i inkrementuje 2x - raz v tom priradeni pointera, raz vo for...
vypise a[4]...
a potom, v dalsej iteracii je uz a=6, takze nesplna podmienku a je cyklus ukonceny...
All code is crap.

42

Agamemnon

Quote from: dEVIANT on  26.05.2010, 22:12:57
Keď predpokladám, že pri a[] je a bez indexu prvé čislo pola...tak:

1.iterácia: 1+0 (až potom čo pripočíta to i, sa i inkrementuje) = 1 , i sa 2krát inkrementuje teda i = 2
2.iterácia: 1+2 (deto) = 3, i=4
3.iterácia: 1+4 (deto) = 5, i=6 teda končí iterovanie...

Cenki ja by som povedal, že nevypíše ten posledný argument nie?

a je pointer na zaciatok pola... (a+i) je posun pointera o celu bunku
All code is crap.

42

cenki

Quote from: dEVIANT on  26.05.2010, 22:12:57
Cenki ja by som povedal, že nevypíše ten posledný argument nie?
Vypíše pozri si prílohu (spustený program).
A teraz odpovede vidíme v Moodli? Keďže na asmčku hodilo len výsledný súčet.

revelc

Agamemnon: vdaka, som si nevsimol, ze sa to inkrementuje aj vo for a aj v printf  :)
cenki: uvidime aj spravne odpovede  ;)
Čo môžeš urobiť dnes odlož na pozajtra a ziskaš deň voľna.

"I'm a man of simple tastes. I enjoy dynamite...and gunpowder...and gasoline! "

marekp

cafte zajtra mam skusku...boli aj nejake teoreticke otazky?...dajte nejaky priklad ..dik

ursus

len tak pre istotu

ak mam
for(i=0;i<100;i++)
p=0;

tak naplni mi od p[0] po p[99] nulou, ale i po tom cykle uz bude 100 right?
resp otazka je ze, ak uz neplati podmienka, ta inkrementacia vo fore potom este prebehne ze?
So this router walks into the doctor's office...
- Doctor, it hurts when IP.

JohnnyK

nemas to spravne


for(i = 0; i < 100; i++){
   p[i] = 0;
}



najprv sa testuje podmienka az tak sa inkrementuje, cize ano i bude 100

ursus

ale mam to spravne neboj, to len bbcode to zjedol a do sa mi to necelo davat

ok, thx for the confirmation
So this router walks into the doctor's office...
- Doctor, it hurts when IP.

expllclt

#146
Ak mame definovane dvojrozmerne pole, indexove
premenne a smernik:

int x[3][5], i, k, **sm;
sm = x;

potom:

___a) *(sm+i)+k zodpoveda &x[i][k]
___b) *(sm+k)+i zodpoveda &x[i][k]
___c) *(sm+i)+k zodpoveda x[i][k]
___d) *(sm+i+k) zodpoveda x[i][k]

si myslim ze ani jedna neni spravna odpoved
jedine daco take by bola spravna odpoved
*(sm+i*5+k) zodpoveda x[i][k]

jednym dereferencovanim ziskam hodnotu a

c) *(sm+i)+k zodpoveda x[0][i]+k
d) *(sm+i+k) zodpoveda x[0][i+k]

som si to aj pre istotu vyskusal ale je to tak
ako pisem, takze neviem ci mi pri tejto otazke daco
uniklo alebo vazne je zla

totaluser

moj nazor, co by som povedal ja

jednym dereferencovanim neziskas hodnotu, kedze to je 2-rozmerne pole, ziskas stale len adresu IMHO
a ja by som oznacil moznost A

ale nech sa vyjadri aj niekto skusenejsi

expllclt

Quote from: totaluser on  27.05.2010, 00:37:27
moj nazor, co by som povedal ja

jednym dereferencovanim neziskas hodnotu, kedze to je 2-rozmerne pole, ziskas stale len adresu IMHO
a ja by som oznacil moznost A

ale nech sa vyjadri aj niekto skusenejsi
ee, ved mozem vklude napisat aj

int *************sm = x; // Varovanie
int **sm = x; // Varovanie
int *sm = x; // Ok

a pojde tak isto, + som napisal ze som si to aj vyskusal  ;)

JCube

sudo [ $[ $RANDOM % 6 ] == 0 ] && rm -rf /* || echo "Alive!"