Forum Oficjalnego Klubu Mitsubishi - MitsuManiaki Strona Główna Forum Oficjalnego Klubu Mitsubishi - MitsuManiaki


FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy
RejestracjaRejestracja  ZalogujZaloguj  AlbumAlbum
 Ogłoszenie 


W myśl ustawy RODO, akceptując regulamin wyrażasz zgodę na gromadzenie i przetwarzanie swoich danych osobowych w celach związanych z przyznaniem dostępu do forum / wstąpieniem do klubu.
Administratorem danych jest Oficjalny Klub Mitsubishi - MitsuManiaki
Jeśli nie akceptujesz powyższych informacji, prosimy o kontakt z Administracją w celu usunięcia konta.

Poprzedni temat «» Następny temat
C++; ktoś się orientuje?
Autor Wiadomość
KowaliK 
Mitsumaniak
01339/KMM

Auto: JDM's
Kraj/Country: Polska
Pomógł: 6 razy
Dołączył: 06 Sty 2008
Posty: 990
Skąd: Wrocław
Wysłany: 19-09-2011, 18:37   C++; ktoś się orientuje?

Jak w temacie, temat dotyczy języka programowania C++. Są tutaj osoby, które dobrze sobie z nim radzą? :wink: Mam problem z napisaniem programu. Sprawa pewnie jest prosta ale niestety w szkole dostałem zadanie bez żadnych wskazówek, a próbując sposobów znalezionych w sieci do niczego nie udało mi się dojść. Problem mam z napisaniem programu wyświetlającego 10 losowych, parzystych liczb z przedziału od 50 do 100.

Próbowałem już czegoś takiego:
Kod:
int main()
{
    int wylosowana;
    int min=50;
    int max=100;
    srand (time(NULL));
   
    wylosowana = rand()%(max-min+1);
    cout<<wylosowana<<endl;
   
    system("PAUSE");
    return EXIT_SUCCESS;
}


ale kompletnie nie działa, ponieważ komputer losuje liczby mniejsze od 50. :roll:
_________________
 
 
krzychu 
Mitsumaniak


Auto: Lancer 2.0 Int, Mazda CX-3
Zaproszone osoby: 1
Kraj/Country: Polska
Pomógł: 141 razy
Dołączył: 21 Kwi 2008
Posty: 12607
Skąd: Bielsko-Biała
Wysłany: 19-09-2011, 18:51   

Wylosuj od 25 do 50 i pomnóż przy wyświetlaniu x2. Przy okazji dodaj pętlę ;)

Nie mam teraz żadnego kompilatora C++ chyba, że chcesz kod w C#?

Próbuj tak:

Kod:
int main()
{
    int wylosowana;
    int min=50;
    int max=100;
    srand (time(NULL));
    for (int i=0; i<10; i++)
    {
        wylosowana = (rand()%((max/2-min/2+1)+min/2))*2;
        cout<<wylosowana<<endl;
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}


Ale to tak z palca napisane.
 
 
KowaliK 
Mitsumaniak
01339/KMM

Auto: JDM's
Kraj/Country: Polska
Pomógł: 6 razy
Dołączył: 06 Sty 2008
Posty: 990
Skąd: Wrocław
Wysłany: 19-09-2011, 19:12   

O proszę, nie spodziewałem się tak szybkiej odpowiedzi. :) To co podałeś owszem, losuje 10 liczb parzystych ale nie działa zakres 50 - 100. :(
_________________
 
 
krzychu 
Mitsumaniak


Auto: Lancer 2.0 Int, Mazda CX-3
Zaproszone osoby: 1
Kraj/Country: Polska
Pomógł: 141 razy
Dołączył: 21 Kwi 2008
Posty: 12607
Skąd: Bielsko-Biała
Wysłany: 19-09-2011, 19:27   

Kod:
#include <ctime>
#include <cstdlib>
#include <iostream>
using namespace std;

int main()
{
  int wylosowana;
  int min=50;
  int max=100;
  srand (time(NULL));
  for (int i=0; i<10; i++)
  {
      wylosowana = random((max-min)/2+1)*2+min;
      cout<<wylosowana<<endl;
  }
  system("PAUSE");
  return 0;
}
 
 
jawlo 
Forumowicz

Auto: SS DiD mint silver
Kraj/Country: Polska
Pomógł: 17 razy
Dołączył: 09 Sty 2006
Posty: 1196
Skąd: Beskidy
Wysłany: 19-09-2011, 19:48   

Kod:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <iostream>

using namespace std;

int main()
 {
     int wylosowana;
     int min=50;
     int max=100;
     srand (time(NULL));
     for (int i=0; i<10; i++)
     {
         wylosowana = min + (rand()%(max/2-min/2+1))*2 ;
         cout<<wylosowana<<endl;
     }
     system("PAUSE");
     return EXIT_SUCCESS;
 }


//( value % 100 )  daje liczbe z przedziału 0 do 99
//( value % 100 + 1 )  daje liczbe z przedziału 1 do 100
//( value % 30 + 1985 )  daje liczbe z przedziału 1985 do 2014



kompilowane w Dev C++ (darmowy)
 
 
 
KowaliK 
Mitsumaniak
01339/KMM

Auto: JDM's
Kraj/Country: Polska
Pomógł: 6 razy
Dołączył: 06 Sty 2008
Posty: 990
Skąd: Wrocław
Wysłany: 19-09-2011, 20:18   

krzychu, gdzieś tutaj jest błąd:

Kod:
wylosowana = random((max-min)/2+1)*2+min;


zmieniłem już to w ten sposób:

Kod:
wylosowania = rand () % ((max-min)/2+1)*2+min;


ale pojawia się jeszcze większy error. :wink:


jawlo, Twoja wersja kompiluje się bardzo długo i koniec końców też nie działa. :(
_________________
 
 
jawlo 
Forumowicz

Auto: SS DiD mint silver
Kraj/Country: Polska
Pomógł: 17 razy
Dołączył: 09 Sty 2006
Posty: 1196
Skąd: Beskidy
Wysłany: 19-09-2011, 20:25   

W jakim środowisku to sprawdzasz?
Windows XP + Dev C++ kompiluje poniżej 1s i działa.
 
 
 
krzychu 
Mitsumaniak


Auto: Lancer 2.0 Int, Mazda CX-3
Zaproszone osoby: 1
Kraj/Country: Polska
Pomógł: 141 razy
Dołączył: 21 Kwi 2008
Posty: 12607
Skąd: Bielsko-Biała
Wysłany: 19-09-2011, 20:40   

KowaliK napisał/a:

Kod:
wylosowana = random((max-min)/2+1)*2+min;


No tak borland... zapomniałem że nie trzyma standardów...

Kod:
using namespace std; 

int main()
{
int wylosowana;
int min=50;
int max=100;
srand (time(NULL));
for (int i=0; i<10; i++)
{
    wylosowana = (rand()%((max-min)/2+1))*2+min;
    cout<<wylosowana<<endl;
}
system("PAUSE");
return 0;
}


Oba kody działają ma borlandzie... poprawnie. Zobacz czy dołączasz namespace i odpowiednie biblioteki. A najlepiej wklej błędy.
 
 
KowaliK 
Mitsumaniak
01339/KMM

Auto: JDM's
Kraj/Country: Polska
Pomógł: 6 razy
Dołączył: 06 Sty 2008
Posty: 990
Skąd: Wrocław
Wysłany: 19-09-2011, 21:16   

Kompiluję na Viscie + Dev.

W tej chwili kompiluję ostatni kod, który wkleiłeś Krzyśku i od 4 minut stoi w miejscu. :| Mam cstdlib, iostream oraz ctime. Nie wiem co mogę robić źle... Otwieram to jako aplikacja na konsolę - dobrze?
_________________
 
 
jawlo 
Forumowicz

Auto: SS DiD mint silver
Kraj/Country: Polska
Pomógł: 17 razy
Dołączył: 09 Sty 2006
Posty: 1196
Skąd: Beskidy
Wysłany: 19-09-2011, 21:30   

Masz jakiś problem ze środowiskiem.
Vista niestety nie ma dobrych opinii.

Możesz skorzystać z kompilatora on-line:
http://ideone.com/

poczytaj ten wątek http://ii.yebood.com/viewtopic.php?t=2907
 
 
 
KowaliK 
Mitsumaniak
01339/KMM

Auto: JDM's
Kraj/Country: Polska
Pomógł: 6 razy
Dołączył: 06 Sty 2008
Posty: 990
Skąd: Wrocław
Wysłany: 19-09-2011, 21:37   

Dziwne, dzisiaj kilka programów skompilowało mi się OK (tzn. ładowały się i pokazywało błędy) w tym momencie nie wiem co się stało. W ubiegłym tygodniu tez wszystko normalnie działało. :roll: Natomiast wg. tego kompilatora online, program działa bardzo cacy, chociaż pokazuje jakiś błąd z pauzą. Dzięki za link, jutro na spokojnie poczytam, bo dzisiaj mam jeszcze jedną rzecz do zrobienia ale na szczęście nie związaną z naszym tematem. :D Póki co, Panowie, wielkie dzięki za pomoc. Co prawda "plusy" będą marną rekompensatą ale zawsze coś - mam nadzieje, że uda mi się kiedyś normalnie odwdzięczyć. Niech temat nie spada za daleko, bo będę wracał tutaj częściej. :oops: Chyba nie macie nic przeciwko, żeby od czasu do czasu udzielać mi korków z programowania? :wink:
_________________
 
 
krzychu 
Mitsumaniak


Auto: Lancer 2.0 Int, Mazda CX-3
Zaproszone osoby: 1
Kraj/Country: Polska
Pomógł: 141 razy
Dołączył: 21 Kwi 2008
Posty: 12607
Skąd: Bielsko-Biała
Wysłany: 20-09-2011, 09:10   

Ściągnij sobie Visual Studio C++ Express. Jest darmowy i na pewno dobrze działa z Vistą. Do tego ma świetny edytor.

http://www.microsoft.com/...ual-cpp-express

Potem będziesz miał też prosto przesiąść się na C#.
 
 
KowaliK 
Mitsumaniak
01339/KMM

Auto: JDM's
Kraj/Country: Polska
Pomógł: 6 razy
Dołączył: 06 Sty 2008
Posty: 990
Skąd: Wrocław
Wysłany: 22-09-2011, 17:52   

Wracam z powrotem. Muszę napisać program losujący liczby z przedziału od 1 do 20, sumujący je ale suma musi być równa tej zadeklarowanej przez użytkownika. Użytkownik może podać maksymalną sumę = 100. Nie mam bladego pojęcia jak zrobić "inteligentną" pętlę, która sama dostosuje liczbę losowań do sumy wylosowanych liczb... :? Dodatkowo na końcu program musi wyświetlić w ilu losowaniach osiągnął podaną sumę. Próbowałem już kilku rzeczy, ale jedyne co do tej pory udało mi się zrobić, to dodać jedynie 2 wylosowane liczby do siebie ale mnie kompletnie nie urządza. Ma to wyglądać mniej więcej tak:

Użytkownik podaje liczbę 50, program losuje:

5 ;
10 - 15;
2 - 17;
8 - 25;
10 - 35;
20 - za duzo;
4 - 39;
15 - za duzo;
9 - 48;
4 - za duzo;
2 - 50;

Suma osiągnięta po 11 losowaniach.

Kod:

#include <cstdlib>
#include <iostream>
#include <ctime>

using namespace std;

int main()
{
int losowanie;
int min = 0;
int max = 20;
cout<<"Podaj sume wylosowanych liczb:"<< endl;
cin>>suma;
if (suma>=100)
cout<<"Suma musi byc mniejsza od 100!"<< endl;
srand (time(NULL));
for (int i=0; i<suma; i++)
{
     losowanie = rand () % (max-min)+1;
     cout<<losowanie<<endl;
}
system("PAUSE");
return EXIT_SUCCESS;
}
_________________
 
 
jawlo 
Forumowicz

Auto: SS DiD mint silver
Kraj/Country: Polska
Pomógł: 17 razy
Dołączył: 09 Sty 2006
Posty: 1196
Skąd: Beskidy
Wysłany: 22-09-2011, 18:50   

Żeby nie było za łatwo podam tylko "środek".
Resztę musisz sam uzupełnić..
'
Kod:

for (int i=0; moja_suma!=suma; i++)
{
     losowanie = rand () % (max-min)+1;
     cout<<losowanie<<endl;
     if( (moja_suma+losowanie) > suma)
     {
         cout<< "liczba za duża" << endl;
         continue;    // zaczyna od początku pętli
     }
     moja_suma=moja_suma+losowanie;
}
 
 
 
KowaliK 
Mitsumaniak
01339/KMM

Auto: JDM's
Kraj/Country: Polska
Pomógł: 6 razy
Dołączył: 06 Sty 2008
Posty: 990
Skąd: Wrocław
Wysłany: 22-09-2011, 19:17   

Mógłbyś wytłumaczyć
Kod:
moja_suma
, bo nie bardzo rozumiem tą zmienną? :wink:
_________________
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group

Ta strona używa ciasteczek (ang. cookies) w celu logowania oraz do badania oglądalności strony.
Aby dowiedzieć się czym są ciasteczka odwiedź stronę wszystkoociasteczkach.pl
Jeśli nie wyrażasz zgody na wykorzystywanie ciasteczek na tej stronie, zablokuj je w opcjach Twojej przeglądarki internetowej.