C++ , rezolvare rog doar cu if,else, while. Sunt incepator. Rog AJUTOR!
Cerință
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
1441 4
Date de ieșire
11
Răspunsuri la întrebare
#include <iostream>
using namespace std;
string formatare(string s) {
if (s.empty())
return "-1";
size_t i = 0;
while (i < s.size()) {
if (s[i] != '0')
return s.substr(i);
++i;
}
return "0";
}
string elimina(string s, char c) {
string a;
size_t i = 0;
while (i < s.size()) {
if (s[i] != c)
a += s[i];
++i;
}
return formatare(a);
}
int main() {
string s;
char c;
cin >> s >> c;
cout << elimina(s, c);
}
// Simplificat, fara C++ avansat, mai degraba C cu <iostream>
#include <iostream>
using namespace std;
const char* formatare(char* s) {
if (!s[0])
return "-1";
size_t i = 0;
while (s[i]) {
if (s[i] != '0')
return s + i;
++i;
}
return "0";
}
const char* elimina(char* s, char c) {
char a[9] = "";
size_t i = 0, j = 0;
while (s[i]) {
if (s[i] != c)
a[j++] = s[i];
++i;
}
i = 0;
while (a[i]) {
s[i] = a[i];
++i;
}
s[i] = '\0';
return formatare(s);
}
int main() {
char s[9] = "", c;
cin >> s >> c;
cout << elimina(s, c);
}
using namespace std;
int main() {
int N, C, a = 0, nrcif = 0, nrc = 0, copie, cif, z = 1;
cin >> N >> C;
copie = N;
if (N >= 0 && N < 1000000) {
if (N == 0) {
cout << 0;
}
else {
while (copie) {
++nrcif;
if (copie % 10 == C) {
++nrc;
}
copie /= 10;
}
if (nrcif == nrc) cout << -1;
else {
while (N) {
cif = N % 10;
if (cif != C) {
a = z * cif + a;
z *= 10;
}
N /= 10;
}cout << a;
}
}
return 0;
}
}