Strona 1 z 1
jak to zrobic?
Napisane: sobota, 23 stycznia 2010, 16:05
przez mateusze.k
Code: Zaznacz cały
double petla(double n, double a) //dodaje n liczb wiekszych od 0 podanych przez uzytkownika
{
cout << "Ile liczb chcesz wczytac ?" << endl;
cin >> n;
for ( int i = 1; i <= n; i++ )
{
cout << "Podaj " << i << " liczbe" << endl;
cin >> a;
if ( a > 0 ) // sprawdzy czy podana liczba jest wieksza od 0
{
double suma = suma + a;
} else {
cout << " podales zla liczbe" << endl;
}
}
double suma;
return suma;
}
Nie wiem jak zrobić, aby w chwili podania liczby minusowej pojawiał się tekst "podales zla liczbe, liczba musi byc wieksza od 0. Wprowadz licbe ponownie", i zeby ten tekst wyswietlal sie do czasu az uzytkownik poda poprawna liczbę.
Z góry dziękuję za pomoc !
Re: jak to zrobic?
Napisane: sobota, 23 stycznia 2010, 18:13
przez mateuszt
Code: Zaznacz cały
double petla(double n, double a) //dodaje n liczb wiekszych od 0 podanych przez uzytkownika
{
cout << "Ile liczb chcesz wczytac ?" << endl;
cin >> n;
for ( int i = 1; i <= n; )
{
cout << "Podaj " << i << " liczbe" << endl;
cin >> a;
if ( a > 0 ) // sprawdzy czy podana liczba jest wieksza od 0
{
double suma = suma + a;
i++;
} else {
cout << "podales zla liczbe, liczba musi byc wieksza od 0. Wprowadz licbe ponownie" << endl;
}
}
double suma;
return suma;
}
Re: jak to zrobic?
Napisane: sobota, 23 stycznia 2010, 18:40
przez mateusze.k
Czy coś poprawiłeś po za
Code: Zaznacz cały
cout << "podales zla liczbe, liczba musi byc wieksza od 0. Wprowadz licbe ponownie" << endl;

Z tym sobie poradzę ;p
...
W pascalu było coś takiego jak KOTWICE, w c++ jest jakiś odpowiednik ?
po wpisaniu liczby -3 wracamy do miejsca gdzie podaje się liczbę i tak do skutku aż spełniony zostanie warunek ??
Re: jak to zrobic?
Napisane: sobota, 23 stycznia 2010, 19:11
przez mateuszt
i++ w for.. chyba nie zauważyłeś zmiany.
W c++ masz instrukcje goto.
np.
Code: Zaznacz cały
double petla(double n, double a) //dodaje n liczb wiekszych od 0 podanych przez uzytkownika
{
cout << "Ile liczb chcesz wczytac ?" << endl;
cin >> n;
for ( int i = 1; i <= n; i++ )
{
a:
cout << "Podaj " << i << " liczbe" << endl;
cin >> a;
if ( a > 0 ) // sprawdzy czy podana liczba jest wieksza od 0
{
double suma = suma + a;
} else {
cout << "podales zla liczbe, liczba musi byc wieksza od 0. Wprowadz licbe ponownie" << endl;
goto a;
}
}
double suma;
return suma;
}
Re: jak to zrobic?
Napisane: niedziela, 24 stycznia 2010, 09:05
przez mateusze.k
i++ w for.. a czemu ma służyć ta zmiana, mozesz mi wytlumaczyc ?
goto,ok, dzieki

Re: jak to zrobic?
Napisane: poniedziałek, 25 stycznia 2010, 19:45
przez Morfidon
Code: Zaznacz cały
#include <iostream>
using namespace std;
double petla(/* 1) double n, double a*/) //dodaje n liczb wiekszych od 0 podanych przez uzytkownika
{
double suma = 0, n, a; //2)
cout << "Ile liczb chcesz wczytac ?" << endl;
cin >> n;
for ( int i = 1; i <= n; i++ )
{
do
{
cout << "Podaj " << i << " liczbe" << endl;
cin >> a;
} while(a < 0);
suma += a;
}
// 3) double suma;
return suma;
}
int main()
{
cout << petla() << endl; //4)
}
Instrukcji goto się nie używa w takich sytuacjach. Goto używa się jeżeli chce się wyjść z 4+ zagnieżdżonych pętli, a nawet wtedy powinno się tego unikać bo niszczy ona czytelność kodu. Lepiej użyj po prostu pętli while.
Skomentowałem napisany kod.
3) Uważaj na sposób definicji zmiennych, to jak to Ty zrobiłeś jest nieprawidłowe, bo w takim wypadku zdefiniowałeś zmienną, która by nie dość że nie miała
pewnej wartości, to zniszczyłoby by Ci to co wykonałeś powyżej w pętli, lepiej to zrobić tak jak pokazałem w
2).
Zauważ, że wywołanie Twojej funkcji
(4), raczej wygląda trochę inaczej, także definicja zmiennych powinna wyglądać nie tak jak skomentowałem w
p. 1) tylko tak jak w
p. 2. Zwróć uwagę że napisałem double suma
= 0.
Pozdrawiam,
Arkadiusz
Re: jak to zrobic?
Napisane: wtorek, 26 stycznia 2010, 13:43
przez mateusze.k
Morfidon wielkie dzięki za pomoc
