Zadanie Tablice C++

0

Zwykłą tablicę statyczną P[n] (n - stała) wypełnić wylosowanymi rekordami oznaczającymi współrzędne
całkowite (x, y) punktów na płaszczyźnie z zakresu <-G, G> (G jest dodatnią stałą całkowitą).
Następnie:

  1. wydrukować tablicę P.
  2. utworzyć dwie tablice dynamiczne zawierające punkty leżące nad osią x układu współrzędnych
    oraz pod osią x układu (a więc nie leżące na osiach układu).
  3. wydrukować tak utworzone tablice.
    Wskazówki:
  4. Liczby całkowite z zakresu <d, g>, gdzie d i g są liczbami całkowitymi, losujemy jako d + rand() %
    (g+1-d).
  5. Przed utworzeniem tablic dynamicznych i wpisaniem do nich rekordów z tablicy P trzeba najpierw
    policzyć, ile tych rekordów będzie w każdej tablicy.
#include <iostream>
//#include <ctime>
#include <cstdlib>

using namespace std;

const int n = 30;
const int G = 100;




struct SRekord {
int x;
int y;
};

int main()
{
    SRekord P[n];
    int overX = 0;
    int underX = 0;

    for(int i = 0; i<n;i++)
    {
        P[i].x = (-G)+rand()%(G+1-(-G));
        P[i].y = (-G)+rand()%(G+1-(-G));
        if(P[i].y>0){
            overX++;
            cout << "over: "<<P[i].x << " "<< P[i].y << endl;
        }else{
            if(P[i].y<0){
                underX++;
                cout << "under: "<<P[i].x << " "<< P[i].y << endl;
            }
        }

    }

    cout << " over "<< overX << endl;
    cout << " under "<< underX << endl;




SRekord* O = new SRekord;
for(int i = 0; i<n;i++)
    {
        O[i].x = (-G)+rand()%(G+1-(-G));
        O[i].y = (-G)+rand()%(G+1-(-G));
        if(O[i].y>0){
            overX++;
            cout << "over: "<<O[i].x << " "<< O[i].y << endl;
            delete [] O;

        }

    }

SRekord* U = new SRekord;
    for(int i = 0; i<n;i++)
    {
        U[i].x = (-G)+rand()%(G+1-(-G));
        U[i].y = (-G)+rand()%(G+1-(-G));
        if(U[i].y<0){
            underX++;
            cout << "under: "<<U[i].x << " "<< U[i].y << endl;
           delete [] U;
        }

    }

    return 0;
}

Program kompiluje się prawidłowo. Nie chce mi utworzyć 2 tablicy dynamicznej, wyczerpały mi się pomysły, bardzo prosze o pomoc (dopiero zaczynam przygode z programowaniem w C++)

1

Co to znaczy "nie chce mi utworzyć tablicy"? Tzn, w jaki sposób to stwierdzasz?

0
enedil napisał(a):

Co to znaczy "nie chce mi utworzyć tablicy"? Tzn, w jaki sposób to stwierdzasz?

k.png
Stwierdzam tak gdyż kompilator pokazuje tylko tablice z Over a powinnien jeszcze pokazać rodzielona tablice under.

3

P[i].x = (-G)+rand()%(G+1-(-G)); - P[i].x = rand()%(2*G+1)-G;, matematyka się kłania.
SRekord* O = new SRekord; - to nie jest tablica tylko eden rekord, który można potraktować jako tablicę o jednym elemencie.
delete [] O; - zwalniasz ta tablicę wielokrotnie na każdym kroku pętli kiedy znajdziesz odpowiedni punkt.
O[i].x = (-G)+rand()%(G+1-(-G)); - znowu losujesz, wydaje mi się że muszą to być punkty z tablicy P
O[i].x = 1+rand()%G; - tak wylosujesz tylko nad osią X

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