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.

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