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

Cerință ( Nu imi iese partea din restrictii care spune: "Dacă în urma eliminării tuturor aparițiilor cifrei C nu mai rămâne nicio cifră, se va afișa -1") Ajutor, va rog! -- C++, doar cu if, else si while

Andrei, jucător amator de fotbal, are acasă o colecție de mingi. Fiecărei mingi i-a asociat o cifră. Într-o zi a așezat toate mingile într-o linie și și-a dat seama că cifrele de pe mingi formau un număr natural. Și-a mai dat seama și că toate mingile ce aveau scrise cifra C pe ele aveau o nuanță stridentă, așa că a hotărât să le elimine din șir. Care este noul număr format după eliminarea tuturor mingilor cărora le corespunde cifra C? Acum rămâne în sarcina ta să îți dai seama.


Date de intrare

Se citesc de pe aceași linie numărul N și cifra C, reprezentând numărul format cu cifrele mingilor, respectiv cifra ce apare pe mingile ce trebuie eliminate.


Date de ieșire

Se afișează numărul obținut în urma efectuării eliminărilor.


Restricții

N are cel puțin 1 cifră și maxim 8.

Dacă în urma eliminării tuturor aparițiilor cifrei C nu mai rămâne nicio cifră, se va afișa -1, iar dacă vor rămâne numai cifre nule se va afișa 0.

Dacă, în urma eliminărilor, noul număr începe cu unul sau mai mulți de 0 și există alte cifre nenule în noul număr, se vor elimina și acei 0 de la început.

Exemplu

Date de intrare Date de ieșire

1441 4. 11.

Răspunsuri la întrebare

Răspuns de simulink
0

Răspuns:

#include <iostream>

using namespace std;

int main()

{

  int n,c,ok=1,ogl=0;

  cin>>n>>c;

 while (n!=0)

 {

     if (n%10!=c) ogl=ogl*10+n%10;

     if (n%10!=c) ok=0;

 n=n/10;

 }

 if (ogl==0 && ok==0) cout<<"0";

 if (ogl==0 &&ok==1) cout<<"-1";

 if (ogl!=0) {

   while(ogl!=0)

 {

     n=n*10+ogl%10;

     ogl=ogl/10;

 }

 cout<<n;

 }

   return 0;

}

Explicație:


drcompress: 0099 / 9 = 0
drcompress: 0099 / 0 = 99
drcompress: 1441 / 4 = 11
drcompress: 0099223344 / 9 = 223344
drcompress: Codul dupa ultima modificare functioneaza ok doar ca doar o singura varianta de mai sus nu functioneaza
drcompress: 999 / 9 = 0 (Ar trebui sa afiseze -1)
simulink: ogl tb initializat cu 1. Am zis ca am gandit sa incardrez numarul intre doua cifre de 1. Vezi comentariile de mai sus. Ultima varianta mergea f ok pe toate numerele. Inafara de 007 care este 7 de fapt. Vezi, nici la 00992233 dupa eliminarea lui 9 nu te-ai asteptat sa iti scrie 002233. E absurda pretentia pt ca daca eu scriu 007 de la tastatura el il citeste 7. Daca introduc valoarea 7000 si sterg pe 7 imi afiseaza 0
simulink: ultima varianta de rezolvare, trimisa de mine in comentarii este ok. La ultimul cout era n%nr. (la ultimul else...) Nu stiu de ce nu au scris.
drcompress: Multumesc frumos. Scuza-ma insa desi pare corect ce spui astea sunt cerintele problemei.
drcompress: Poti pune te rog acum codul complet care sa mearga pe toate cerintele problemei?
Alte întrebări interesante