#include <iostream>
#include <sstream>
using namespace std;
int main(int argc, char** argv)
{
string liczba;
cout<<"podaj liczbe ";
cin>>liczba;
int dlugosc;
dlugosc = liczba.length();
int najmniejsza;
for(int i; i<=dlugosc; i++)
{
if(liczba[i]<liczba[i+1])
{
najmniejsza=liczba[i+1];
cout<<najmniejsza;
}
}
}
Brakuje
int i = 0;
Jak już z tym sobie poradzisz to czeka cię kolejny problem, tym razem związany z długością.
Za wstawianie zrzutów ekranu z kodem powinien post iść automatycznie do perełek
najmniejsza=liczba[i+1];
ta konwersja też może być ciekawa.
Czy te przypadkowe liczby to 48 do 57?
- Od jakiego indeksu
i
zaczynasz? - Lekcja na dziś: https://pl.wikipedia.org/wiki/ASCII#Tabela_kod%C3%B3w_ASCII
O to Panu chodzilo?
#include <iostream>
using namespace std;
int main ()
{
int max=0,number,min=0;
for (int i=0; number!=-1; i++)
{
cout<<"Enter the number: ";
cin>>number;
if (number>max)
max=number;
if (number<min)
min=number;
}
cout<<"The largest is: "<<max << endl;
cout<<"The smallest is: "<<min << endl;
}
PS
najmniejsza=liczba[i+1];
kreatywne :)
zgaduję co masz na myśli
chcesz wpisać taką liczbę
12345
i chcesz tą liczbę rozłożyć na poszczególne cyfry i wypisać najmniejszą ?
czyli, podaną wyżej liczbę rozkładasz na poszczególne cyfry -> 1, 2, 3, 4, 5 i chcesz wypisać najmniejszą czyli w tym przypadku 1 ? Tak wnioskuję z kodu który napisałeś, bo z tytułu to ni uja nie idzie zrozumieć co masz na myśli
Coś co pozwala zauważyć wiekuistość błędów jakie ma ten kod: https://godbolt.org/z/W3Eonx3xM
Niezainicjowana zmienna to tylko wierzchołek góry lodowej.
string liczba; ... for(int i; i<=dlugosc; i++) { if(liczba[i]<liczba[i+1])
Powinno być int i = 0
ale to też cię nie uratuje, bo w pętli aż z dwóch powodów wyjeżdżasz poza zakres stringa. Raz bo indeksy stringa są od 0
do dlugosc-1
a ty pętlą jedziesz aż do dlugosc
czyli o jeden element za daleko, a dwa bo odwołujesz się nie tylko do liczba[i]
ale nawet do liczba[i+1]
gdzie jak wiemy samo i
to już o 1 za dużo.
Na ile rozumem zadanie ma wyświetlić najmniejszą cyfrę liczby, to czemu rozwiązujesz inne zadanie, znajdujesz najmniejszy znak w napisie?
Jeżeli użytkownik wprowadzi:
-
0000052
, najmniejszy znak to0
ale to jest liczba52
której najmniejszym znakiem jest2
. -
34@
, najmniejszy znak to@
ale to jest liczba34
(po której dalej są jakaś tam zbędna informacja) której najmniejszym znakiem jest3
.
To tak strasznie skomplikowany program, cały jeden wiersz kodu (realizującego zadanie, reszta tylko wprowadzenie danych i wyświetlenie wyników):
#include <iostream>
#include <cmath>
using namespace std;
int main ()
{
int value,mindigit='9'+1;
cout<<"Enter the number: ";
cin>>value;
for(int next=1;next;value=next) mindigit=min(mindigit,value-10*(next=value/10));
cout<<"The smallest is: "<<mindigit<<endl;
return 0;
}
moje rozwiązanie problemu
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int liczba;
cout << "podaj liczbe ";
cin >> liczba;
std::vector<int> cyfry;
int cyfra = 0;
while(liczba > 0){
cyfra = liczba % 10;
liczba /= 10;
cyfry.push_back(cyfra);
}
for(int &c : cyfry){ //tą pętlę można usunąć ale dodałem ją jako dowód, że liczba jest rozdzielona na cyfry
cout << "po rozdzieleniu -> " << c << endl;
}
cout << "min = " << *min_element(cyfry.begin(), cyfry.end()) << endl;
return 0;
}