Zadanie C++ liczby losowe

0

Jest ktoś w stanie to rozwiązać ? 4 zadania z C++

  1. Napisz program, który wylosuje liczbę od przedziału 0 do 7
  2. Napisz program, który wyświetli podane przez użytkownika słowo od tyłu z góry do dołu (wykorzystaj tablicę znakową)
  3. Napisz program, który wylosuje 5 liczb z przedziału od 1 do 5 i zapisze ich wartości do tablicy a następnie wyświetli jej wartości
  4. Napisz program, który wylosuje liczbę parzystą z przedziału od -4 do 10 a następnie wyświetli ją na ekranie
0

Nie przypuszczałem tutaj o jakiś pieniądzach
jest to zadanie ze szkoły, mam podstawy w C++ i szukam pomocy tutaj na forum

3

Jak szukasz pomocy to napisz z czym masz problem i co już masz (kod). Nikt nie będzie tutaj odwalał roboty za Ciebie, nie od tego jest forum.

0
  1. Napisz program, który wylosuje liczbę od przedziału 0 do 7:
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int liczba;

int main()
{

    srand(time(NULL));
    liczba = rand()%8;
    cout <<liczba<< endl;

    return 0;
}
0

Ja mam do ogarnięcia liście na działce. Jestem w tym początkujący, może barter?

0

Jeżeli chodzi o punkt 4. to udało mi się stworzyć coś takiego jak niżej. Niestety czasami w ogóle nie losuje. Nie wiem dlaczego chociaż przestudiowałem już kilka przypadków pod względem matematycznym.

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

using namespace std;

int liczba;

int main()
{

    srand(time(NULL));


        liczba = rand()%15-4;
         if (liczba%2==0)
            {
        cout <<liczba<< endl;
            }

        else if(liczba=liczba+1)
            {
            cout<<liczba<<endl;
            }




    system("PAUSE");
    return 0;
}
2

Może Ci nie wyświetlać liczby jak wylosujesz liczbę -1.
Sprawdź drugiego IFa.

0

Dzięki za podpowiedź. Dodałem do drugiego IFa "||(liczba==0)" i wydaje się, że działa (wiem, że to bardzo proste i łopatologiczne, ale z obecnego zasobu wiedzy z C++ tylko tyle mogę :) )

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

using namespace std;

int liczba;

int main()
{

    srand(time(NULL));


        liczba = rand()%15-4;
         if (liczba%2==0)
            {
        cout <<liczba<< endl;
            }

        else if((liczba=liczba+1)||(liczba==0))
            {
            cout<<liczba<<endl;
            }




    system("PAUSE");
    return 0;
}
1

Do zadania 4 wystarczą dwie linie kodu w funkcji głównej.
Wystarczy policzyć ile jest liczb parzystych w przedziale od -4 od 10 (8 sztuk),
więc losujemy jedną z ośmiu liczb.
Następnie odejmujemy od wylosowanej liczby -2 (czyli -4 / 2, w ujemnym przedziale są dwie liczby parzyste, -2 i -4),
a następnie mnożymy otrzymany wynik przez dwa.
W ten sposób otrzymujemy zawsze liczbę parzystą z zadanego przedziału bez zbędnej ifologii.
(rand() % 8 - 2) * 2

ale z obecnego zasobu wiedzy z C++ tylko tyle mogę

Można taki mały przedział rozpisać na kartce i wymyślić prosty wzór.
Poziom podstawówki.

0
  1. Napisz program, który wylosuje 5 liczb z przedziału od 1 do 5 i zapisze ich wartości do tablicy a następnie wyświetli jej wartości:
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int pomiary[5];

int main()
{

    srand(time(NULL));

    for (int i=0; i<5; i++)
        {
        pomiary[5] =rand()%5+1;

        cout <<pomiary[5]<< endl;
        }

    system("PAUSE");
    return 0;
}
0

int pomiary[5]; nie powinna być globalna. To jest zła praktyka, jeśli nie ma takiej konieczności.
W zadaniu należy wypełnić tablicę, a następnie (gdy tablica jest wypełniona) należy ją wypisać.
W jednej pętli wypełniasz, a w drugiej wypisujesz.

0

Jeżeli masz tablicę

int pomiary[5];

To ma ona 5 miejsc. Ale pamiętaj że w C/C++ jak i większości języków pierwszy element tablicy jest pod indeksem 0. Czyli największy indeks jaki możesz użyć to 4 (czyli 5 element tablicy)

0

Czy mogłbym Was prosić o poprawiony kod do mojego wcześniejszego wpisu? Chętnie bym go zobaczył. Samym wątkiem postanowiłem się zająć, ponieważ wydał mi się dobrym ćwiczeniem na początki z C++.

W chwili obecnej napisałem coś takiego odnośnie punktu 2 Napisz program, który wyświetli podane przez użytkownika słowo od tyłu z góry do dołu (wykorzystaj tablicę znakową):

Działa dobrze :).

#include <iostream>
#include <cstdlib>
#include <cstring>

using namespace std;

int n;

int main()
{

    char slowo[n];


    cout<<("Podaj slowo:");
    cin>>slowo;

    for (n=strlen(slowo); n>=0; n--)
        cout<<endl<<slowo[n];

    return 0;

    system("PAUSE");
    return 0;
}
1

Tablica niedynamiczna musi mieć stały rozmiar (znany w czasie kompilacji).
Wygodniej jest użyć obiektu std::string. To też jest tablica char, ładnie i wygodnie opakowana o
dynamicznie dopasowywanym rozmiarze.
Jeśli już bardzo upierasz się przy gołych tablicach char* lepiej czytać tekst użytkownika
funkcją cin. getline(wsk, rozmiar) - tylko trzeba pamiętać, żeby zostawić miejsce na znak \0 oznaczający koniec tekstu.

Proszę:

int main()
{
    srand(time(NULL));
    constexpr int rozmiar = 5;
    int pomiary[rozmiar];
    for (int i = 0; i < rozmiar; i++)
    {
        pomiary[i] = rand() % 5 + 1;
    }
    for (int i = 0; i < rozmiar; ++i)
    {
        cout << pomiary[i] << '\n';
    }
} 

Proponuję wziąć jakiś kurs C++ i rozpocząć czytać od początku.
Chcesz szybko przeskoczyć do bardziej zaawansowanych zagadnień,
ale brakuje ci absolutnych podstaw. Za chwilę zaczną się duże problemy i się poddasz
bez zrozumienia materiału. Podstawy to podstawa w każdym języku.

Do zadania 4:

int main()
{
    srand(time(NULL));
    cout << ((rand() % 8 - 2) * 2) << '\n';
}
0

Pamiętaj że tak jak @YooSy napisał wcześniej - zmienne globalne powinny być unikane.

int n; <-- zmienna globalna

int main()
{
    char slowo[n];
}

Na razie gdy masz tylko jedną funkcję nie robi to żadnej różnicy, mógłbyś nawet powiedzieć że gdy masz dwie to łatwiej użyć zmiennej globalnej niż przekazywać ją jako parametr - owszem, ale problemy zaczynają się gdy tych funkcji jest więcej i gdy przez przypadek użyjesz nie tej zmiennej co chcesz i będziesz się głowił godzinami "Czemu to nie działa". Dlatego lepiej pozbyć się tego złego nawyku ;)

Zauważ też że do zmiennej n nie przypisałeś żadnej wartości, więc kod może raz zadziałać a raz nie, tzw. Undefined Behaviour.

0

Jeśli już koniecznie rand(), to nieco bardziej sprytne dla 4:

#include <iostream>
#include <cstdlib>

int main()
{
    srand(time(NULL));

    std::cout << ((rand() & 0x0E) - 4) << '\n';
}

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