Potrebujem napísať program, v ktorom zadám číslo m a n, a výstup bude n-tá cifra z čísla m. Napr. m = 1358, n = 2, takže výstup bude 5
Vie mi niekto prosim poradiť ako na to?Diky
Měl by sis ověřit správnost zadání aby program správně vyřešil třeba i 10 znak z 568. U práce s řetězcem je to nutnost abys nezasahoval do paměti kam nemáš(nápověda: číslo, které udává kolikátý znak chceš, nesmí být větší než délka řetězce) Navíc zpracování jako řetězec umožňuje zpracovat i des. čísla. Pokud to má být C++, můžeš si usnadnit práci - použít std::string
hu
#2 KIIV
Ano presne ma napadlo, že to ma ísť cez delenie zo zvyškom a celočíselné delenie, len nevie fakt ako to mám aplikovať: môj postup zatial je:
#include <iostream>
using namespace std;
int main()
{
int n,m;
cout << "Zadajte cislo m: " << endl;
cin >> m;
cout << "Zadajte cislo n" << endl;
cin >>n;
or(int i=0;i<n;++i)
m/=10;
cout << "n-ta cifra z cisla m: " << m%10 << endl;
return 0;
}
no ale ked zadam ako m 1358 a n 2, tak mi to vyhodi miest 5 cislo 3, tak neviem kde je chyba.
Dajme tomu ze mame cislo 1234,najskor potrebujeme cifru.
1234%10 = 4 -1.cifra
1234/10 = 123
-----------------
123%10=3 -2.cifra
123/10=12
.....atd ..ty v podstate len delis tym padom neziskavas cifru ,ale nove cislo odstranenim poslednej cifry :)
Pokud od konce, tak cyklus musí provést n-1 iterací a pak modulo 10
for(int i=1;i<n;++i) m/=10;
cout << "n-ta cifra z cisla m: " << m%10 << endl;
hu
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku