Számjegyek összege c++ban? Szám számjegyekre való bontása?
Hát ha már Stringed van, ott vannak a számjegyek: a String egyes karakterei, csak megindexeled őket és csók. Egyesével visszaalakítod számra egy összegzés cikluson belül és kész is vagy.
Ugyanakkor szerintem nem String-re alakításra gondoltak, mikor feladták a házit, mert pofonegyszerű, és NULLA munkád van benne. Osztogass inkább 10-el, ezt várják el.
Annak idején kb egy hello world ig tartott a kitartásom c++ ban, úgyhogy rá kellett keresnem(több, mint 5 másodpercet elvett az életemből a folyamat)
Ezt átalakítod intté és kész vagy(erre már nem keresek rá helyetted).
#include<stdio.h>
int main (void)
{
int szam = 12345;
int osszeg = 0;
int maradek = 0;
while (szam > 0)
{
maradek = 0;
maradek = szam % 10;
osszeg = osszeg + maradek;
szam = szam / 10;
printf("maradek:%d osszeg:%d szam:%d \n", maradek, osszeg, szam);
}
return 0;
}
}
@Kérdező, 22:53
#include <iostream>
using namespace std;
int main()
{
char szoveg[256]="";
unsigned int i;
cout<<"Első tíz számjegy kiírása\n\nKérek egy hosszú számot: \n";cin>>szoveg;
for(i=0;i<10;i++) cout<<szoveg[i]<<"\n";
cout<<"Kész."<<"\n";
return 0;
}
Legyen egy karakter tömböd, és legyen egy összegző egészed.
char szam[64];
int osszeg = 0;
Bekérsz egy számot stdin-ről, a szam karakter tömbbe. (most tekintsünk el a rossz inputtól). Ezt C++ így teheted meg:
std::cin.getline(szam, 64);
A szöveg végét mindig '\0' karakter jelzi, de azért legyünk óvatosak; ne menjünk 63 fölé.
Tehát a ciklusod így fest:
for (int i = 0; (i < 64) && szam[i]; i++)
Így minden karaktert meg tudsz vizsgálni egyenként. Most jön a trükk: A számok az ASCII táblában a 48. indextől kezdődnek, így ki is tudjuk számolni az értéküket. A for ciklusodban tehát ennek kell lennie:
osszeg += szam[i] - 48;
Ennyi,meg is oldottuk a feladatot 5 sorban.
Én egyetlen keresést szántam rá a következő kulcsszóval: "c++ sum digits string".
A következő link volt az első találat:
Kb 10 mp-et vett el az életemből.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!