PDA

View Full Version : problema dimensione array


annunziatoco
29-12-2013, 16:35
ragazzi ho un problema, allora io dovrei fare un programma che dato un array di 10 numeri, dovrei dividere i numeri dell'array in due array divisi in pari e dispari, io ho fatto questo ma ci saranno 18000 errori di semantica:
#include<iostream>
using namespace std;
int main()
{

int* dati = new int[10];
int* pari = new int[];
int* dispari = new int[];
int j=0;
int z=0;
cout<<"inserisci dati";
for(int i=0; i<10; i++)
{
cin>>dati[i];
}
for(int i=0; i<10; i++)
{
if(dati[i] % 2 == 0)
{
j++;
pari[j] = dati[i];
}
else
{
z++;
dispari[z] = dati[i];
}
}

return 0;
}
non so di quanti numeri dichiarare gli altri due vettori perche non so effettivamente quanti ne servano

vendettaaaaa
29-12-2013, 17:43
ragazzi ho un problema, allora io dovrei fare un programma che dato un array di 10 numeri, dovrei dividere i numeri dell'array in due array divisi in pari e dispari, io ho fatto questo ma ci saranno 18000 errori di semantica:

#include<iostream>

using namespace std;

int main()
{
int* dati = new int[10];
int* pari = new int[];
int* dispari = new int[];

int j = 0;
int z = 0;

cout << "inserisci dati";

for (int i = 0; i < 10; i++)
{
cin >> dati[i];
}

for (int i = 0; i < 10; i++)
{
if (dati[i] % 2 == 0)
{
j++;
pari[j] = dati[i];
}
else
{
z++;
dispari[z] = dati[i];
}
}

return 0;
}


non so di quanti numeri dichiarare gli altri due vettori perche non so effettivamente quanti ne servano
Innanzitutto incolla il tuo codice dentro ai tag [CODE] per mantenere l'indentazione.

Poi non si può dichiarare pari e dispari con quella sintassi (non semantica), poichè manca la dimensione. Devi evidentemente prima di tutto contare i numeri pari, poi allochi lo spazio necessario, usando new, ai vettori pari e dispari, facendo quindi un ciclo in più.

annunziatoco
29-12-2013, 18:02
#include<iostream>
using namespace std;
int main()
{

int* dati = new int[10];
int j=0;
int z=0;

cout<<"inserisci dati";

for(int i=0; i<10; i++)
{
cin>>dati[i];
if(dati[i] % 2 == 0)
j++;
else
z++;
}

int* pari = new int[j];
int* dispari = new int[z];

for(int i=0; i<10; i++)
{
if(dati[i] % 2 == 0)
{
j++;
pari[j] = dati[i];
}
else
{
z++;
dispari[z] = dati[i];
}
}
return 0;
}
cosi :D funziona grazie =D

Marco95
30-12-2013, 20:12
Ma come fa a funzionare se nell'ultimo ciclo for vai oltre la dimensione dell'array?