buongiorno,
sono neofita di programmazione e mi sono avvicinato al c++ da pochi mesi.
uso eclipse neon.2 release 4.6.2 (su mac)
ho provato ad inserire il codice seguente su compilatori online e funziona
su xcode mi restituisce thread 1 signal SIGABRT
su eclipse funziona solo se la dimensione dell'array è > 3.
non riesco a capirne la ragione.
grazie per l'attenzione.
sono neofita di programmazione e mi sono avvicinato al c++ da pochi mesi.
uso eclipse neon.2 release 4.6.2 (su mac)
ho provato ad inserire il codice seguente su compilatori online e funziona
su xcode mi restituisce thread 1 signal SIGABRT
su eclipse funziona solo se la dimensione dell'array è > 3.
non riesco a capirne la ragione.
grazie per l'attenzione.
Codice:
#include <iostream>
using namespace std;
// inserimento ordinato di un elemento in un array ordinato:
const int limite = 10;
void ins(int A[], int dim, int num) {
int new_dim = dim-1;
while(new_dim >=0 && A[new_dim] > num) {
A[new_dim + 1]=A[new_dim];
new_dim--;
}
A[new_dim+1]=num;
cout << "numero di indice attribuito al numero inserito: [";
cout << new_dim+1 << "]" << endl;
cout << "vettore vect[] dopo inserimento del numero " << num << ": ";
for(int i=0; i<dim+1; i++)
cout << A[i] << " ";
cout << endl;
}
int main() {
int vect[]={2,3,106}; // non funziona correttamente per size < 4 ------> perchè ??????????????????????????
int size=sizeof(vect)/sizeof(vect[0]);
if(size+1<limite) {
cout << "dimensione vettore prima dell'inserimento: " << size << endl;
cout << "vettore vect[] prima dell' inserimento: ";
for(int i=0; i<size; i++)
cout << vect[i] << " ";
cout << endl;
int numero_da_inserire = 21;
cout << "numero da inserire: " << numero_da_inserire << endl;
ins(vect, size, numero_da_inserire);
cout << "verifica in main del risultato: ";
for(int i=0; i<size+1; i++)
cout << vect[i] << " ";
cout << endl;
int vect2[size+1];
for(int i=0; i<size+1; i++)
vect2[i]=vect[i];
cout << "stampo vect2 (copiato da vect): ";
for(int i=0; i<size+1; i++)
cout << vect2[i] << " ";
cout << endl;
int dimx = sizeof(vect2)/sizeof(vect[0]);
cout << "dimensione vect2: " << dimx;
}
else cout << "out of range." << endl;
return 0;
}