Cerința Valentin, elev în clasa a V-a, e fascinat de cifre. Îi place să mute cifrele unui număr de pe o poziție pe alta. Astfel, pentru un număr N și o cifră k, mută toate cifrele egale cu k la început, după care așază celelalte cifre în ordinea în care apăreau în N. Desigur, există și situații în care numărul cifrelor lui N se micșorează sau situații în care numărul N nu se modifică. De exemplu, dacă numărul N este 134112 și cifra k este 1, după mutarea cifrelor se obține 111342. Pornind de la numărul N și cifra k știți ce număr obține Valentin? Scrieţi un program care să citească numărul natural N şi cifra k și care să determine: a) de câte ori apare cifra k în numărul N; (30% din punctaj) b) numărul obținut după modificarea numărului N; (70% din punctaj) Date de intrare Pe prima linie a fișierului cifre006.in se află numărul natural N și cifra k separate printr-un spațiu. Date de ieșire Fișierul de ieșire cifre006.out va conține două valori, fiecare pe câte un rând. Prima valoare este numărul de cifre k existente în N, iar a doua valoare este numărul obținut din N după modificare.
boiustef:
eu am băgat mai multă logică în codul de mai jos, dar cu mai puţină se poate realiza cu un vector a cifrelor...
Răspunsuri la întrebare
Răspuns de
0
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
long long int N, copie, k, rep=0, cif, i;
long long int m=0, ncif=0, z=1;
ifstream f("cifre006.in");
ofstream g("cifre006.out");
f >> N >> k;
copie=N;
while (copie)
{
cif=copie%10; if (cif==k) { ++rep; m=m*10+cif;}
copie=copie/10; ++ncif;
}
for (cif=1; cif<ncif; ++cif)
z=z*10;
g << rep << "\n";
if (rep==0) m=N;
else {
copie=N; i=0;
while (i<ncif)
{
++i;
cif=copie/z;
if (cif != k)
{ if (cif != 0) m=m*10+cif;
else m*=10; }
copie=copie%z; z=z/10;
}}
g << m << "\n";
f.close(); g.close();
return 0;
}
Detalii
Problema cifre006 Operații I/O cifre006.in/cifre006.out
Limita timp 0.1 secunde Limita memorie Total: 64 MB / Stivă 8 MB
Id soluție #9988924 Utilizator Boiu Stefan (stefan52)
Fișier cifre006.cpp Dimensiune 773 B
Data încărcării 08 Iulie 2018, 12:05 Scor / rezultat 100 puncte
Ca sa stii, in momentul cand copiezi un cod de pe brainly si acesta are "spatii" la inceput, cand copiezi programu' o sa-ti arate ceva genu' ( https://prnt.sc/n6n3kr ) Eroarea ta sunt liniile alea rosii.. Copiaza codu' in word sau in ceva si dupa pune l in codeblocks sau in ce ai testat tu programu'. Sau pur si simplu sterge fiecare spatiu de la inceput..
Alte întrebări interesante
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă