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

Tablica dynamiczna C++

Ostatnio zmodyfikowano 2022-05-08 20:58
Autor Wiadomość
ciin0wskii
Temat założony przez niniejszego użytkownika
Tablica dynamiczna C++
» 2022-05-08 20:27:09
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:
1. Liczby całkowite z zakresu <d, g>, gdzie d i g są liczbami całkowitymi, losujemy jako d + rand() %
(g+1-d).
2. 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.

KOD :
C/C++
#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;
}
Problem w tym,że program  zatrzymuje się po pierwszej tablicy dynamicznej ,,Over'' , nie chce wczytac ,,under''
Przyznam, że w c++ od  niedawna zaczynam nauke. Nie mam pojecia gdzie jest błąd.
P-179444
pekfos
» 2022-05-08 20:58:46
Nie podajesz rozmiaru przy tworzeniu tablicy i próbujesz ją wielokrotnie niszczyć
» Kurs C++» Poziom 5Zarządzanie pamięcią new, delete lekcja
P-179445
« 1 »
  Strona 1 z 1