![]() |
![]() |
|
Programiranje Programski jezici, tehnike, alatke... |
![]() |
|
Alatke vezane za temu | Vrste prikaza |
![]() |
#261 |
Član
|
![]() Kod:
#include<stdio.h> #include<stdlib.h> #include<time.h> void zamisli(int a[4]) { srand(time(NULL)); for (int i = 0; i < 4; i++) a[i] = (rand() % 6) + 1; } void proveraNamestu(int b[4], int a[4], int &nm) { //provera na mestu for (int i = 0; i < 4; i++) if (a[i] == b[i]) nm++; } void proverPogodjene(int b[4], int a[4], int &bp) { for (int i = 0; i < 4; i++) for (int j = 0; j < 4; j++) if (a[i] == b[j]) bp++; } void main() { int b[4]; int a[4]; int bp = 0; int nm = 0; zamisli(a); for (int i = 0; i < 4; i++) printf("%d ", a[i]); int i = 1; while (i <= 7) { puts("\n"); for (int i = 0; i < 4; i++) scanf_s("%d", &b[i]); proveraNamestu(b, a, nm); proverPogodjene(b, a, bp); printf("Broj pogodjenih je: %d Na mestu su: %d\n", bp, nm); if (nm == 4) printf("POGODILI STE KOMBINACIJU"); if (nm == 4) break; i++; bp = 0; nm = 0; } if (i == 7) { printf("Niste pogodili kombinaciju, tacna kombinacija je: "); for (int i = 0; i < 4; i++) printf("%d ", a[i]); } system("pause"); } ![]() |
![]() |
![]() |
![]() |
#262 |
Starosedelac
|
![]()
Tvoja funkcija broji sve parove, stoga ti vraca 2.
U tvom slucaju imas 1 2 3 1 i 5 5 1 5, gde imas dva para, koji dele jednu jedinicu u drugom broju. |
![]() |
![]() |
![]() |
#263 |
Član
|
![]()
Imas li ideju kako da napravim da ne broji parove?
|
![]() |
![]() |
![]() |
#266 |
Član
|
![]() |
![]() |
![]() |
![]() |
#267 |
V.I.P. Programiranje
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
|
![]() |
![]() |
![]() |
![]() |
#268 |
Član
|
![]()
Ispravio sam
![]() |
![]() |
![]() |
![]() |
#270 |
V.I.P. Programiranje
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
|
![]()
Ako mu ne treba niz a posle ove operacije, moze da "skrembluje" element kad ga upari:
Kod:
for(int i = 0; i < 4; ++i) { for(int j = 0; j < 4; ++j) { if(b[i] == a[j]) { ++bp; a[j] = -1; break; } } } Kod:
int uparen[4] = { -1, -1, -1, -1 }; for(int i = 0; i < 4; ++i) { for(int j = 0; j < 4; ++j) { if(b[i] == a[j] && j != uparen[j]) { ++bp; uparen[j] = j; break; } } } ![]() |
![]() |
![]() |
![]() |
#271 |
Član
|
![]()
Opet ja sa problemom xD
Tekst zadatka: Sortirati leksikografski reci u datoteci Ulaz.txt. Sortirani tekst ispisati u Sort.txt Ja sam odradio da on sortira reci ali onda te reci(stringove) moram da stavim u neki niz koji cu kasnije da upisem u ovaj izlazni fajl, e sad ja ne znam kako da napravim niz stringova? moze mala pomoc? Evo ovde je kod onoga sto sam do sada uradio Kod:
#include<stdio.h> #include<string.h> #include<string> void fastSwap(char **i, char **d) { char *t = *d; *d = *i; *i = t; } void main() { FILE *in, *out; fopen_s(&in, "Ulaz.dat", "r"); fopen_s(&out, "Izlaz.dat", "w"); char niz[100][20]; char rec[20]; int i = 0; while (!feof(in)) { fscanf_s(in, "%s", rec); strcpy_s(niz[i++], rec); } for (int i = 0; i < sizeof(niz)-1; i++) for (int j = i; j < sizeof(niz); j++) { char *prvi = niz[i], *drugi = niz[j]; if (strcmp(prvi, drugi) > 0) fastSwap(&prvi, &drugi); } for (int i = 0; i < sizeof(niz); i++) fprintf(out, "%s ", niz[i]); fclose(in); fclose(out); } |
![]() |
![]() |
![]() |
#272 |
Član
Član od: 15.12.2011.
Poruke: 150
Zahvalnice: 27
Zahvaljeno 49 puta na 44 poruka
|
![]()
Je l' zadatak treba resiti u C-u ili C++-u?
|
![]() |
![]() |
![]() |
#273 |
Član
|
![]()
Ma taj profesor koristi i C i C++ iako treba C da se radi, iz C++ jedino klase ne koristimo xD
|
![]() |
![]() |
![]() |
#274 |
Član
Član od: 15.12.2011.
Poruke: 150
Zahvalnice: 27
Zahvaljeno 49 puta na 44 poruka
|
![]()
Eto ga
![]() sizeof() vraca velicinu niza u bajtovima, pa da odredis broj elemenata niza trebalo bi da tu vrednost podelis sa velicinom jednog elementa niza sizeof(niz)/sizeof(char) ili npr. sizeof(niz)/sizeof(niz[0]). To ne radi kad ti je niz argument funkcije detaljnije Mozes to i ovako da izvedes: Kod:
int duzina = 0 while (!feof(in)) { fscanf_s(in, "%s", rec); strcpy(niz[duzina++], rec); } for (int i = 0; i < duzina-1; i++) for (int j = i+1; j < duzina; j++) |
![]() |
![]() |
Sledeći korisnik se zahvaljuje korisniku korisnickoime na korisnoj poruci: | ||
dsl94 (9.1.2014) |
![]() |
#275 |
Član
|
![]()
Cekaj ako sam dobro skapirao za niz stringova:
To je u stvari matrica??? |
![]() |
![]() |
![]() |
#276 |
Banned
|
![]()
Ne, string je jednodimenzionalni niz, a koliko sam video, tebi treba niz stringova, pa samim tim ti treba dvodimenzionalni niz
|
![]() |
![]() |
![]() |
#277 |
Starosedelac
Član od: 23.2.2006.
Lokacija: Tamo gde su kuće od čokolade i prozori od marmelade....
Poruke: 1.579
Zahvalnice: 195
Zahvaljeno 301 puta na 171 poruka
|
![]()
Niz stringova nije matrica.
Iako je prirodno da pomisliš to pošto je i sam string niz, niz stringova ne mora da bude nužno matrica, zato što u nizu stringova možeš da imaš varirajuće dužine stringova i samim tim nemaš matricu. ![]() Možeš da imaš ovako u nizu stringova: 12345678'\0' 12345'\0' 123456789'\0' 123'\0' 1234'\0' Primeti da je nazubljeno, to samim tim nije matrica. Niz stringova se deklariše sa char** pa dinamički alociraš svaki memoriju za svaki string i stavljaš u svakoj iteraciji. Ili da napraviš matricu char[n][m] gde će n da bude broj reči a m dužina najduže reči. U ovom drugom slučaju ova gore matrica će izgledati 12345678'\0'_ 12345'\0'____ 123456789'\0' 123'\0'______ 1234'\0'_____ Gde _ označava memoriju rezervisanu za taj string ali u suštini ne koristi. Zahvaljujući '\0' kada uzmeš 4 red matrice on će očitati 123 a ne 123______ Nadam se da sam pomogao, pošto umem da budem zbunjujuć ![]() Što se tiče prvog načina, u principu se svodi da deklarišeš niz pokazivača koji će zapravo pokazivati na stringove u memoriji. |
![]() |
![]() |
Sledeći korisnik se zahvaljuje korisniku Teva na korisnoj poruci: | ||
dsl94 (9.1.2014) |
![]() |
#278 |
Član
|
![]()
Ovo sam skapirao(koliko-toliko) ali kako da pristupim tom nizu, npr iz datoteke ucitati rec po rec i staviti u niz stringova?
|
![]() |
![]() |
![]() |
#279 |
Starosedelac
Član od: 23.2.2006.
Lokacija: Tamo gde su kuće od čokolade i prozori od marmelade....
Poruke: 1.579
Zahvalnice: 195
Zahvaljeno 301 puta na 171 poruka
|
![]()
Napisao ti je gore korisnickoime (mnogo originalan nick btw :P ).
U principu nešto ovako, ideja je da svaki string ponaosob smeštaš u poseban red matrice. Pa samo da ispisuješ redove ![]() Možda sam negde pogrešio al bi ovo trebalo da radi ![]() Kod:
int main(){ FILE* in = fopen(...); FILE* out = fopen(...); char words[100][100]; // ovo je primera radi. int i = 0; /* ucitas reci*/ while(feof(in)){ fscanf(in, "%s ",words[i]); /* uvecavamo broj reci koje trenutno imamo u memoriji. */ i++; } /*sortiras*/ .... /* ispises u out datoteku */ for(int j = 0; j < i; j++) fprintf(out, "%s", words[j]); /* zatvoris datoteku i sta vec treba da uradis pre kraja programa */ } |
![]() |
![]() |
Sledeći korisnik se zahvaljuje korisniku Teva na korisnoj poruci: | ||
dsl94 (9.1.2014) |
![]() |
#280 |
Član
|
![]()
Nisam odmah shavtio ono sto je gore napisao, ali sad mi je jasno, hvala svima
![]() |
![]() |
![]() |
![]() |
Bookmarks sajtovi |
Tagovi |
c++, how to, pomoc, programiranje |
Alatke vezane za temu | |
Vrste prikaza | |
|
|