Porque se cambian los elementos de mi vector?
Publicado por Frant Perez (1 intervención) el 03/07/2022 09:28:47
En un problema dónde me pedían que recorra una matriz en forma de espiral y columna, me di cuenta que cuando escribía la impresión de mi vector v1[ ] se cambian los datos si los coloco en otra posición¿Por qué se cambian si no hay algo que afecte al v1[ ]
.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <iomanip>
using namespace std;
int main(){
srand(time(NULL));
int f,c,aux=0;
cout<<"Ingrese el nro de filas de la matriz: ";cin>>f;
cout<<"Ingrese el nro de columnas de la matriz: ";cin>>c;
int v[f][c],v1[f*c+5],v2[f*c];
cout<<endl<<"Sea la matriz: "<<endl;
for(int i=0;i<f;i++){
for(int j=0;j<c;j++){
v[i][j]=rand()%199-99;cout<<setw(4)<<v[i][j];
}cout<<endl;
}
int i=0,j=0,min,aux2=0;
if(f<c){min=f;
}else{min=c;}
for(int k=0;k<(min+1)/2;k++){
for(j;j<c-k;j++){
v1[aux]=v[i][j];aux++;aux2++;
}j--;aux--;
if(aux2!=1){aux2=0;
for(i;i<f-k;i++){
v1[aux]=v[i][j];aux++;aux2++;
}i--;aux--;
if(aux2!=1){aux2=0;
for(j;j>=k;j--){
v1[aux]=v[i][j];aux++;aux2++;
}j++;aux--;
if(aux2!=1){aux2=0;
for(i;i>=1+k;i--){
v1[aux]=v[i][j];aux++;
}i++;aux--;}}}}cout<<endl;
cout<<"El recorrido en forma de espiral es: ";
for(int l=0;l<f*c-1;l++){
cout<<v1[l]<<" , ";
}cout<<v1[f*c-1]<<"";cout<<endl<<endl;
i=0,j=0,aux=0;
bool b=true;
for(int k=0;k<(c+1)/2;k++){
for(i;i<f;i++){
v2[aux]=v[i][j];aux++;
}i--;aux--;
if(j+1==c){b==false;}
if(b){
for(j;j<2+2*k;j++){
v2[aux]=v[i][j];aux++;
}j--;aux--;
for(i;i>=0;i--){
v2[aux]=v[i][j];aux++;
}i++;aux--;
if(j+1==c){b==false;}
if(b){
for(j;j<3+2*k;j++){
v2[aux]=v[i][j];aux++;
}j--;aux--;
}}}
cout<<"El recorrido de columna a columna es: ";
for(int l=0;l<f*c-1;l++){
cout<<v2[l]<<" , ";
}cout<<v2[f*c-1];
cout<<endl<<endl<<"El recorrido en forma de espiral es: ";
for(int l=0;l<f*c-1;l++){
cout<<v1[l]<<" , ";
}cout<<v1[f*c-1]<<"";cout<<endl<<endl;
return 0;
}
Valora esta pregunta


0