elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda para entender el programa.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda para entender el programa.  (Leído 1,838 veces)
Estudiante000000

Desconectado Desconectado

Mensajes: 38


Ver Perfil
Ayuda para entender el programa.
« en: 16 Noviembre 2018, 03:06 am »

Buenas noches quisiera saber el paso a paso de este programa osea en frio , el programa haya el determinante de una matriz cuadrada de 3x3 , pero quisiera saber el paso  a paso del programa , puse comentarios en las linea de codigo que no entiendo del programa , muchas gracias

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4. int main()
  5. {
  6.  
  7. int matriz[6][4];
  8. int i, j;
  9. int valor1=0, valor2=0, delta, aux;
  10.  
  11. for (i = 1; i <= 3; i = i + 1)
  12. {
  13.  for (j = 1; j <= 3; j = j + 1)
  14.  {
  15.   system("cls");
  16.   cout << "Ingrese valor (" << i << "," << j << ")= ";
  17.   cin >> matriz[i][j];
  18.  }
  19. }
  20.  
  21. for (i = 4; i <= 5; i = i + 1)
  22. {
  23.  
  24.   matriz[i][1] = matriz[i - 3][1];
  25.   matriz[i][2] = matriz[i - 3][2];
  26.   matriz[i][3] = matriz[i - 3][3];
  27. }
  28.  
  29.  
  30. for (i = 1; i <= 3; i = i + 1)
  31. {
  32.  
  33.  aux = matriz[i][1] * matriz[i + 1][2] * matriz[i + 2][3];
  34.  valor1 = valor1 + aux;
  35.  aux = matriz[i][3] * matriz[i + 1][2] * matriz[i + 2][1];
  36.  valor2 = valor2 + aux;
  37. }
  38.  
  39. delta = valor1 - valor2;
  40.  
  41. system("cls");
  42. for (i = 1; i <= 3; i = i + 1)
  43. {
  44.  cout << "|" << matriz[i][1] << " , " << matriz[i][2] << " , " << matriz[i][3] << "|" <<endl ;
  45. }
  46.  
  47. cout << "La resuesta es: " << delta<< endl;
  48. system("PAUSE");
  49. return 0;
  50.  
  51. }


« Última modificación: 19 Noviembre 2018, 04:04 am por Estudiante000000 » En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Ayuda para entender el programa.
« Respuesta #1 en: 16 Noviembre 2018, 03:43 am »

En primer lugar preguntarte si estos programas los has implementado tú o son códigos que has obtenido de algún otro sitio. Ya que tanto este como el otro programa que has comentado hace un rato y que vengo de responder tienen errores básicos de indexación. Por lo tanto te recomendaría que le echarás un vistazo a ese punto ya que es fundamental para casi cualquier programa.

Lo segundo recalcar que los índices en C++ empiezan en 0, no en 1 como estás teniendo en cuenta; otro dato que debes tener en cuenta.

Y te recomiendo que empieces corrigiendo estos errores, y acostumbrarte a no usar "números mágicos" como te he explicado en el otro post ya que dificulta un poco el entendimiento del programa.

Por ejemplo si sabes que la matriz es 3x3 no crees de manera aleatoria una matriz de 6x4. En todo caso podrías crear una matriz más grande si no sabes cuantas filas o columnas vas a utilizar (y usar dos variables para recorrer solo las posiciones útiles de la matriz, esto es habitual cuando trabajas con matrices estáticas de las que desconoces su tamaño) para ello:

Código
  1. const int TAM = 10;
  2. int matriz[TAM][TAM];
  3. int fila_util = 3;
  4. int col_util = 3;

Te comento que a cada posición de una matriz se accede como matriz[fila][columna] tanto para leer su contenido como para escribir en ella. Dicho esto empieza haciendo programas más pequeños y sencillos para familiarizarte con ello y te será más sencillo que querer abarcar programas con más código como estos.


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Estudiante000000

Desconectado Desconectado

Mensajes: 38


Ver Perfil
Re: Ayuda para entender el programa.
« Respuesta #2 en: 16 Noviembre 2018, 07:15 am »

Hola , bueno estos codigos los pone el profesor para que lo analizemos  , se que estos programas son algo confuso totalmente de acuerdo ,pero por eso pongo en los comentarios mis dudas se que hace el programa pero en donde puse los comentarios seria fantastisco que me aclararas esas dudas gracias amigo.
En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Ayuda para entender el programa.
« Respuesta #3 en: 16 Noviembre 2018, 08:36 am »

Dudo mucho que a un nivel de universidad se cometan errores de indexación como estos. No sé que nivel tendréis ahora mismo ya que si estáis empezando igual lo pone para que os deis cuenta de los errores que contiene dicho código. Pero me parece un poco extraño que haga eso, igual depende del país o de la universidad, o del propio profesor...
Dicho esto vamos a ver que se puede hacer con el código.

Código
  1. for (i = 1; i <= 3; i = i + 1){
  2.  for (j = 1; j <= 3; j = j + 1){
  3.   system("cls");
  4.   cout << "Ingrese valor (" << i << "," << j << ")= ";
  5.   cin >> matriz[j];
  6.  }
  7. }

Lo primero es que este bloque tiene toda la pinta de ser para introducir los valores a la matriz pero en ese caso la línea 5 debería ser:
Código
  1. cin >> matriz[i][j];

Observando el segundo bloque en el que tienes dudas, donde aparecen los auxiliares creo entender que cuando sólo se pone un índice a la matriz es porque es igual el primero que el segundo; es decir, que matriz[1] creo que se refiere a matriz[1][1]. Dando esto por supuesto en todo el programa:

Código
  1. for (i = 4; i <= 5; i = i + 1) {
  2.   matriz[1] = matriz[i - 3][1];  
  3.   matriz[2] = matriz[i - 3][2];
  4.   matriz[3] = matriz[i - 3][3];
  5. }

En este bucle se haría una primera iteración en la que:
matriz[1][1] = matriz[1][1]
matriz[2][2] = matriz[1][2]
matriz[3][3] = matriz[1][3]
Es decir se copiarían los valores de la primera fila en la diagonal principal de la matriz y en la segunda iteración con i = 5 quedaría:
matriz[1][1] = matriz[2][1]
matriz[2][2] = matriz[2][2]
matriz[3][3] = matriz[2][3]
Por lo que se copiarían los valores de la segunda fila en la diagonal (unas operaciones un tanto absurdas creo yo pero eso es lo que hace literalmente).

Finalmente el segundo bucle for asigna un valor indeterminado a las variables ya que se cuando la i vale más de 1 se accede a posiciones de la matriz que no han sido escritas por lo que pueden contener basura (dudo si en tal caso siempre valdrían 0 esas posiciones pero creo que no, que pueden tener cualquier valor basura ya que la matriz no ha sido inicializada entera a 0).

Conclusión: Si estos códigos son de un profesor de universidad, estoy entre dudar de mis conocimientos adquiridos hasta ahora en C++ o dudar de los conocimientos de ese profesor. Si al final le encuentras sentido a estos códigos me gustaría que me lo hicieras saber por si he pasado algo por alto.
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda para entender netbeans
Java
Electronik 3 6,069 Último mensaje 15 Octubre 2009, 00:01 am
por Electronik
ayuda con codigo para entender
Ingeniería Inversa
DragonsWP 1 2,756 Último mensaje 31 Diciembre 2009, 09:47 am
por MCKSys Argentina
[ActionScript] Ayuda para entender codigo
Programación General
Sancho.Mazorka 0 2,193 Último mensaje 1 Noviembre 2010, 03:36 am
por Sancho.Mazorka
Ayuda para entender este virus
Análisis y Diseño de Malware
null2304 3 3,289 Último mensaje 15 Febrero 2011, 00:44 am
por null2304
Ayuda para entender un programa de Arduino
Dudas Generales
jma 3 840 Último mensaje 12 Noviembre 2024, 14:19 pm
por Conejo Blanco
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines