|
Programiranje Programski jezici, tehnike, alatke... |
|
Alatke vezane za temu | Vrste prikaza |
11.12.2013, 1:55 | #261 |
Član
|
Re: How to... C++
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"); } |
11.12.2013, 19:48 | #262 |
Starosedelac
|
Re: How to... C++
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. |
11.12.2013, 22:09 | #263 |
Član
|
Re: How to... C++
Imas li ideju kako da napravim da ne broji parove?
|
11.12.2013, 22:29 | #266 |
Član
|
Re: How to... C++
|
11.12.2013, 22:33 | #267 |
V.I.P. Programiranje
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
|
Re: How to... C++
|
11.12.2013, 22:40 | #268 |
Član
|
Re: How to... C++
Ispravio sam
|
11.12.2013, 23:35 | #270 |
V.I.P. Programiranje
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
|
Re: How to... C++
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; } } } |
8.1.2014, 14:21 | #271 |
Član
|
Re: How to... C++
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); } |
8.1.2014, 15:53 | #272 |
Član
Član od: 15.12.2011.
Poruke: 150
Zahvalnice: 27
Zahvaljeno 49 puta na 44 poruka
|
Re: How to... C++
Je l' zadatak treba resiti u C-u ili C++-u?
|
8.1.2014, 16:43 | #273 |
Član
|
Re: How to... C++
Ma taj profesor koristi i C i C++ iako treba C da se radi, iz C++ jedino klase ne koristimo xD
|
8.1.2014, 23:58 | #274 |
Član
Član od: 15.12.2011.
Poruke: 150
Zahvalnice: 27
Zahvaljeno 49 puta na 44 poruka
|
Re: How to... C++
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) |
9.1.2014, 1:35 | #275 |
Član
|
Re: How to... C++
Cekaj ako sam dobro skapirao za niz stringova:
To je u stvari matrica??? |
9.1.2014, 7:59 | #276 |
Banned
|
Re: How to... C++
Ne, string je jednodimenzionalni niz, a koliko sam video, tebi treba niz stringova, pa samim tim ti treba dvodimenzionalni niz
|
9.1.2014, 11:46 | #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
|
Re: How to... C++
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) |
9.1.2014, 12:38 | #278 |
Član
|
Re: How to... C++
Ovo sam skapirao(koliko-toliko) ali kako da pristupim tom nizu, npr iz datoteke ucitati rec po rec i staviti u niz stringova?
|
9.1.2014, 13:13 | #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
|
Re: How to... C++
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 Zahvaljujući onoj terminalnoj nuli koju sam pomenuo u prošlom postu, ispisivaće ti tvoje stringove, neće (bar ne bi trebalo) da ispiše onaj višak memorije. 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) |
9.1.2014, 13:24 | #280 |
Član
|
Re: How to... C++
Nisam odmah shavtio ono sto je gore napisao, ali sad mi je jasno, hvala svima
|
Bookmarks sajtovi |
Tagovi |
c++, how to, pomoc, programiranje |
|
|