Respuesta: Ayuda con un programa en c++ Hola amigo, espero que mi respuesta pueda ayudarte y no sea demasiado tarde...
Para comenzar revise tu código y pude notar que al momento de ingresar los datos lo haces desde la posición 1 del vector, el cual imprimias del mismo modo, bueno no esta mal, claro que funcionaba la primera vez, ya que insertabas la posición a[0] que no tenia dato, entonces cada vez que decias que si y llenar el vector desde adelante iba a pasar lo mismo reemplazabas siempre el a[0] xD. Entonces modifique tu insertar donde ingresabas la primera vez los datos y lo hice de la posicion 0 hasta donde elije el usuario, para que la insercion de datos sea correcta...
Al momento de ingresar nuevos datos modifique a[0]=nv; por un pequeño codigo con el cual hice que funcionará
He aqui el codigo:
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
main()
{ int i,n=0,a[50]={0},resp=0,no,j,nv=0,opc=0,;
do{
cout<<endl;
cout<<"Cuantos elementos deseas ingresar ";
cin>>n;
cout<<endl;
for(i=0;i<n;i++){ //Lo inserte de forma normal desde 0
cout<<"ingresa "<<i<<": ";
cin>>a[i];
}
cout<<endl;
cout<<"La lista queda como"<<endl<<endl;
for(i=0;i<n;i++){ //Imprimir modificado de igual modo
cout<<a[i]<<",";
}
cout<<endl<<endl;
cout<<"___Deseas ingresar un valor a la lista___"<<endl;
cout<< " Ingresa *1* para___si o *2* para _no_"<<endl<<endl;
cin>>resp;
if(resp==1){
do{
cout<<"ingresa el siguiente valor"<<endl;
cin>>nv;
//Aqui modifque tu codigo
n++;
int temp=a[0];
a[0]=nv;
int temp2, temp3;
temp3=a[1];
for(i=1;i<=n;i++){
if(i==n) a[n] = temp3;
else{
temp2=a[i+1];
a[i+1]=temp3;
temp3=temp2;
}
}
a[1]=temp;
//termina la modificacion =)
for(i=0;i<n;i++){
cout<<a[i]<<",";
}
cout<<"deseas ingresar otro valor"<<endl<<endl;
cin>>opc;
}while(opc==1);
}
else {
cout<<"";
}
getch();
system("cls");
cout<<endl<<endl;
cout<<"Deseas realizar nuevamente la operacion con otros valores"<<endl;
cout<<endl;
cout<<"Ingresa *1* para --si-- o *2* para --no-- ";
cin>>opc;
}while(opc==1);
getch();
}
-Como veras tome en cuenta el tamaño del vector, como sabes al insertar un nuevo dato, el vector tendra otro n como limite, para que asi puedas imprimirlo, lo unico que hice fue iterarlo cada vez que se elegia insertar (n++)
-Luego antes de ingresar el nuevo valor en la posicion 0 me asegure de guardarlo en un temporal de nombre temp, para así guardar el a[0] antes de ser modificado por el nuevo valor insertado...
-Veras que hay dos variables que serán temporales dentro del ciclo o bucle siguiente, como ya se modifico a[0] con el nuevo valor, ahora almaceno del mismo modo a[1] en temp3.
-El for comienza en 1 ya que no es necesario comenzar de 0 porque ya se modifico, este va de 1 hasta ser exactamente igual a n.
-Dentro hay un if y un else, el if lo uso como restriccion en caso llegue i a ser igual a n, y esto por que? simplemente para evitar irme mas adelante, donde obviamente no hay nada, ya que como verás en el else se hace una serie intercambios de valores.
-El else es muy simple, lo unico que hice fue almacenar la siguiente posicion a la actual, ya que esta sera modificada por el valor actual, en a[i+1] = temp3, se modifica con el valor anterior (la primera vez recibe temp3 se inicializo con a[1], como esta arriba, y solo en la primera iteracion del for tomara ese valor), ahora aca entra en temp3=temp2 esto lo hago para dar uno nuevo valor a temp3, y a la siguiente vez que entre en el bucle, el temp3 aun mantendra el valor de temp2 de la anterior iteracion, con lo cual se asegura el cambio de valores.
-Finalmente a[1] es inicializado con el temp que tenia el valor de la posicion 0 inicial del vector
Espero haberte ayudado, si algo no quedo muy claro... preguntame
Suerte!!!
PD: Mire tan rápido tu código que hice la modificación de la inserción y no me había fijado de que llenabas desde 1, siempre el a[0] se actualizaba, ya me estaba asustando de porque no podia solucionar el problema =P jajaja |