Jump to content
Che

[C++]Ajutor parcurgere matrice pentru gasirea grupelor ce se repeta ?

Recommended Posts

Asta e ce am incercat pana acuma, mai era o varianta cu si mai multe bucle for pe care am sters-o ca tot nici aia nu mergea si am rescris-o acum sub forma asta, care nici asta nu merge:

#include <cstdlib>

#include <iostream>

#include <stdio.h>

#include <fstream>

using namespace std;

ofstream out("output.txt");

int var[10][6];

int main(void)

{

//sunt ordonate crescator de-a lungul liniilor NU al coloanelor:

var[1][1] = 5; var[1][2] = 13; var[1][3] = 25; var[1][4] = 26; var[1][5] = 37; var[1][6] = 38;

var[2][1] = 5; var[2][2] = 11; var[2][3] = 20; var[2][4] = 21; var[2][5] = 32; var[2][6] = 38;

var[3][1] = 10; var[3][2] = 11; var[3][3] = 27; var[3][4] = 29; var[3][5] = 32; var[3][6] = 38;

var[4][1] = 3; var[4][2] = 10; var[4][3] = 31; var[4][4] = 36; var[4][5] = 38; var[4][6] = 40;

var[5][1] = 11; var[5][2] = 15; var[5][3] = 21; var[5][4] = 22; var[5][5] = 24; var[5][6] = 32;

var[6][1] = 5; var[6][2] = 7; var[6][3] = 8; var[6][4] = 22; var[6][5] = 24; var[6][6] = 32;

var[7][1] = 8; var[7][2] = 10; var[7][3] = 11; var[7][4] = 31; var[7][5] = 37; var[7][6] = 38;

var[8][1] = 1; var[8][2] = 6; var[8][3] = 9; var[8][4] = 12; var[8][5] = 22; var[8][6] = 25;

var[9][1] = 7; var[9][2] = 10; var[9][3] = 17; var[9][4] = 26; var[9][5] = 27; var[9][6] = 35;

int g = 1;

for (int colA = 1; colA <= 6; colA++)

{

for (int row = 1; row <= 9; row++)

{

if (var[row][colA]>var[row + 1][g])

{

g++;

row--;

continue;

}

if (var[row][colA]<var[row + 1][g])

{

continue;

}

}

}

out.close();

}

Algoritmul pe care vreau sa-l construiesc e relativ simplu de explicat insa nu reusesc sa-l transpun in cod, l-am scris si pe hartie si am luat pas cu pas si tot nu reusesc sa-l construiesc.

Algoritmul e in felul urmator:

In cele 9 grupa a cate 6 numere sunt grupe de cate 2,3,4,5 si maxim 6 numere care se repeta.

Eu vreau sa aflu care sunt acele grupe de cate 2,3,4,5,6 numere care se repeta si care ies de 2 ori sau mai mult.

Pasi:

1. Se ia primul numar, in exemplul de mai sus ar fi 5 si se compara cu primul numar de pe al doilea rand care este tot 5. => avem situatia in care cele doua numere sunt egale.

=>Acum trebuie sa luam numarul al doilea de pe acelasi rand cu 5 si sa vedem daca il gasim in randul in care cele doua numere sunt egale (practic 5 se repeta de 2 ori pana acum si trebuie sa vedem care se mai repeta impreuna cu 5). Daca cel de-al doilea numar, in cazul nostru 13 nu se gaseste pe al doilea rand, se ia urmatorul numar, si anume 25 si tot asa. Pentru rapiditate am vrut sa fac cu break si cu continue in cadrul acestor foruri ca daca de exemplu se ia 13 si primul sau al doilea numar de pe al doilea rand e 20, nu mai are rost sa compari cu restul numerelor ramse ci dai break si treci mai departe.

2. Situatii posibile:

//primul numar al randului analizat e mai mare decat cel cautat,

//caz in care va trebui sa trecem la randul urmatoar:

Nu are rost sa cauti numarul 5 intr-un rand care incepe cu 13 ca prim numar, de exemplu, din moment ce randurile sunt ordonate crescator.

//primul numar al randului analizat e mai mic decat cel cautat,

//caz in care va trebui sa trecem la numarul urmator DE PE ACELASI RAND, PANA INTANLIM UN NUMAR MAI MARE SAU EGAL, CAZ IN CARE FACEM CA IN SITUATIILE CELELALTE DESCRISE:

//primul numar al randului analizat este egal cu cel cautat,

//caz in care va trebui sa trecem la numarul urmator DE PE PRIMUL RAND pentru a-l cauta pe randul in care cele doua nr. sunt egale:

Nu ma pricep. De explicat pare simplu, dar de facut nu reusesc.

Practic nu trebuie decat sa caute grupele de numere care se repeta de doua sau mai multe ori si sunt formate din 2,3,4,5 si respectiv 6 numere.

Ma poate ajuta cineva cu chestia asta ?

Multumesc mult !

Link to comment
Share on other sites

  • Active Members

Man, fa si tu in felul urmator:

- pune valorile intr-un fisier si fa-le sa fie random ( adica introduci cifre la misto ).

- fa o functie in care sa iti sortezi elementele asa cum vrei (pe linii sau pe coloane,cate 6 sau cate 2000). Asta ca sa nu stai sa modifici ca nebunu' 100 de valori

Rezulta de aici o matrice, da ?( 6 coloane si 9 linii )

Parcurgi fiecare rand si pui conditiile descrise de tine mai sus.

Sunt la munca acum si nu am timp sa iti scriu codu'. O sa revin diseara cu update.

Link to comment
Share on other sites

Sincer, cred ca cea ce vrei tu sa obtii este foarte simplu. Doar ca la explicat ma cam incurci. Adica, incepi cu o propozitie care are sens. Pe urma incepi cu a doua propozite care ma incurca total. Incerci sa explici prea mult si te incurci singur. Poti sa fii mai specific? Si prin specific nu ma refer la a scrie mai mult. Scurt si la obiect. Gen:

  • Am 9 randuri, fiecare a cate 6 coloane de numere (specifica daca: randurile sau coloanele sunt fixe la numar sau daca pot varia pe viitor).
  • Doresc sa aflu ce numere se repeta de pana la maxim 6 ori (logic, repetitia incepe de la 2 daca nu specifici si un numar minim).
  • ...

Acum, ce nu am inteles eu: Unde se repeta? Numerele de pe primul rand cu numarul aflat in aceasi coloana pe randul urmator, si tot asa? Pentru ca asta nu inteleg.

Ex:

  1. Compar un rand cu un alt rand. Acel rand fiind cel de sub el (sau deasupra).
  2. Compar un rand cu toate randurile de sub el.
  3. Compar un rand cu toate randurile de sub el inclusiv cele de deasupra.
  4. ...

Deci pur si simplu nu inteleg ce vrei mai exact.

Edited by S.L.C
Link to comment
Share on other sites

Sincer, cred ca cea ce vrei tu sa obtii este foarte simplu. Doar ca la explicat ma cam incurci. Adica, incepi cu o propozitie care are sens. Pe urma incepi cu a doua propozite care ma incurca total. Incerci sa explici prea mult si te incurci singur. Poti sa fii mai specific? Si prin specific nu ma refer la a scrie mai mult. Scurt si la obiect. Gen:

  • Am 9 randuri, fiecare a cate 6 coloane de numere (specifica daca: randurile sau coloanele sunt fixe la numar sau daca pot varia pe viitor).
  • Doresc sa aflu ce numere se repeta de pana la maxim 6 ori (logic, repetitia incepe de la 2 daca nu specifici si un numar minim).
  • ...

Acum, ce nu am inteles eu: Unde se repeta? Numerele de pe primul rand cu numarul aflat in aceasi coloana pe randul urmator, si tot asa? Pentru ca asta nu inteleg.

Ex:

  1. Compar un rand cu un alt rand. Acel rand fiind cel de sub el (sau deasupra).
  2. Compar un rand cu toate randurile de sub el.
  3. Compar un rand cu toate randurile de sub el inclusiv cele de deasupra.
  4. ...

Deci pur si simplu nu inteleg ce vrei mai exact.

Acele numere sunt variantele extrase la loto.

Vreau ca programul sa-mi afiseze de cate ori se repeta fiecare grupa de cate 2,3,4,5 si 6 numere (practic se repeta o varianta intreaga atunci cand se repeta o grupa de 6 numere).

Tot ce am zis mai sus si am incercat sa explic este cum am gandit eu algoritmul, practic eu nu generez toate variantele posibile de cate 2,3,4,5 si 6 numere si sa stau sa le iau pe fiecare in parte sa vad de cate ori iese ci incerc sa vad din variantele deja extrase care sunt cele care se repeta si de cate ori se repeta.

@MrGrj Crede-ma ca am stat ieri si mi-am stors creierii toata ziua si tot nu am reusit.

Multumesc !

Link to comment
Share on other sites

@rukov

Expert Lotto

Face exact ceea ce vreau eu sa construiesc.

Nu ati putea sa-i faceti vreun crack, va rog, dar care sa mearga lifetime ca asta e pe perioade, si pierzi licenta daca se actualizeaza ? Sau sa faceti un tutorial despre cum sa-l crackuiesti ca sa putem si noi aplica metoda pe viitor cand se actualizeaza ?

Apropo, despre ce sistem de pus in practic vorbiti ? :D

Multumesc mult !

Link to comment
Share on other sites

@Che eu nu stiu C++,dar daca vrei iti pot face eu programul in pascal sau daca nu iti explic principiul si apoi tu sa il pui in practica,astept un pm.

Nu imi mai trebuie, momentan, ca simt ca i-am dat de capat. Chiar acum sunt in miezul programarii dar am mai luat o mica pauza sa vad ce mai e pe aici. daca nu iese, te anunt.

Multumesc de ajutor !

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...