Pereiti prie turinio

C++ visų nulių skaičiuje pašalinimas


Rekomenduojami pranešimai

Sveiki, yra sąlyga :

 

Pradinis duomuo – natūralusis skaičius. Parašykite funkciją, kurios rezultatas būtų: skaičius, gautas pašalinus iš pradinio duomens visus skaitmenis, lygius nuliu;

 

Mano parašyta programa :

 

// 3uzd.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
int t, a, y;
int x = 0;
int y = 0;

       cin >> x;

t=x;
while (t > 0){
a = x % 10;
t = t/10;

if(a !=0)
y = y*10+a;	
}

t=y;
x=0;
while (t > 0){
a = y % 10;
x = x*10+a;
}

cout << x;
system("pause");
return 0;
}

 

 

Sąlyga kaip ir aiški - reikia iš irašyto klaviatūra skaičiaus išmesti visus nulius ir palikti vestą skaičių be tų nulių. Tačiau man neveikia ji, meta klaidą. Kas galėtų būti?

Redagavo MrDBVids
Nuoroda į pranešimą
Dalintis kituose puslapiuose

dariau univere patikrinimą ar įvedė tik skaičius o ne kažkokią nesamonę su raidėmis. Tai aš sukau ciklą per kiekvieną stringo elementą ir tikrina ar tas elementa yra skaičius. Tada per string stream paverčiau į int.

 

Tai tau reiks paimti stringą ir prasukti ciklą per kiekvieną string elementą ir patikrinti ar jis lygus 0. Jei nuliui tai pašlini iš stringo ir padarai naują stringą.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Paprastesnis būdas:

 

Convertink int'ą į string'ą

Pvz.

int Number = 123;       // number to be converted to a string

string Result;          // string which will contain the result

ostringstream convert;   // stream used for the conversion

convert << Number;      // insert the textual representation of 'Number' in the characters in the stream

Result = convert.str(); // set 'Result' to the contents of the stream

 

tada tiesiog ciklas

for(int i = 0; i< stringas.size();i++){
if(stringas[i] == "0")
{
stringas.erase(i);
}
}

 

Tūrėtų veikti

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Paprastesnis būdas:

 

Convertink int'ą į string'ą

Pvz.

int Number = 123;       // number to be converted to a string

string Result;          // string which will contain the result

ostringstream convert;   // stream used for the conversion

convert << Number;      // insert the textual representation of 'Number' in the characters in the stream

Result = convert.str(); // set 'Result' to the contents of the stream

 

tada tiesiog ciklas

for(int i = 0; i< stringas.size();i++){
if(stringas[i] == "0")
{
stringas.erase(i);
}
}

 

Tūrėtų veikti

 

sstream biblioteka jauciu reikes includint dar keitimui.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Dėkui labai visiems už pagalbą :). Parašiau programą kiek kitokiu būdu nei sakėte, bet tikrai dėkui, pavyko ir Tavo(Gruzlys) būdas :). Mano parašytos programos būdas(jei įdomu):

 

#include "stdafx.h"
#include <iostream>

using namespace std;

int nuliu_nuemimas(int a);

int _tmain(int argc, _TCHAR* argv[])
{
int a;

cin >> a;
cout<<nuliu_nuemimas(a)<<endl;

system("pause");
return 0;
}

int nuliu_nuemimas(int a)
{
int modas=0,sk=0;
float kartai=1;

while( a>0 ){
modas = a % 10;
if ( modas != 0 ){
sk = modas * kartai+sk;
kartai = kartai * 10;
}
a = a / 10;
}

return sk;
}

 

 

---------------------------------------------------------------

 

Bet žiūrėkit, iškilo problema su kitu uždaviniu(prisipažinsiu, prie šitos programos nedaug pagalvojau, bet kažkaip idėjų per tą laiko tarpą ir nekilo). Sąlyga: Sudarykite programą, kuri pinigų sumą, išreikštą centais, išspausdintų litais ir centais. Pavyzdžiui, jei duota 5005, tai reikia spausdinti: 50 litų 5 centai. Jei duota 100, tai reikia spausdinti 1 litas.

 

Mano parašyta programa:

 

#include "stdafx.h"
#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
int ping=0;
cout << "Iveskite centus"<<endl;
cin >> ping;
int centai = ping % 100;
int litai = ping / 100;	
cout << litai << " litu " << centai << " centai" << endl;

system("pause");
return 0;
}

 

Programa gerai skaičiuoja pavertimus į centus ir litus, tačiau problema yra tame, kad pvz. užrašius tuos 5005 išveda į ekraną 50 litu 5 centai, tačiau įrašius 100, išveda į ekraną 1 litų. Kaip parašyti šitą programa, kad žodžių galūnės reaguotų į tai, kokie skaičiai yra įvedami/išvedami į ekraną? Tam galbūt naudoti "switch"? O gal naudoti specialias C++ simbolių formatavimo komandas? Dėkui už pagalbą :)

Redagavo MrDBVids
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...