c++ problem z losowaniem liczb

0

Witam, mam problem z losowaniem liczb. Pisze pewien program i potrzebuje, aby program wylosowal liczby, pierwsza liczba z przedzialu 1-100 to za kazdym razem 100, natomiast druga z nich losuje dobrze, tzn w podanym przedziale i za kazdym razem liczba ta jest inna. W czym moze tkwic problem?

0

Radzę następnym razem przeczytać co się napisało zanim wciśnie się przycisk "wyślij", poza tym nie zamieściłeś kodu.

0

Prawdopodobnie źle losujesz pierwszą liczbę.

0

Jezeli chodzi o kod to jest tego sporo, a fragment odpowiadajacy za losowanie pierwszej liczby jest dokladnie taki sam jak ten losujacy druga liczbe, a mimo to pierwsza liczba to zawsze sto, a druga losowana jest prawidlowo...

0

Jeżeli nie chcesz żeby ktoś Ci pomógł to my tym bardziej nie mamy takiej możliwości. Uruchamiasz generator liczb przed pierwszym losowaniem? Jeżeli są takie same tylko różni się zakres to zrób sobie funkcję i niech ona Ci zwraca wynik losowania dla podanego zakresu. W tym właśnie problem, że pewnie masz "ten sam kod" w różnych miejscach i dlatego trudniej znaleźć błąd. Jak wrzucisz kawałki kodu odpowiedzialne za losowanie to jest szansa że ktoś Ci pomoże.

0

Może na przykład masz na początku srand(0) dzięki czemu generator pseudolosowy jest zupełnie nielosowy.
Może... w sumie to powodów mogą być setki. Dopóki nie podasz kodu/więcej informacji proponuję EOT.

0

Jasne ze chce. To podolaczalem biblioteki, zainicjowalem zmienne, dalej jest czesc kodu, ktora odpowiada jedynie za wyswietlanie tekstu i pobieranie od uzytkownika odpowiedzi w postaci cyfry (jednak nie ma to chyba wplywu na moj problem wiec tylko wspominam, ale jak cos to moge podac), dalej losowanie liczby (i to wlasnie tu zawsze jest 100):

srand(time(NULL));
losowana1=rand()%100+1;

na podstawie wylosowanej liczby ma wejsc w odpowiedniego if'a i tam znow losowana ma byc liczba:

srand(time(NULL));
losowana2=rand()%100+1;

0

Aha... No to usune przy drugim losowaniu srand i zobacze czy to pomoze...W kazdym razie dzieki

0

Poprawilem blad ze srand, ale niestety dalej wynik pierwszego losowania to 100.
Zalaczam caly dotychczasowy kod...

0

Lektura na dziś:

  • tablice
  • podział programu na pliki

Oprócz tego:

  • nie nazywaj funkcji wielkimi literami, tak zazwyczaj nazywa się makra preprocesora
  • nie używaj zmiennych globalnych
  • zamiast std::endl używaj '\n', nie dość, że program przyspieszy to jeszcze lepiej to trochę wygląda
  • za te switche to powinien Ci ktoś łeb urwać
  • funkcja bramka powinna być jedna, a nie jest ich 119!! Masakra!!
0

o qtwa.. To jest przykład, dlaczego nie powinno się ruszać kodu powyżej 100 linijek, jeżeli nie potrafi się programować.
Ja bym Ci radził poczytać o obiektowości i w ogóle o C++.
http://pl.wikipedia.org/wiki/DRY
http://pl.wikipedia.org/wiki/KISS_(regu%C5%82a)
Powiedz co ma robić ten program, a pomożemy Ci zacząć od nowa.
Jestem prawie pewien, że da się to zmieścić w 300 a nie w 3500 linijek.

ogólnie ten kod powinien trafić na basha..

0

Popraw przy okazji to, że masz funkcje typu int, które nic nie zwracają- zmień int na void. Do tego operator przypisania i porównania mylisz w swoich if'ach.
if(Secret=100) - i się teraz nie dziw, że sekret jest równy sto. Tu jest "Twój" problem. Innych problemów jest od groma, ale Twój jest tutaj.
http://pl.wikipedia.org/wiki/DRY - Lektura na dziś.
// Ty to pisałeś ręcznie wszystko? Czy programowo wygenerowałeś taki piękny kod? Jeśli ręcznie - chińskie fabryki zabawek/butów/czegokolwiek przyjmą kogoś z taką cierpliwością z otwartymi ramionami.

2

W sumie jest tylko jedna możliwość poprawienia tego kodu. Usunąć i na wszelki wypadek sformatować dysk :p

Napisz co program ma robić i jak wyglądać to będzie można Cię naprowadzić na rozwiązanie. Lepiej nie brnij w to dalej, bo nic dobrego z tego nie wyjdzie.

0

Od takiego czegoś można by zacząć cokolwiek budować. To jest absolutny szkielet, ale jak ogarniesz o co tutaj chodzi, to już będziesz w stanie zacząć budować coś konstruktywnego.

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
class Team{
    string name;
    int pkt;
    int math;
public:
    Team(string n):name(n),pkt(0),math(0){}
    string GetName(){
        return name;
    }
    int GetPkt(){
        return pkt;
    }
};
class League{
    vector<Team>team;
    static bool myf(Team a,Team b){return a.GetPkt()>b.GetPkt();}
public:
    void AddTeam(Team t){
        team.push_back(t);
    }
    void ShowTable(){
        sort(team.begin(),team.end(),League::myf);
        for(int i=0;i<team.size();i++){
            cout<<i+1<<". "<<team[i].GetName()<<"  "<<team[i].GetPkt()<<"\n";
        }
    }
};
int main(){
    League premierLeague;
    premierLeague.AddTeam(Team("Manchaster United"));
    premierLeague.AddTeam(Team("Chelsea Londoon"));
    premierLeague.AddTeam(Team("Manchaster City"));
    premierLeague.AddTeam(Team("Arsenal Loondon"));
    premierLeague.ShowTable();
    return 0;
}

0

Przypomnijcie mi: kto z was zawsze mówi, że pisanie dużych projektów to najlepsza metoda nauki? Bardzo mnie interesuje czego nauczył się autor tego programu...

0

Dzieki za rady. Heh. Z tymi bramkami to fakt, troche tego jest, ale juz chyba wiem jak to zmienic. A jesli chodzi o switcha to dlaczego jest on zlym pomyslem tutaj?

A tak w ogole to poczytalem te kiss i dry...w sumie to logiczne to jest, ale ubaw to musicie ze mnie miec, heh.

1
Karolaq napisał(a)

Przypomnijcie mi: kto z was zawsze mówi, że pisanie dużych projektów to najlepsza metoda nauki? Bardzo mnie interesuje czego nauczył się autor tego programu...

gdyby nie zabrał się za duży projekt, nie miał by takiego problemu, nie zajrzałby tu na forum, nie zostałby pouczony i niczego by się nie nauczył. Napisze jeszcze dwa projekty, które zmieści w kodzie 10x dłuższym niż powinno to być i się domyśli, że co jest nie tak. To jest naturalna kolej rzeczy.

1
kamilll napisał(a)

A tak w ogole to poczytalem te kiss i dry...w sumie to logiczne to jest, ale ubaw to musicie ze mnie miec, heh.

Nie martw się, z rok Ty będziesz miał ubaw z innych. ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1