[ Foro de C++ ]
Hacer un programa q invierta los elementos de la diagonal de una matriz cuadrada de orcen n
#include<stdio.h>
#include<conio.h>
int main()
{
int i,j,k,a,b,n,p,q;
float x[100][100];
float y[100][100];
printf("ingresar el orden de la matriz\n");
scanf("%d",&n);
for(i=1; i<=n;i++){
for(j=1; j<=n;j++){
printf("ingresar x[%d][%d]: ",i,j);
scanf("%f",&x[i][j]);
}
}
for(p=1; p<=n;p++){
for(q=1; q<=n;q++){
if(p=q)
y[n+1-p][n+1-p]=x[p][p];
else
y[p][q]=x[p][q];
}
}
for(a=1; a<=n;a++){
printf("\n");
for(b=1; b<=n;b++)
printf("%f ",y[a][b]);
}
getch();
}
cuando corro el programa, los elementos de la diagonal principal se intercambian, pero el resto de elementos se convierten en cero y no me lo explico
Fallo grave pero frecuente:
if(p=q)
es una asignación, cuando debería ser una comparación:
if(p==q)
La mayoría de compiladores modernos te muestran un "warning", avisando de que "quizás no desees hacer esta asignación" (possibly unintendede assignment). Deberías plantearte cambiar de entorno de desarrollo.
Por cierto, lo has publicado en el foro de C++, pero todo lo que has puesto ahí es C, no C++. No usas nada que haya en C++ y no en C, ni siquiera "cin" y "cout".
recien me doy cuenta, habia olvidado ese detalle
respecto a lo del C O C++, estos son problemas de mi curso de programacion donde uso el dev c++ y los profes resuelven de esa manera y con la libreria stdio.h, no usan iostream
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)