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

Cerință
Se dă un număr natural N. Pentru a fi demn de afișat, a doua cifră trebuie interschimbată cu penultima.

Date de intrare
Se citește un singur număr natural, N.

Date de ieșire
Se afișează numărul N, după ce este demn de această operație.

Restricții
9 < N < 1.000.000.000
Exemplu
Date de intrare Date de ieșire
123456 153426


boiustef: dar daca nu e demn :)) ce se intampla?
jrulrr0w2a: nu stiu stiu :))
jrulrr0w2a: nu se afiseaza
jrulrr0w2a: Ma poti ajuta te rog ca am nevoie>
boiustef: ok
boiustef: if (nrcif < 4) cout << "nu e demn";
cu acest if am considerat ca numerele ce au mai putin de 4 cifre le-am considerat nedemne...
Daca este de alta parere, ca numarul 234 este demn, atunci scrii
if (nrcif < 3) cout << "nu e demn";

Răspunsuri la întrebare

Răspuns de boiustef
0

Răspuns:

#include <iostream>

using namespace std;

int main()

{

   int N, nou=0, i, cif, nrcif, v[10]={0};

   cin >> N;

   nrcif=0;

   while (N)

   {

       cif=N%10;

       ++nrcif;

       v[nrcif]=cif;

       N=N/10;

   }

   if (nrcif<4) cout << "nu e demn";

   else

   {

       cif=v[2];

       v[2]=v[nrcif-1];

       v[nrcif-1]=cif;

       for (i=nrcif; i>0; i--)

       {

           nou=nou*10+v[i];

       }

       cout << nou;

   }

   return 0;

}

Explicație:


cunostinta03: Ma ajuti si pe mine?
jrulrr0w2a: Nu poti sa imi faci doar cu while am uitat sa specific :(
jrulrr0w2a: si nu imi merge programul
jrulrr0w2a: si fara vectori doar while simplu
Răspuns de Isentall
1

Răspuns:

#include <stdio.h>

#include <stdlib.h>

int main() {

   int numar = 0;

   printf("Insereaza numarul: ");

   scanf("%d", &numar);

   int numarDeCifre = 0;

   int copieNumar = numar;

   while(copieNumar) {

       numarDeCifre++;

       copieNumar =  copieNumar / 10;

   }

   int cifre[numarDeCifre - 1];

   int cifra = 0;

   for(int i = numarDeCifre - 1; numar; i--) {

       cifra = numar % 10;

       cifre[i] = cifra;

       numar = numar / 10;

   }

   int temp;

   int numarModificat = 0;

   temp = cifre[1];

   cifre[1] = cifre[numarDeCifre - 2];

   cifre[numarDeCifre - 2] = temp;

   for(int i = 0; i < numarDeCifre; i++) {

       numarModificat = numarModificat * 10 + cifre[i];

   }

   printf("Numarul modificat este: %d", numarModificat);

   return EXIT_SUCCESS;

}

Explicație:

Salut, inserezi un numar de la consola, extragi cifrele pe rand intr-un vector, inversezi numarul de la indexul 1 cu cel corespunzator penultimei cifre iar in final construiesti numarul inversand procesul folosit pt a-l descompune.

Alte întrebări interesante