👤

va roggg Să se scrie un subprogram C++ prin care se dublează prima cifră a unui număr natural n transmis ca parametru. Funcția întoarce rezultatul prin intermediul aceluiași parametru n.

Răspuns :

Am niste nelamuriri in legătură cu cerința asa ca voi face două subprograme pe care le voi explica mai jos.

int subp1 (int &n)
{
int aux;
aux=n;
while ( aux>9)
{
aux=aux/10;
}
n=aux*2;
return n;
}

subprogramul scris mai sus, ia un numar intreg n. Declarăm un aux căruia ii atribuim valoarea lui n. Îl "ciopârțim" pe aux până când ii aflăm prima cifră si apoi atribuim lui n valoarea cifrei respective inmultita cu 2

int subp2 (int &n)
{
int aux, cnt=0, a [23];
aux=n;
while ( aux!=0)
{
cnt=cnt++;
a [cnt]= aux%10;
aux=aux/10;
}
aux=a[cnt]*2;
for (int i=cnt-1; i>0; i--)
{
aux=aux*10 +a [i];
}
n=aux;
return n;
}

subp2, ia numărul n si ii alocă valoarea lui aux. Aux-ul este descompus in cifre, iar acestea sunt puse intr-un tablou unidimensional a, iar cnt reprezintă numărul de cifre. Reconstruim aux-ul, dublandu-i prima cifră si apoi atribuim lui n valoarea lui aux.



Nu sunt un as al programării si sunt sigur ca există si variante mai eficiente ale acestor subprograme, dar sper ca ti-am fost de ajutor.