ematematikas
Kategorijos +Nauja tema Prisijungti        

Skaitmens pašalinimas iš skaičiaus

Informatika Peržiūrų skaičius (193)

Labas vakaras, gal galit duot patarimą kaip atlikti tokį uždavinį ,nes kol kas ,kad ir kaip mąstau, mąstau neteisingai. Uždavinys skambėtų panašiai kaip ir temos pavadinimas, iš natūraliojo skaičiaus reikia pašalinti pasirinktą skaitmenį ,o jeigu tokio skaitmens nėra grąžintų pradinį skaičių. Pvz. mano skaičius 5243 aš pašalinu 3 skaitmenį ir iš to skaičiaus lieka 543. 

0

Ar moki parašyti programą išskaidančią skaičių skaitmenimis? T.y. jei gauni skaičių
761
Programa atspausdintų
7
6
1


O atvirkščiai? Jei turi tik skaitmenis
5
2
8

ar moki iš jo taip padaryti skaičių
528

Manau, kad tai turėtų būti vienas iš algoritmų kuriuos turėjo mokyti. Jei taip, tai tą algoritmą reikia minimaliai pakeisti - tiesiog kiekvienoje ciklo iteracijoje tikrinti ar dabartinis skaitmuo nėra pasirinktas ir jei yra, tai tiesiog nieko nedaryti toje iteracijoje.
Čia kažkiek buvo kalbama apie skaidymą skaitmenimis https://www.ematematikas.lt/forumas/c-vieno-skaiciaus-nezinant-kiek-jis-turi-skaitmenu-skaidymas-t11733.html

0

O jeigu aš nežinau kiek tas skaičius turi skaitmenų, ką tuomet daryti? Na pvz. turiu pastovų skaičių 1234 tai aš žinau ,kad galiu sužinoti kiek jis turi skaitmenų su ciklu while ir po to kiekvieną skaidyti:
x1 = x /1000;
x2 = x /100 % 10;
x3 = x /10 % 10;
x4 = x % 10;

Bet juk šitas mano pavyzdys galioja tik su keturženkliais skaičiais ,o jeigu aš nežinau koks tas skaičius bus, kaip tuomet skaidyti?

0

Jeigu kam nors ateityje reikės sprendimo, prašau -
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cmath>

using namespace std;

int ilgis(int sk);
int naujas_skaicius(int sk, int kuris);
int apsukti(int sk);

int main()
{
setlocale(LC_ALL, "Lithuanian");
//cout << ilgis(2);
cout <<naujas_skaicius(1234567, 3);
//cout << apsukti(236);

return 0;
}
int ilgis(int sk)
{
    int i=0;
    while(sk>0)
    {
        sk = sk / 10;
        i++;
    }
    return i;
}
int apsukti(int sk)
{
    int naujas=0;
    int ps, i=0;
    while(sk>0)
    {
        ps = sk % 10;
        naujas = naujas * 10 + ps;
        sk = sk / 10;
    }
    return naujas;
}
int naujas_skaicius(int sk, int kuris)
{
    int naujas=0;
    int ps, i=0;
    int ilg = ilgis(sk);
    //cout << ilg << endl;
    while(sk>0)
    {
        ps = sk % 10;
        i++;
        if(i!=ilg - kuris+1)
            naujas = naujas * 10 + ps;
        sk = sk / 10;
    }
    naujas = apsukti(naujas);
    return naujas;

}

Paskutinį kartą atnaujinta 2019-09-25

0

O ar neturėtų programa pašalinti konkretų nurodytą skaitmenį, o ne skaitmens indeksą? Pvz., jei pradinis skaičius yra 24627 ir reikia pašalinti skaitmenį 2, tai rezultatas turėtų būti 467? O ir šiaip šiuo atveju skaičiaus ilgio niekur nereikia.

Paskutinį kartą atnaujinta 2019-09-25

0

Norėdami rašyti žinutes privalote prisijungti!