Hola buenas, vengo aquí para ver si pueden ayudarme con un problema que seguro que es una tontería pero con la tontería llevo 4 horas rompiéndome la cabeza.
Mi duda es la siguiente:
Si tengo dentro de un bucle otro bucle, es decir:
for( i=0 ; i < tam ; i++)
{
for( j = 0 ; j < tam ; j++ )
{
// instrucciones
cout << " i es " << i << endl;
¿Por qué al pedir que me muestre el valor de i dentro del segundo bucle me dice que es 0 todo el tiempo?
En teoría tendría que darme 0, 1, 2,.., hasta tam
pero me da 0
Tengo el código aquí abajo, espero que me ayudéis GRACIAS
Código:
#include <iostream> #include <stdlib.h> using namespace std; const int MAX = 100; typedef int Vector[MAX]; int LeerVector(Vector & v1, int & tam, int & i, int & j, int & tam2); void MostrarVector(Vector & v1, int & tam); void EliminarRepetidos( Vector & v1, int & tam2, bool & cond); int main() { Vector v1; int tam = 0; int tam2 = 0; bool cond = false; cout << " Dime el tamanyo del vector " << endl; cin >> tam; int i = 0; int j = 0; tam2 = tam; int tam3 = tam; i = LeerVector(v1, tam, i, j, tam2); MostrarVector(v1, tam2); if(v1[0] == v1[tam - 1]) cond = true; EliminarRepetidos(v1, tam2, cond); cout << " \n El vector sin repeticiones es : \n " << endl; MostrarVector(v1, tam2); cout << " El tamanyo de el vector sin procesar si tiene repeticiones es : " << tam3 << endl; cout << " El tamanyo de el vector procesado es " << tam2 << endl; system("pause"); return 0; } int LeerVector(Vector & v1, int & tam, int & i, int & j, int & tam2) { while( tam > 0) { for(i; i < tam2; i++) { v1[i] = rand() % 100; for(j; j < tam2 ; j++) { //cout << " la i es " << i << endl; if( (v1[i] == v1[j]) && (i != j)) { i = i - 1; j = j - 1; LeerVector(v1, tam, i , j, tam2); } } tam = tam -1; } } return i; } void MostrarVector(Vector & v1, int & tam) { int i; char x; cout << " Para mostrar el vector en horizontal pulse 'h' ( vectores pequenyos) \n O en vertical pulse 'v' (grandes) . " << endl; cin >> x; if( x == 'v') { cout << " \n El vector aleatorio sin repeticiones es : \n " << endl; for(i = 0; i < tam; i++ ) cout << " [ " << v1[i] << " ] " << endl; } else if( x == 'h') { cout << " \n El vector introducido es : \n " << endl; for(i = 0; i < tam; i++ ) cout << " [ " << v1[i] << " ] "; cout << endl; } return; } void EliminarRepetidos( Vector & v1, int & tam2, bool & cond) { int i, j, k; if(cond) while(v1[0]!= v1[tam2]) { tam2--; } for(i = 0; i < tam2 ; i++) { for( j = 0; j < tam2; j++) { if( v1[i] == v1[j] && (i != j)) { for( k = j; k < tam2 ; k++) { v1[k] = v1[k+1]; if((k+1) > tam2) v1[k] = v1[k]; } tam2--; } } } return; }