Informatică, întrebare adresată de marian5757, 8 ani în urmă

Subprogramul identice are un singur parametru, n, prin care primește un număr natural.
Subprogramul returnează valoarea 1, dacă numărul n are toate cifrele egale, sau valoarea 0 în caz contrar.
Scrieți definiția completă a subprogramului.

Nu inteleg unde am gresit. Ma poate ajuta cineva, va rog?

#include
using namespace std;
int main ( )
{
int n, c, Ok;
cout<<"n=";
cin>>n;
Ok=1;
c=n%10;
n=n/10;
while (n!=0)
if (c!=n%10)
Ok=0;
else
n=n/10;
if (Ok==1)
cout<<1;
else
cout<<0;
return 0;
}

//am plecat de la presupunerea ca n este format din cifre identice (Ok=1)

Răspunsuri la întrebare

Răspuns de Sergetec
1

Salut!

Ai codul sursa mai jos

#include <iostream>

using namespace std;

int identice (int n)

{

 int ok = 1; //asumam ca toate cifrele sunt egale

 int c = n % 10;

 n /= 10;

 while (n  && ok) //while (n != 0 && ok != 0)

 {

   if (c != n % 10)

   {

     ok = 0;

   }

   n /= 10;

   c = n % 10;

 }

 return ok;

}

int main()

{

 int n;

 cin >> n;

 cout << identice(n);

 return 0;

}

  • Problema era cu while ul tau, care nu actualiza n ul daca cifrele nu erau egale, de asemenea avem nevoie si de o conditie de oprire a while ului, nu doar daca n ajunge 0 ci si daca am gasit o cifra diferita de restul, altfel se ajungea la ceva infinit pe cazuri cu rezultat 0.

Side note: Problema ti a cerut doar subprogramul definit, nu tot codul ;)


marian5757: multumesc mult!!
Alte întrebări interesante