Hola, quisiera si mi programa cumple con lo que me pide el prof.
Crear un programa que pide en input al cliente la dimension del vector de enteros, crea el vector y lo llena con numeros del 1 hasta la dimension ingresada. Una vez que tengo el vector este debe ser pasado a una funcion que invierte el orden.
y aqui mi codigo, no se si cumple con lo que dice y como estructura esta bien???
Gracias
int main()
{
int dim;
cout << "Inserisci la dimensione del vettore:" << endl;
cin >> dim; // Supongamos que ingrese 10
int vettore[dim]; // mi vector es de tamagno 10
cout<<"Vettore Iniziale:"<<endl;
for(int i=1; i<=dim; i++){
vettore[i] = i * 1;
cout << vettore[i] << endl;
}
cout<<"Vettore Invertito:"<<endl;
for(int i=dim; i>0; i--){
cout<<vettore[i]<<" ";
cout<<endl;
}
}
Una cosa, cuando estás dándole los valores al arreglo, te estás comiendo la posición 0, y además que estás pasándote de su tamaño con el "<=", y multiplicar por 1 no tiene ningún sentido. Lo corregí por ti, sería de esta forma:
for(int i = 0; i < dim; i++){
vettore[i] = i + 1;
}
Y para invertirlo, una manera fácil que puedes usar es a través de un arreglo auxiliar, recorrerás del vector original la última posición y se la asignarás a la primera posición de ese arreglo auxiliar, y así sucesivamente hasta llegar a la posición 0 del arreglo original, y la última del arreglo auxiliar. Y luego lo que haces es igualar el vector original a cada uno de los valores del vector auxiliar para que el original sea modificado.
Lo harías así:
void invertir(int vettore[], int tam) {
int vAux[tam]; //Arreglo auxiliar.
int aux = 0; //Contador auxiliar para desplazarnos por vAux.
//Llenando el arreglo auxiliar con los valores invertidos.
for(int i = tam - 1; i >= 0; --i, ++aux) {
vAux[aux] = vettore[i];
}
//Asignándole al arreglo original los valores del arreglo invertido.
for(int i = 0; i < tam; ++i) {
vettore[i] = vAux[i];
}
}
Y ya sólo muestras el arreglo invertido.