Odpowiedź :
Odpowiedź:
Bzdury wypisuje głównie dlatego, że wczytujesz liczbę jako stringa, a potem chcąc porównywać cyfry tej liczby porównujesz wartości zanków (charów) tej liczby, a nie cyfr (co pewnie chciałeś zrobić). Wtedy taka cyfra zamiast planowanej wartości przyjmuje wartość zgodną z kodem ASCII. Dlatego żeby kod ASCII odpowiadał wartościom cyfr musimy od kolejnych znaków liczby odejmować wartość ASCII cyfry 0. Już nie wspominając o tej pętli for, która nie wiem jakim prawem ma działać
Poprawny kod wygląda następująco:
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char const *argv[])
{
string number;
cout << "Podaj numer do sprawdzenia jego najmniejszej cyfry" << endl;
cin >> number;
int min = number[0] - '0';
for (int i = 0; i < number.length(); i++)
{
if (number[i] - '0' < min)
{
min = number[i] - '0';
}
}
cout << "Najmniejsza cyfra tej liczby to " << min;
return 0;
}
Wyjaśnienie:
Jak coś jeszcze niejasne to pytaj :)
Jak coś to fajnie opisałem algorytm znajdowania największej/najmniejszej liczby w zbiorze w jednym z ostatnich moich odpowiedzi (możesz sprawdzić w moim profilu, ma chyba naj nawet)
#include <iostream>
#include <string>
int main()
{
std::string liczba;
std::cout << "podaj liczbe ";
std::cin >> liczba;
int najmniejsza = liczba.at(0) - '0';
for(unsigned int i=1; i < liczba.length(); i++)
{
if(liczba.at(i) - '0' < najmniejsza)
{
najmniejsza = liczba.at(i) - '0';
}
}
std::cout << najmniejsza << '\n';
}