Forum Sveta kompjutera

Nazad   Forum Sveta kompjutera > Test Run > Programiranje
Uputstvo Članstvo Kalendar Današnje poruke Pretraži

Programiranje Programski jezici, tehnike, alatke...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 11.12.2013, 1:55   #261
dsl94
Član
 
Član od: 3.8.2010.
Lokacija: Nis
Poruke: 107
Zahvalnice: 30
Zahvaljeno 8 puta na 7 poruka
Slanje poruke preko Skypea korisniku dsl94
Određen forumom 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");
}
PS radi provere sam stavio da stampa zamisljeni niz
dsl94 je offline   Odgovor sa citatom ove poruke
Stara 11.12.2013, 19:48   #262
MG-RAY
Starosedelac
 
Član od: 15.2.2006.
Lokacija: Midlands
Poruke: 1.523
Zahvalnice: 277
Zahvaljeno 307 puta na 207 poruka
Slanje poruke preko Skypea korisniku MG-RAY
Određen forumom 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.
MG-RAY je offline   Odgovor sa citatom ove poruke
Stara 11.12.2013, 22:09   #263
dsl94
Član
 
Član od: 3.8.2010.
Lokacija: Nis
Poruke: 107
Zahvalnice: 30
Zahvaljeno 8 puta na 7 poruka
Slanje poruke preko Skypea korisniku dsl94
Određen forumom Re: How to... C++

Imas li ideju kako da napravim da ne broji parove?
dsl94 je offline   Odgovor sa citatom ove poruke
Stara 11.12.2013, 22:21   #264
Belphegor
V.I.P. Programiranje
 
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
Određen forumom Re: How to... C++

Kod:
if (b[i] == a[j])         bp++; break;
Belphegor je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku Belphegor na korisnoj poruci:
dsl94 (11.12.2013)
Stara 11.12.2013, 22:22   #265
Geomaster
V.I.P. Programiranje
 
Član od: 28.6.2007.
Lokacija: Beograd
Poruke: 2.342
Zahvalnice: 2.836
Zahvaljeno 1.047 puta na 507 poruka
Slanje poruke preko MSN-a korisniku Geomaster Slanje poruke preko Skypea korisniku Geomaster
Određen forumom Re: How to... C++

Zar ti ne trebaju {} okolo?
Geomaster je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku Geomaster na korisnoj poruci:
Belphegor (11.12.2013)
Stara 11.12.2013, 22:29   #266
dsl94
Član
 
Član od: 3.8.2010.
Lokacija: Nis
Poruke: 107
Zahvalnice: 30
Zahvaljeno 8 puta na 7 poruka
Slanje poruke preko Skypea korisniku dsl94
Određen forumom Re: How to... C++

Citat:
Belphegor kaže: Pregled poruke
Kod:
if (b[i] == a[j])         bp++; break;

Radi sad, hvala
dsl94 je offline   Odgovor sa citatom ove poruke
Stara 11.12.2013, 22:33   #267
Belphegor
V.I.P. Programiranje
 
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
Određen forumom Re: How to... C++

Citat:
Geomaster kaže: Pregled poruke
Zar ti ne trebaju {} okolo?
Nazi
Samo sam iskopirao njegov kod i dodao break, nisam obracao paznju na sintaksu, verujem da je sam i ispravio.
Belphegor je offline   Odgovor sa citatom ove poruke
Stara 11.12.2013, 22:40   #268
dsl94
Član
 
Član od: 3.8.2010.
Lokacija: Nis
Poruke: 107
Zahvalnice: 30
Zahvaljeno 8 puta na 7 poruka
Slanje poruke preko Skypea korisniku dsl94
Određen forumom Re: How to... C++

Ispravio sam
dsl94 je offline   Odgovor sa citatom ove poruke
Stara 11.12.2013, 23:03   #269
MG-RAY
Starosedelac
 
Član od: 15.2.2006.
Lokacija: Midlands
Poruke: 1.523
Zahvalnice: 277
Zahvaljeno 307 puta na 207 poruka
Slanje poruke preko Skypea korisniku MG-RAY
Određen forumom Re: How to... C++

Citat:
Belphegor kaže: Pregled poruke
Kod:
if (b[i] == a[j])         bp++; break;
Mislim da to neće raditi? Npr za slučaj [1, 2, 3, 1] [1, 1, 1, 5] dobiće se rezultat 3? Am I wrong?
MG-RAY je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku MG-RAY na korisnoj poruci:
Belphegor (11.12.2013)
Stara 11.12.2013, 23:35   #270
Belphegor
V.I.P. Programiranje
 
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
Određen forumom 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;
            }
        }
    }
ili da doda jos jedan niz u kome ce da pamti uparene:
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;
            }
        }
    }
Ili sam ja promasio poentu zadatka.
Belphegor je offline   Odgovor sa citatom ove poruke
Stara 8.1.2014, 14:21   #271
dsl94
Član
 
Član od: 3.8.2010.
Lokacija: Nis
Poruke: 107
Zahvalnice: 30
Zahvaljeno 8 puta na 7 poruka
Slanje poruke preko Skypea korisniku dsl94
Određen forumom 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); 
}
dsl94 je offline   Odgovor sa citatom ove poruke
Stara 8.1.2014, 15:53   #272
korisnickoime
Član
 
Član od: 15.12.2011.
Poruke: 150
Zahvalnice: 27
Zahvaljeno 49 puta na 44 poruka
Određen forumom Re: How to... C++

Je l' zadatak treba resiti u C-u ili C++-u?
korisnickoime je offline   Odgovor sa citatom ove poruke
Stara 8.1.2014, 16:43   #273
dsl94
Član
 
Član od: 3.8.2010.
Lokacija: Nis
Poruke: 107
Zahvalnice: 30
Zahvaljeno 8 puta na 7 poruka
Slanje poruke preko Skypea korisniku dsl94
Određen forumom 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
dsl94 je offline   Odgovor sa citatom ove poruke
Stara 8.1.2014, 23:58   #274
korisnickoime
Član
 
Član od: 15.12.2011.
Poruke: 150
Zahvalnice: 27
Zahvaljeno 49 puta na 44 poruka
Određen forumom Re: How to... C++

Citat:
dsl94 kaže: Pregled poruke
e sad ja ne znam kako da napravim niz stringova?
Kod:
  char niz[100][20];
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++)
korisnickoime je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku korisnickoime na korisnoj poruci:
dsl94 (9.1.2014)
Stara 9.1.2014, 1:35   #275
dsl94
Član
 
Član od: 3.8.2010.
Lokacija: Nis
Poruke: 107
Zahvalnice: 30
Zahvaljeno 8 puta na 7 poruka
Slanje poruke preko Skypea korisniku dsl94
Određen forumom Re: How to... C++

Cekaj ako sam dobro skapirao za niz stringova:
To je u stvari matrica???
dsl94 je offline   Odgovor sa citatom ove poruke
Stara 9.1.2014, 7:59   #276
PeTkO
Banned
 
Član od: 6.11.2005.
Lokacija: Iza tebe
Poruke: 2.242
Zahvalnice: 419
Zahvaljeno 298 puta na 192 poruka
Slanje poruke preko Skypea korisniku PeTkO
Određen forumom Re: How to... C++

Ne, string je jednodimenzionalni niz, a koliko sam video, tebi treba niz stringova, pa samim tim ti treba dvodimenzionalni niz
PeTkO je offline   Odgovor sa citatom ove poruke
Stara 9.1.2014, 11:46   #277
Teva
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
Određen forumom 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.
Teva je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku Teva na korisnoj poruci:
dsl94 (9.1.2014)
Stara 9.1.2014, 12:38   #278
dsl94
Član
 
Član od: 3.8.2010.
Lokacija: Nis
Poruke: 107
Zahvalnice: 30
Zahvaljeno 8 puta na 7 poruka
Slanje poruke preko Skypea korisniku dsl94
Određen forumom 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?
dsl94 je offline   Odgovor sa citatom ove poruke
Stara 9.1.2014, 13:13   #279
Teva
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
Određen forumom 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 */
}
Teva je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku Teva na korisnoj poruci:
dsl94 (9.1.2014)
Stara 9.1.2014, 13:24   #280
dsl94
Član
 
Član od: 3.8.2010.
Lokacija: Nis
Poruke: 107
Zahvalnice: 30
Zahvaljeno 8 puta na 7 poruka
Slanje poruke preko Skypea korisniku dsl94
Određen forumom Re: How to... C++

Nisam odmah shavtio ono sto je gore napisao, ali sad mi je jasno, hvala svima
dsl94 je offline   Odgovor sa citatom ove poruke
Odgovor

Bookmarks sajtovi

Tagovi
c++, how to, pomoc, programiranje


Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno



Sva vremena su po Griniču +2 h. Sada je 19:23.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2024, vBulletin Solutions, Inc.
Hosted by Beograd.com