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

Un număr natural se numeşte ABC dacă are exact a cifre, prima cifră este b şi ultima cifră este c.

Cerinţă
Fiind date a,b şi c, să se verifice dacă numărul x este ABC. Dacă condiţia este respectată afişaţi "DA", altfel afişaţi "NU".

Date de intrare
Se vor citi de la tastatură numerele a, b, c şi x, având semnificaţiile din enunţ.

Date de ieşire
Se va afişa pe ecran doar "DA"(dacă numărul x este ABC) sau "NU"(numărul x nu este ABC).

Răspunsuri la întrebare

Răspuns de uleiaalex
2
Am rezolvat problema. Data viitoare incercati singuri sa le faceti. E usoara dar multisor de scris.

#include <iostream>
using namespace std;
int nrCifre(int n)
{
 int c = 0;
 while (n>0)
 {
  c++;
  n/=10;
 }
 return c;
}
int primaCifra(int n)
{
 int pc = 0;
 while (n>0)
 {
  if (n/10 > 0 && n/10<10)
  {
      n/=10;
      pc = n;
  }
  else
      n /=10;
 }
 return pc;
}
int ultimaCifra(int n)
{
 return n%10;
}
int main()
{
 int n = 0;
 cin>>n;
 int a=0;
 int b=0;
 int c=0;
 cin>>a;
 cin>>b;
 cin>>c;

 bool ok = true;
 if (nrCifre(n) == a)
 {
     cout<<"A";
     if (primaCifra(n) == b)
     {
         cout<<"B";
         if(ultimaCifra(n) != c)
             ok=false;
         else
             cout<<"C";
     }
     else
         ok=false;
 }
 else
  ok = false;

  cout<<endl;
  if (ok)
       cout<<"DA";
  else
       cout<<"NU";
  return 0;
}
Răspuns de rossetta
6
#include <iostream>
using namespace std;

int main() {
  int a, b, c, x, nr = 0, pc, uc;
  cin >> a >> b >> c >> x;
  while(x > 0) {
      if(nr == 0)
        uc = x % 10;
      nr++;
   pc = x % 10;
      x = x / 10;
  }
  if(nr == a && pc == b && uc == c)
    cout << "DA";
  else
    cout << "NU";
    return 0;
}

Mst10: Buna, poate sa-mi explice cineva codul asta, ca la prosti? Ce resprezinta variabile pc, uc?
Mst10: ok, m-am lamurit cu cele doua variabile, ce nu reusesc sa inteleg este bucla while.
rossetta: am scurtat putin codul
rossetta: #include
using namespace std;

int main() {
int a, b, c, x, nr = 0, pc, uc;
cin >> a >> b >> c >> x;
uc = x % 10;
while(x > 0) {
nr++;
pc = x % 10;
x = x / 10;
}
if(nr == a && pc == b && uc == c)
cout << "DA";
else
cout << "NU";
return 0;
}
rossetta: Cred ca aceasta varianta este mai usor de inteles :
rossetta: #include
using namespace std;

int main() {
int a, b, c, x, nr = 0, pc, uc;
cin >> a >> b >> c >> x;
uc = x % 10;
while(x > 9) {
nr++;
x = x / 10;
}
nr++;
pc = x;
if(nr == a && pc == b && uc == c)
cout << "DA";
else
cout << "NU";
return 0;
}
rossetta: Ultima cifra este x % 10. Explicatie while : cat timp x mai are cel putin o cifra ( x > 9) , numaram cifrele si eliminam ultima cifra
rossetta: Cand iesim din while x ramane cu o singura cifra pe care nu am numarat-o in interiorul while (nr++).
Mst10: Multumesc frumos. Acum am inteles care era treaba cu acele x= x/10 uc = x % 10
rossetta: Cu placere
Alte întrebări interesante