Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Funckje zadanie domowe (modyfikacja)

Ostatnio zmodyfikowano 2016-10-06 07:13
Autor Wiadomość
Balto11181
Temat założony przez niniejszego użytkownika
Funckje zadanie domowe (modyfikacja)
» 2016-10-05 15:18:12
Witajcie, otóż zrobiłem zadanie domowe z funkcji i chciałem je troszkę zmodyfikować by zabezpieczyć program. Otóż, trochę mi się pomieszało i sam nie wiem na czym zrobiłem błąd. Otóż kod jest w trakcie budowania, ale już teraz wiem, że coś mi nie pasuje, zapewne zrobiłem jakiś mega błąd :/, ale tak mnie natura stworzyła, żebym kombinował i chyba w ten sposób szybciej do tego dojdę, także dziękuje za pomoc:) udostepniam kod:

C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int wylosuj( int start, int stop )
{
    bool wczytano;
    int losowanie;
    losowanie =( rand() %( stop + 1 - start ) + start );
    return losowanie;
   
   
    do
    {
       
        cout << "Podaj przedzial od: " << endl;
        cin >> start;
        int stop;
        cout << "Do: " << endl;
        wczytano = cin.fail(); // moze byc wczytano = cin.good(); wtedy przy if !wczytano zamiast wczytano**
        cin.clear();
        cin.sync();
       
        if( wczytano )
             cout << "Uzywaj tylko liczb" << endl;
       
    } while( wczytano );
   
    return losowanie;
}

int main()
{
    srand( time( NULL ) );
    int start;
    cout << "Podaj przedzial od: " << endl;
    cin >> start;
    int stop;
    cout << "Do: " << endl;
    cin >> stop;
    int ile = 20;
    do
    {
        cout << wylosuj( start, stop ) << endl;
        ile--;
    } while( ile > 0 );
   
    return 0;
}
P-152271
mateczek
» 2016-10-05 17:48:08
Trochę pokasowałem to co było z grubsza bez sensu

C/C++
#include <iostream>
#include <ctime>
using namespace std;
int wylosuj( int start, int stop )
{
    int losowanie =( rand() %( stop + 1 - start ) + start );
    return losowanie;
}

int main()
{
    srand( time( NULL ) );
    int start;
    cout << "Podaj przedzial od: " << endl;
    cin >> start;
    int stop;
    cout << "Do: " << endl;
    cin >> stop;
    int ile = 20;
    while( ile-- )
         cout << wylosuj( start, stop ) << endl;
   
    return 0;
}
P-152278
Balto11181
Temat założony przez niniejszego użytkownika
» 2016-10-05 20:17:14
Hmm, po pierwsze chciałem dołożyć do tego tak jak napisałem zabezpieczenie przed wpisaniem litery a nie cyfry, to mi skasowałeś. Po drugie twój program nie odpala, bo są błędy przy int losowanie.
P-152292
mateczek
» 2016-10-05 21:00:05
moja wina nie doczytałem że chodzi o zabezpieczenie.
W twoim wypadku nie można zabezpieczań zrobić w funkcji wylosuj. Gdyż funkcja ta przedziały przyjmuje w parametrze, a nie pobiera sama!!! Dlatego kod w tej funkcji był po prostu pozbawiony znaczenia.

W stylu wywalił niepotrzebne linijki i zadowolony z siebie że poprawił :P.


C/C++
#include <iostream>
#include<limits>
#include <ctime>
using namespace std;
int wylosuj( int start, int stop )
{
    int losowanie =( rand() %( stop + 1 - start ) + start );
    return losowanie;
}

int main()
{
    srand( time( NULL ) );
    int start;
    cout << "Podaj przedzial od: " << endl;
    while( !( cin >> start ) ) { //póki funkcja wczytywania się nie powiedzie powtarzaj
        cin.clear();
        cin.ignore( numeric_limits < streamsize >::max(), '\n' );
        cout << "jeszcze raz podaj dolna granica przedzialu!!!" << endl;
    };
    int stop;
    cout << "Do: " << endl;
    while( !( cin >> stop ) ) {
        cin.clear();
        cin.ignore( numeric_limits < streamsize >::max(), '\n' );
        cout << "jeszcze raz podaj gorna granice przedzialu!!!" << endl;
    };
    int ile = 20;
    while( ile-- )
         cout << wylosuj( start, stop ) << endl;
   
    return 0;
}

bo są błędy przy int losowanie.
jest ok. Może spróbuj przebudować projekt bo program kompiluje się poprawnie
P-152293
Balto11181
Temat założony przez niniejszego użytkownika
» 2016-10-05 21:21:57
Z ciekawości co znaczy linijka z ignore, nie miałem tego w kursie także, warto poszerzyć wiedzę. Pomijając ten fakt dzięki, w ogóle za pomoc :)
P-152294
carlosmay
» 2016-10-05 21:40:38
nie miałem tego w kursie
Oj miałeś.
Obsługa strumienia wejściowego

edit: swoją drogą to funkcja rand() zdefiniowana jest w pliku
#include <cstdlib>
.
P-152295
Balto11181
Temat założony przez niniejszego użytkownika
» 2016-10-05 23:59:22
cin.ignore( numeric_limits < streamsize >::max(), chodzi o tą linijkę.  Streamsize
P-152299
carlosmay
» 2016-10-06 07:13:10
std::numeric_limits<>::max()
Nie zaszkodzi trochę kreatywności i użyć googla z pojęciami, których nie rozumiesz.
P-152300
« 1 »
  Strona 1 z 1