Informatică, întrebare adresată de gabrielmihai73, 9 ani în urmă

Subprogramul Cifre ,are un singur parametru n. Subprogramul returneaza numarul cifrelor care apar o singura data in scrierea lui n . Exemplu: daca n=9272017 , subprogramul returneaza valoarea 3 . Am nevoie de ajutor ...am tot cautat cum sa rezolv si nu reusesc . Multumesc anticipat !

Răspunsuri la întrebare

Răspuns de RandomDude
10
Poti folosi un vector de frecventa , o cautare hardcore sau chiar mai multe solutii. 
Eu sutin folosirea unui vector de frecventa, cel mai util din punct de vedere al cautarii multiplicitatii. Un vector de frecventa este un vector ce pastreaza pe pozitia i de cate ori apare valoarea i. De exemplu pentru 2213 avem vectorul de frecventa f : 1 2 1 , unde 1 apare o singura data, 2 apare de 2 ori iar 3 o singura data.

int Cifre (int n ) {
  int frecventa[100] , i , cate_numere = 0, contor = 0;
     if (n == 0 )
   return 0;

     while (n != 0) {
        i = n%10;
        contor ++;
        frecventa[i] ++ ;
       n = n/10;
       }
    for ( i = 1; i<= contor ; i++)
       if ( frecventa[i] == 1 )
        cate_numere ++;
 return cate_numere;  
   }
Alte întrebări interesante