Forum Sveta kompjutera

Nazad   Forum Sveta kompjutera > Test Run > Programiranje

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

Alatke vezane za temu
Vrste prikaza

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 5:47.


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