|
Programiranje Programski jezici, tehnike, alatke... |
|
Alatke vezane za temu | Vrste prikaza |
24.10.2008, 23:24 | #1 |
Novi član
Član od: 24.10.2008.
Lokacija: Sarajevo
Poruke: 26
Zahvalnice: 5
Zahvaljeno 3 puta na 3 poruka
|
Jedan zadatak u C-u
trebam pomoc, novi sam na forumu, pa se nadam da nisam promasio temu.
Zadatak glasi ovako... Korisnik unosi cijele pozitivne brojeve putem tastature, ili nulu za kraj unosa. Ukoliko se unese negativan broj, on se ignoriše. Nakon što korisnik unese nulu, unosi se broj n (maksimalno 10). Program ispisuje broj brojeva koji pri dijeljenju sa n daju ostatke 0, 1, 2, 3..., n-1. ja kako sam skontao, ako unesem neke bezze brojeve i n= 4 dobijem otprilike ovakav ispis 5 1 2 16 4 17 5 4 8 -5 21 78 2 0 Unesite broj n: 4 Brojeva sa ostatkom 0: 4 Brojeva sa ostatkom 1: 5 Brojeva sa ostatkom 2: 3 Brojeva sa ostatkom 3: 0 eh sada nastupa problem... Nije mi unaprijed definisan niz brojeva koje trebam unijeti.... nije meni problem zatvoriti petlju kada se nula učita, već je problem taj što nemam unaprijed definisan taj niz(tj. ne znam do koje mi vrijednosti niz ide...). i jos me zanima da li trebam ići preko brojača za ovaj "broj" brojeva sa ostatkom.. Ako neko ima ili moze zbaviti kompletan kod ili rijesiti zadatak bio bi stvarno zahvalan. |
Sledeći korisnik se zahvaljuje korisniku RuSkO_17 na korisnoj poruci: | ||
Skyrim (26.10.2008) |
25.10.2008, 11:28 | #2 | |
Veteran
|
Re: Jedan zadatak u C-u
Citat:
Drugo pitanje te nisam najbolje razumeo |
|
25.10.2008, 14:56 | #3 |
Član
Član od: 6.3.2006.
Lokacija: Nis
Poruke: 141
Zahvalnice: 31
Zahvaljeno 9 puta na 7 poruka
|
Re: Jedan zadatak u C-u
Mislim da si dobro skontao zadatak.
Kod ovakvih zadataka se uvek pretpostavlja da niz ima neku maksimalnu granicu do koje se moze najvise ici. To bi bilo kao nesto: Kod:
int niz[10000]; Kod:
int niz[10000]; int num = 0, tmp = 1; while (true) { scanf("%d",&tmp); if (tmp == 0) break; if (tmp > 0) niz[num++] = tmp; } Za broj brojeva sa ostkom koristi novi niz od maksimalno 11 elemenata (posto ti je tako definisano u zadatku) i u polja sa odgovarajucim indeksom stavljaj brojace (na nultom indeksom broj brojeva sa ostatkom 0, sa indeksom 1 sa ostatkom 1...) Kod:
int ostatak[11]; for (int i = 0; i< 10 ; i++) ostatak[i] = 0; for (i = 0; i < num; i++) ostatak[niz[i]%n]++; Ako ides u srednju skolu onda sam 99.99% siguran da ti malloc, calloc i realloc (i ostale stvari iz malloc.h) ne trebaju, jer se principi dinamicke memorije tada jos uvek ne uce, mada ni to nije tesko. Da pises "pravu" aplikaciju, onda bi zbog optimizacije memorije morao da koristis malloc.h. Poslednja ispravka: JBlitzkrieg (25.10.2008 u 15:07) |
25.10.2008, 20:11 | #4 |
Veteran
Član od: 17.1.2008.
Lokacija: Београд
Poruke: 636
Zahvalnice: 481
Zahvaljeno 128 puta na 85 poruka
|
Re: Jedan zadatak u C-u
Posto ne znam da objasnjavam dobro evo jedan primer:
Kod:
#include <stdio.h> #include <stdlib.h> int main(void) { int *num=NULL; int *ost=NULL; int i=0; int nost; int tmp; printf("Ukucaj brojeve: \n"); while(1) { int n; printf("Broj %d: ",i); scanf("%d",&n); if(n==0) break; else if(n>0) { num=realloc(num,sizeof(int)); num[i]=n; ++i; } } printf("\nKoliki je maksimalni ostatak koji zelite da proverite? "); scanf("%d",&nost); for(tmp=0;tmp<nost;++tmp) { int nnum; ost=realloc(ost,sizeof(int)); for(nnum=0;nnum<i;++nnum) if(num[nnum]%tmp) ++ost[tmp]; } for(tmp=0;tmp<nost;++tmp) printf("Brojeva sa ostatkom %d: %d",tmp,ost[tmp]); free(num); free(ost); return 1; } EDIT: tek sam sad shvatio sta trazis.. sutra cu postaviti dobar primer Poslednja ispravka: allokin (26.10.2008 u 2:22) |
26.10.2008, 18:14 | #5 |
Član
Član od: 9.6.2008.
Lokacija: u Niš
Poruke: 32
Zahvalnice: 18
Zahvaljeno 18 puta na 12 poruka
|
Re: Jedan zadatak u C-u
Mislim da sam napravio program koji odgovara opisu.
http://rapidshare.com/files/15775091...amche.exe.html |
26.10.2008, 21:30 | #6 | |||
Novi član
Član od: 24.10.2008.
Lokacija: Sarajevo
Poruke: 26
Zahvalnice: 5
Zahvaljeno 3 puta na 3 poruka
|
Re: Jedan zadatak u C-u
Citat:
Citat:
mislim da bi sada mogao rijesiti zadatak idem u srednju.... Citat:
znači čitav zadatak moram uraditi samo pomoću do-while, while, for petlji... naravno radili smo i switch-case, if naredbu itd... ustvari zadnja lekcija je "Višedimenzionalni nizovi"... |
|||
28.10.2008, 15:01 | #7 |
Član
Član od: 6.3.2006.
Lokacija: Nis
Poruke: 141
Zahvalnice: 31
Zahvaljeno 9 puta na 7 poruka
|
Re: Jedan zadatak u C-u
Ok onda spoji ove delove koda sa onime sto si vec uradio i imaces resenje zadatka.
Evo ovako na brzinu sam sada sklepao zadatak, ali ga nisam proverio da li radi: Kod:
#include <stdio.h> void main() { printf("Unesi elemente niza\n"); int niz[10000]; int num = 0, tmp = 1; while (true) { scanf("%d",&tmp); if (tmp == 0) break; if (tmp > 0) niz[num++] = tmp; } printf("\nUnesi broj n: \n"); int n; while (true) { scanf("%d",&n); if ((n>0) && (n<=10)) break; printf("\nBroj n nije u opsegu\nPonovi unos\n"); } int ostatak[11]; for (int i = 0; i<= 10 ; i++) ostatak[i] = 0; for (i = 0; i < num; i++) ostatak[niz[i]%n]++; printf("\nBroj brojeva sa odgovarajucim ostacima:\n"); for (i=0; i < n; i++) printf("Broj brojeva sa ostatkom %d: %d", i, ostatak[i]); } |
Sledeći korisnik se zahvaljuje korisniku JBlitzkrieg na korisnoj poruci: | ||
RuSkO_17 (28.10.2008) |
28.10.2008, 17:57 | #8 | |
Novi član
Član od: 24.10.2008.
Lokacija: Sarajevo
Poruke: 26
Zahvalnice: 5
Zahvaljeno 3 puta na 3 poruka
|
Re: Jedan zadatak u C-u
Citat:
evo jos jedan način... Kod:
#include<stdio.h> int main() { int niz[10000],n,index=0,ostatak=0,x[9],i; printf("Unesi brojeve(unos prekidate nulom): \n"); do { index++; printf("Unesi %d. broj:",index); scanf("%d",&niz[index]); if(niz[index] < 0) index--; } while(niz[index]!=0); do { printf("\nUnesite broj n: "); scanf("%d",&n); } while(n<=0 || n>10); x[0]=0;x[1]=0;x[2]=0;x[3]=0;x[4]=0;x[5]=0;x[6]=0;x[7]=0;x[8]=0;x[9]=0; /* Postavljamo vrijednosti ostatka na nulu */ for(i=1;i<=(index-1);i++) { ostatak = niz[i]%n; x[ostatak]++; } printf("\n"); for(i=0;i<=n-1;i++) { printf("Brojevi sa ostatkom %d: %d\n",i,x[i]); } } |
|
5.11.2008, 13:54 | #9 |
Novi član
Član od: 24.10.2008.
Lokacija: Sarajevo
Poruke: 26
Zahvalnice: 5
Zahvaljeno 3 puta na 3 poruka
|
Re: Jedan zadatak u C-u
Pitanje...
Kako da napravim uniju dva niza u C-u, tj, ako u neki nizA unesem neke brojeve :3 4 5 6, i u nizB unesem 5 6 7 8, da mi kreira nizC koji ce sadrzavati sve ove vrijednosti.... Stvarno mi ovi nizovi ne idu dobro, a treba ih dobro savladati... još jedno pitanje... kako da napravim da mi NizC koji ce sadrzavati sve clanove niza A, osim onih clanova u nizuB koji mi se ponavljaju (tj. isti su kao i u nizA) |
5.11.2008, 14:38 | #10 |
Veteran
Član od: 4.7.2008.
Lokacija: Somewhere along the line
Poruke: 505
Zahvalnice: 85
Zahvaljeno 34 puta na 29 poruka
|
Re: Jedan zadatak u C-u
Evo:
#include<iostream> usingnamespace std; int main() { int nizA1,nizA2,nizA3; int nizB1,nizB2,nizB3; int nizC; cout<<"Unesi prvi broj za niz A: "; cin>>nizA1; cout<<endl; cout<<"Unesi drugi broj za niz A: "; cin>>nizA2; cout<<"OK"<<endl<<endl<<endl; cout<<"Unesi prvi broj za niz B: "; cin>>nizB1; cout<<endl; cout<<"Unesi drugi broj za niz B: "; cin>>nizB2; cout<<endl; cout<<"OK"<<endl; if(nizA1==nizB1 || nizA1==nizB2) cout<<"Zajednicki je broj "<<nizA1<<endl; else cout<<"Nema zajednickih brojeva!!!"<<endl; if(nizA2==nizB1 || nizA2==nizB2) cout<<"Zajednicki je broj "<<nizA2<<endl; else cout<<"Nema zajednickih brojeva!!!"<<endl; system("PAUSE"); return 0; } Uradio sam samo da mogu da se unesu dva broja,a za ostalo malo razmisljaj!!! |
5.11.2008, 14:45 | #11 |
Novi član
Član od: 24.10.2008.
Lokacija: Sarajevo
Poruke: 26
Zahvalnice: 5
Zahvaljeno 3 puta na 3 poruka
|
Re: Jedan zadatak u C-u
|
5.11.2008, 20:01 | #12 |
Starosedelac
Član od: 5.6.2008.
Poruke: 2.163
Zahvalnice: 993
Zahvaljeno 122 puta na 98 poruka
|
Re: Jedan zadatak u C-u
Moram da napravim jedan program.U C++, Pascalu.
Evo o chemu se radi: postoji digitalni generator codova koji generishe 6-cifrene codeove tako da je svaki sledeci razlichit.Znaci koriste se samo cifre 0 1 2 3 4 5 6 7 8 9. n=10 k=6 V=151200 codeova Moram napraviti aplikaciju koja ce umesto mene "kucati" te codove dok se stvar ne provali. Verovatno je vec neko na netu okacio tako nesto ali mi net trenutno ne radi bas dobro pa bih molio da ako neko zna sajt sa kojeg mogu skinuti takav program i uz male modifikacije prilagodi cu ga mojim potrebama. RADI SE O WORLD OF WARCRAFT...tachnije ujak mi je rekao user i pass ali je dodao tu dodatnu prepreku.Kladio sam se sa njim da cu to provaliti. Pomoc |
5.11.2008, 21:23 | #13 |
Ad Ministrator
Član od: 19.8.2005.
Lokacija: Beograd, SK
Poruke: 7.280
Zahvalnice: 29
Zahvaljeno 3.041 puta na 1.544 poruka
|
Re: Jedan zadatak u C-u
Tvoj ujak se malko šali s tobom.
Jedini način da se to reši jeste da napraviš 6 petlji jednu u drugoj i da redom menjaš cifre od nula do 9 u svakoj od njih. A to radi straaaašno sporo. Ali nije neizvodljivo. Poslednja ispravka: VojaM (5.11.2008 u 21:43) |
6.11.2008, 0:37 | #14 |
Veteran
|
Re: Jedan zadatak u C-u
Nije jedini nacin da se napravi petlja. Mnogo bolje resenje je da se napravi brojac u vidu niza koji se moze koristiti i za mnogo vise cifri, a i citljivije je cini mi se
Kod:
#include <stdio.h> #include <stdlib.h> void add_one(int array[], int place) { array[place]++; if (array[place] == 10) { array[place] = 0; add_one(array, place-1); } } void print(int array[], int len) { int i; for (i = 0; i < len; i++) printf("%d ",array[i]); printf("\n"); } int main() { int array[6] = {0,0,0,0,0,0}; int finish[6] = {9,9,9,9,9,9}; while (memcmp(array, finish, 6*sizeof(int)) != 0) { add_one(array, 5); print(array, 6); } return 0; } Kod:
#include "stdio.h" int main() { int a[5] = {0,1,2,4,64}; int b[3] = {5,12,54}; int c[5+3]; int i; for (i = 0; i < 5; i++) c[i] = a[i]; for (i ; i < 5+3; i++) c[i] = b[i-5]; return 0; } Kod:
#include <stdio.h> #include <string.h> int main() { int a[4] = {32, 21, 13, 5}; int b[5] = {1,2,3,4,8}; int c[4+5]; memcpy(c, a, sizeof(int)*4); memcpy(c+4, b, sizeof(int)*5); return 0; } Poslednja ispravka: Stevvan (6.11.2008 u 0:49) |
Sledeći korisnik se zahvaljuje korisniku Stevvan na korisnoj poruci: | ||
RuSkO_17 (6.11.2008) |
6.11.2008, 2:23 | #15 | |
Ad Ministrator
Član od: 19.8.2005.
Lokacija: Beograd, SK
Poruke: 7.280
Zahvalnice: 29
Zahvaljeno 3.041 puta na 1.544 poruka
|
Re: Jedan zadatak u C-u
Čekaj, Stevvane, kanda smo se zeznuli obojica.
Njemu ne treba program koji generiše kod, nego kod koji taj kod negde unosi: Citat:
|
|
6.11.2008, 12:57 | #16 |
Veteran
|
Re: Jedan zadatak u C-u
Da da skapirao sam ja sta on hoce, ja sam samo hteo da pokazem kako se takav problem resava bez mnogo petlji, mislim da nekome moze da koristi
|
17.11.2008, 16:53 | #17 |
Novi član
Član od: 24.10.2008.
Lokacija: Sarajevo
Poruke: 26
Zahvalnice: 5
Zahvaljeno 3 puta na 3 poruka
|
Re: Jedan zadatak u C-u
Kako da napravim program koji na ekranu ispisuje Paskalov trougao za neku unesenu vrijednost x... npr ako je x=4, da mi ispis bude...
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 imam neku ideju... jaran mi je rekao da mogu riješiti preko rekurzivne funkcije...ali nije objasnio kako. |
17.11.2008, 17:22 | #18 |
Banned
Član od: 20.12.2005.
Lokacija: banjaluka
Poruke: 3.220
Zahvalnice: 278
Zahvaljeno 363 puta na 216 poruka
|
Re: Jedan zadatak u C-u
evo ovako nesto:
Kod:
int brojRedova; Console.Write("Koliko redova?"); brojRedova=Convert.ToInt32(Console.ReadLine()); int[][] trougao=new int[brojRedova+1][]; for(int i=0; i<=brojRedova; i++) trougao[i]=new int[i+1]; trougao[0][0]=1; for(int i=1; i<=brojRedova; i++) { trougao[i][0]=1; trougao[i][i]=1; for(int j=1; j<trougao[i].Length-1; j++) trougao[i][j]=trougao[i-1][j-1]+trougao[i-1][j]; } for(int i=0; i<=brojRedova; i++) { for(int j=0; j<=i; j++) Console.Write(trougao[i][j]+" "); Console.WriteLine(); } Console.ReadKey(); EDIT: malo skracenje koda |
Sledeći korisnik se zahvaljuje korisniku sasha vukelic na korisnoj poruci: | ||
RuSkO_17 (17.11.2008) |
17.11.2008, 17:30 | #19 |
Novi član
Član od: 24.10.2008.
Lokacija: Sarajevo
Poruke: 26
Zahvalnice: 5
Zahvaljeno 3 puta na 3 poruka
|
Re: Jedan zadatak u C-u
for(int j=1; j<trougao[i].Length-1; j++) trougao[i][j]=trougao[i-1][j-1]+trougao[i-1][j];
} e ovo je ključna stvar .. evo sad sam našao na netu kako se ustvari predstavlja Paskalov trougao. Ako trougao stavim u neki xOy koordinatni sistem, onda ustvari imam pa bi ovako nekako izgledala funkcija, nisam još probao radi li.. Kod:
int P(int x,int y){ int a,b; if(x==1 || x==y) return 1; a=P(x-1, y-1); b=P(x, y-1); return a+b; } edit... evo probao sam, radi ... Kod:
#include <stdio.h> #include <stdlib.h> int P(int x,int y){ int a,b; if(x==1 || x==y) return 1; a=P(x-1, y-1); b=P(x, y-1); return a+b; } int main() { int n,i,j; printf("\nUnesi vrijednost:"); scanf("%d", &n); for (j=1;j<=n;j++) { for(i=1;i<=j;i++) printf("%8d", P(i,j)); printf ("\n"); } return 0; } Poslednja ispravka: RuSkO_17 (17.11.2008 u 17:40) |
Bookmarks sajtovi |
Alatke vezane za temu | |
Vrste prikaza | |
|
|
Slične teme | ||||
tema | temu započeo | forum | Odgovora | Poslednja poruka |
Zadatak iz matematike... | Down Force | Brbljaonica | 84 | 29.6.2010 12:39 |
povezivanje 2 kompa da rade kao jedan | M.A.G.E | Komunikacioni uređaji i umrežavanje | 16 | 30.9.2008 0:23 |
Zadatak u VB | TypeR | Programiranje | 3 | 16.6.2008 10:18 |
Jedan nalog za Net iskorišćen na dva mesta | EHHO | Komunikacioni uređaji i umrežavanje | 7 | 26.5.2008 16:32 |
Kako dodati još jedan HDD? | Tetanus | Nosači podataka | 20 | 11.12.2007 19:06 |