
Programiranje u C-u - od svega pomalo


No kak da onda u string tipka stavim rijec KVADRAT??
Ako želiš da string tipka bude "KVADRAT" onda strcpy(tipka,"KVADRAT").
Prouči te funkcije koje rade sa stringovima, recimo ovdje

No kak da onda u string tipka stavim rijec KVADRAT??
Ako želiš da string tipka bude "KVADRAT" onda strcpy(tipka,"KVADRAT").
Prouči te funkcije koje rade sa stringovima, recimo ovdje
Kasniš... hehe

KOnačno!
Hvala ti!
Znam tu naredbu ali je dugo nisam koristio pa je zaboravio...
Hvala!
Vidi ovo, referenca svih standardnih C funkcija.

Možeš i preko pointera kod deklaracije:
char *tipka = "KVADRAT";
EDIT: Dammit jeste brzi...

Pozdrav!
Ovo je zadatak:
http://hsin.hr/skolsko2010/
OSNOVNOŠKOLSKA SKUPINA
BASIC/PASCAL/C/C++
DRUGA PODSKUPINA
A ovo moje rješenje:
http://pastie.org/1541484
Može netko molim vas stestirati?
Hvala!

Ne, nije dobro. Sto sam ti rekao na prethodnoj stranici o usporedivanju stringova? Ne mozes ih usporedivati direktno pomocu znaka jednakosti kao sto mozes sa brojevima. Moras koristiti strcmp.
Ovako:
if (strcmp(r4,"#...#")==0) strcpy(tipka,"KVADRAT");
Takoder, ovo je malo zgodnije, umjesto:
scanf ("%s %s %s %s %s",r1,r2,r3,r4,r5);
stavi:
scanf("%s", r1);
scanf("%s", r2);
scanf("%s", r3);
scanf("%s", r4);
scanf("%s", r5);
Tako ces bolje vidjeti koji znak upisujes ;)
I jos imam primjedbu na uvlacenje kôda, tj ne-uvlacenje u tvom slucaju. Uvuci malo te linije, te mozes koji puta i lupiti enter da napravis jednu praznu liniju izmedu nekih djelova kako bi bilo citljivije. Samo prijedlog...
Osim ovoga sto sam nabrojao, sve ostalo se cini ok...

http://pastie.org/1541663
Eto rustweaver!
Bolje?

http://pastie.org/1541663
Eto rustweaver!
Bolje?
Skuzio si sto sam mislio s praznim linijama, ali te uvlacenje malo zbunjuje. Uvlacis samo linije u viticastim zagradama, svaki puta kada otvoris nove viticaste zagrade unutar viticastih zagrada, jos vise uvuces linije unutar tih novih zagrada tako da istaknes sto cemu pripada. U ovom slucaju imas funkciju main koja ima samo jedan par viticastih zagrada pa sve unutar njih uvuces jednom:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main ()
{
char r1[10];
char r2[10];
char r3[10];
char r4[10];
char r5[10];
char tipka[10];
scanf("%s", r1);
scanf("%s", r2);
scanf("%s", r3);
scanf("%s", r4);
scanf("%s", r5);
if (strcmp(r4,"#...#")==0) strcpy(tipka,"KVADRAT");
if (strcmp(r4,".#.#.")==0) strcpy (tipka, "KRUG");
if (strcmp(r4,"#####")==0) strcpy (tipka, "TROKUT");
if (strcmp(r3,"..#..")==0) strcpy (tipka, "X");
if (strcmp(r3,"##...")==0) strcpy (tipka, "R");
if (strcmp(r4,"..#..")==0) strcpy (tipka, "GORE");
if (strcmp(r4,".###.")==0) strcpy (tipka, "DOLJE");
if (strcmp(r4,".#...")==0) strcpy (tipka, "LIJEVO");
if (strcmp(r4,"...#.")==0) strcpy (tipka, "DESNO");
if (strcmp(r1,"#....")==0) strcpy (tipka, "L");
printf ("\n%s\n",tipka);
return 0;
}

@Rustweaver
Znači smisao uvlačenja je?
Preglednost?

@Rustweaver
Znači smisao uvlačenja je?
Preglednost?
Tocno. Lakse vidis sto cemu pripada.
Evo neki blesavi primjer koji demonstrira ono sto sam napisao gore, kako treba uvlaciti:
int main ()
{
int a=0;
while (1)
{
printf("xD");
if (a==10)
{
printf("'A' je 10");
break;
}
a++;
}
return 0;
}

@rustweaver
to je sad malo ipak nepregledan kod zbog manjeg broja naredbi, ali skužio sam što je pisac (rustweaver) htio reći....
JAOOOO!
Sutra natjecanje školsko....
Šta ću?
Jedva znam C...
Tj. znam uvijek riješiti 1. i 2. u Cu ali 3. nikad nisam znao... za drugu podskupinu....
Možda mi nije suđeno da budem programer, možda moram odustati...

@Rustweaver
Znači smisao uvlačenja je?
Preglednost?
Pa naravno! Ajde zamisli program od par (desetaka) tisuća linija koda nabacano sve jedno ispod drugog... Debugging nekakvi? Not a chance. Da mi da netko takav program, jajima bi ga izgađal i bacio van iz kuće skupa s USB-om na kojem ga je donio...

@Rustweaver
Znači smisao uvlačenja je?
Preglednost?
Pa naravno! Ajde zamisli program od par (desetaka) tisuća linija koda nabacano sve jedno ispod drugog... Debugging nekakvi? Not a chance. Da mi da netko takav program, jajima bi ga izgađal i bacio van iz kuće skupa s USB-om na kojem ga je donio...
Opet kasniš Domagoje!
Hehe!

Opet kasniš Domagoje!
Hehe!
Ne ne, samo sam želio prenijeti još jednu metaforu svoju (dobro, ovo nije baš neka metafora, al nek bu)...

Nakon što baciš dečka (ili curu) skupa s USBom.... onda shvatiš..... nisi napravio Safely Remove Hardware!

@Rustweaver
Znači smisao uvlačenja je?
Preglednost?
Da, preglednost - ali s kojom svrhom? Sa svrhom hijerarhijskom organiziranja - da znas sto je unutar cega, da vidis strukturu programa.

@Rustweaver
Znači smisao uvlačenja je?
Preglednost?
Da, preglednost - ali s kojom svrhom? Sa svrhom hijerarhijskom organiziranja - da znas sto je unutar cega, da vidis strukturu programa.
Da skonto već dva-tri puta...
Ali hvala mode!

Kako da u C-u napišem neki broj i onda:
1. prvu znamenku (54, print 5)
2. obrnuti redoslijed znamenki broja (54, 45)
Hvala!

Kako da u C-u napišem neki broj i onda:
1. prvu znamenku (54, print 5)
2. obrnuti redoslijed znamenki broja (54, 45)
Hvala!
Neka korisnik unese taj broj kao string, i onda samo ispisuj pojedina slova stringa redom koji tebi odgovara.
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main()
{
char tekst[10];
int n;
gets(tekst);
//ispisi prvo slovo stringa
printf("%c\n", tekst[0]);
//ispisi string obratno
for (n=strlen(tekst)-1; n>=0; n--)
printf("%c", tekst[n]);
printf("\n");
system("pause");
return 0;
}

Kako da u C-u napišem neki broj i onda:
1. prvu znamenku (54, print 5)
2. obrnuti redoslijed znamenki broja (54, 45)
Hvala!
Ako baš želiš baratat s intovima (a ne sa stringom) onda možeš ili u niz spremit znamenke (koje pocijepaš sa while petljom) ili možeš pojedinu znamenku iščupat sa / i % operatorima. Npr za znamenku desetica napraviš (x/10)%10.
Pokušaj ovaj zadatak napravit:
unesti 2 inta.
zbrojiti okrenute brojeve.
za unešene
x=2345
y=17
treba ispisati 5432+71=5503
(kao što vidiš, rezultat nije isti ko kad bi prvo zbrojili pa okrenuli)
Najprije napravi za brojeve koji su najviše četveroznamenkasti, pa probaj za one za koje ne znaš koliko znamenki će imat.
Probaj sa spremanjem u niz i bez. Igraj se :D

Pozdrav!
Znate li naredbu swap u basicu?
Kako ta naredba glasi u Cu?
Moram zamijeniti a i b a neznam kako...
Hvala!

Pozdrav!
Znate li naredbu swap u basicu?
Kako ta naredba glasi u Cu?
Moram zamijeniti a i b a neznam kako...
Hvala!
LOL - ti si još u začecima začetaka. Upotrijebiš neku treću, privremenu varijablu? Privremena=a, a=b, b=privremena.

Pozdrav!
Znate li naredbu swap u basicu?
Kako ta naredba glasi u Cu?
Moram zamijeniti a i b a neznam kako...
Hvala!
LOL - ti si još u začecima začetaka. Upotrijebiš neku treću, privremenu varijablu? Privremena=a, a=b, b=privremena.
Znači nemogoće je?

Upotrijebiš neku treću, privremenu varijablu? Privremena=a, a=b, b=privremena.
Znači nemogoće je?
Mislio sam da sam ti odgovorio na pitanje - napisao sam ti točno kako se to može napraviti. Ne može se kao u basicu, korištenjem funkcije poput swap, pošto takva funkcija AFAIK u C/C++-u ne postoji. Ti si je doduše možeš sam napisati.

Mislio sam da sam ti odgovorio na pitanje - napisao sam ti točno kako se to može napraviti. Ne može se kao u basicu, korištenjem funkcije poput swap, pošto takva funkcija AFAIK u C/C++-u ne postoji. Ti si je doduše možeš sam napisati.
Stvarno?
Reci malo više....


Ovo će možda bit ok u c++u ako se radi s referencama. U C-u bi išlo ovako neto:
No pošto pitaš ovakvo pitanje vjerojatno si na početku programiranja pa bi pointeri bili too much. Bolje poslušaj što kaže mbaksa, jednostavno kad mijenjaš varijable uzmeš jednu pomoćnu pa ih zamijeniš. Kod je isti ko gore samo bez zvjezdica. Upućujem te na 118str

Ljudi, treba mi pomoć oko zadatka, korisnik upisiva broj n , a program treba izračunati broj za koji vrijedi:
1 ... n
---- + ----- + -------------
1+2 1+2+... 1+...+(n+1)
ako je (n=2) bit će:
1 2
----- + --------
1+2 1+2+3
ako je (n=3) bit će:
1 2 3
---- + -------- + -----------
1+2 1+2+3 1+2+3+4
Nadam se da kužite, hvala na pomoći unaprijed...

Gdje je problem? Znaš valjda napraviti petlju, znaš zbrojiti i dijeliti, zar ne? Imaš varijablu rezultat, koja se uvećava za izraz
n
-------------
1+...+(n+1)
Znači, izvana imaš petlju koja ide za svaki n. Što će se događati unutar te petlje? Pa prvo ćeš ići računat dijeljitelja - vrtjet ćeš petlju, i uvećavati sve do n+1, zar ne? I onda ćeš jednostavno podijeliti n s dijeljiteljem. I taj rezultat će se u petlji iznad (tj. skroz vanjskoj petlji) dodati ukupnom rezultatu.
Drugim riječima, razloži problem na manje jednotavnije probleme. Dijelitelja valjda znaš izračunati. Izraz n/djeljitelj bi isto morao znati izračunati. I u konačnici samo moraš zbrojiti sve te izraze.
No kak da onda u string tipka stavim rijec KVADRAT??
A to ti zapravo zelis!!
tipka = "KVADRAT"
ili ga mozes kopirati pomocu strcpy
#include <string.h>
...
strcpy(tipka,"KVADRAT")
KOnačno!
Hvala ti!
Znam tu naredbu ali je dugo nisam koristio pa je zaboravio...
Hvala!