online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code    Language
// Problema No. 1 "Calculadora de matrices con punteros" /* Se realizo una calculadora de matrices en C++ utilizando punteros, en el cual se desarrollo un menú donde se muestra al usuario las diferentes opciones de operaciones arimeticas que podemos hacer con las matrices. Las cuales son las siguientes: Suma, Resta, Multiplicacion y Division. Ademas le damos la opcion al usuario al finalizar de realizar la operacion de volver a menu principal o salir del programa. Solo se utilzo lo aprendido a lo largo del curso. */ #include<iostream> #include<conio.h> using namespace std; // Creacion de variables y punteros de tipo global float **puntero_matriz1, **puntero_matriz2, **matriz_final; int N, M; // Prototipos de funciones. void Menu(); void PedirDatos(); void SumarMatriz(float **, float **, float **, int N, int M); void RestarMatriz(float **, float **, float **, int N, int M); void MultiplicarMatriz(float **, float **, float **, int N, int M); void DivisionMatriz(float **, float **, float **, int N, int M); void ImpresionMatriz(float **, float **, float **, int N, int M, int opc); int main(){ // Llamamos a la funcion "Menu" Menu(); getch(); return 0; } // Creacion de funciones. void Menu(){ int opcion; char respuesta; // Creamos un ciclo do-while para saber si el usuario desea volver al menu principal do{ // Le mostramos el menu de opciones al usuario cout << "Bienvenido a esta calculadora de matrices." << endl; cout << "1. Suma de matrices." << endl; cout << "2. Resta de matrices." << endl; cout << "3. Multiplicacion de matrices." << endl; cout << "4. Division de matrices. " << endl; // Le pedimos al usuario que seleccione una opcion cout << "\nSeleccione una opcion: "; cin >> opcion; switch(opcion){ case 1: // Limpiamos la pantalla system("Cls"); // Llamamos a la funcion "PedirDatos" PedirDatos(); // Llamamos a la funcion "SumarMatriz" SumarMatriz(puntero_matriz1, puntero_matriz2, matriz_final, N, M); // Volvemos a limpiar la pantalla system("Cls"); // Llamamos a la funcion "ImpresionMatriz" ImpresionMatriz(puntero_matriz1, puntero_matriz2, matriz_final, N, M, opcion); break; case 2: // Limpiamos la pantalla system("Cls"); // Llamamos a la funcion "PedirDatos" PedirDatos(); // Llamamos a la funcion "RestarMatriz" RestarMatriz(puntero_matriz1, puntero_matriz2, matriz_final, N, M); // Volvemos a limpiar la pantalla system("Cls"); // Llamamos a la funcion "ImpresionMatriz" ImpresionMatriz(puntero_matriz1, puntero_matriz2, matriz_final, N, M, opcion); break; case 3: // Limpiamos la pantalla system("Cls"); // Llamamos a la funcion "PedirDatos" PedirDatos(); // Llamamos a la funcion "MultiplicarMatriz" MultiplicarMatriz(puntero_matriz1, puntero_matriz2, matriz_final, N, M); // Volvemos a limpiar la pantalla system("Cls"); // Llamamos a la funcion "ImpresionMatriz" ImpresionMatriz(puntero_matriz1, puntero_matriz2, matriz_final, N, M, opcion); break; case 4: // Limpiamos la pantalla system("Cls"); // Llamamos a la funcion "PedirDatos" PedirDatos(); // Llamamos a la funcion "DivisionMatriz" DivisionMatriz(puntero_matriz1, puntero_matriz2, matriz_final, N, M); // Volvemos a limpiar la pantalla system("Cls"); // Llamamos a la funcion "ImpresionMatriz" ImpresionMatriz(puntero_matriz1, puntero_matriz2, matriz_final, N, M, opcion); break; default: // Mensaje de error cout << "\nESTA OPCION NO EXISTE." << endl; break; } // Le preguntamos al usuario si desea volver al menu principal cout << "\nDesea regresar al menu principal? (Si=S/No=N): "; cin >> respuesta; // Si respuesta es "S o s" volvemos al menu principal if(respuesta == 'S' || respuesta == 's'){ // Limpiamos la pantalla system("Cls"); } // Liberamos la memoria de la matriz 1 for(int i=0; i<N; i++){ delete[] puntero_matriz1[i]; } delete[] puntero_matriz1; // Liberamos la memoria de la matriz 2 for(int i=0; i<N; i++){ delete[] puntero_matriz2[i]; } delete[] puntero_matriz2; // Liberamos la memoria de la matriz final for(int i=0; i<N; i++){ delete[] matriz_final[i]; } delete[] matriz_final; }while(respuesta == 'S' || respuesta == 's'); } void PedirDatos(){ do{ // Le pedimos al usuario el numero de filas cout << "Digite el numero de filas de la matriz: "; cin >> N; // Le pedimos al usuario el numero de columnas cout << "Digite el numero de columnas de la matriz: "; cin >> M; // Comparamos el numero de filas y columnas if(N!=M){ cout << "El numero de filas y columnas para la matriz debe ser igual." << endl; cout << "" << endl; } }while(N!=M); // Reservamos memoria para la matriz 1 puntero_matriz1 = new float*[N]; // Reservando memoria para las filas for(int i=0; i<N; i++){ puntero_matriz1[i] = new float[M]; // Reservando memoria para las columnas } // Mensaje en pantalla cout << "\nLlene la Matriz 1: " << endl; // Le pedimos al usuario los valores de los elementos de la matriz 1 for(int i=0; i<N; i++){ for(int j=0; j<M; j++){ cout << "Digite el numero[" << i << "][" << j << "] = "; cin >> *(*(puntero_matriz1+i)+j); // Es como decir puntero_matriz1[i][j] } } // Reservamos memoria para la matriz 2 puntero_matriz2 = new float*[N]; // Reservando memoria para las filas for(int i=0; i<N; i++){ puntero_matriz2[i] = new float[M]; // Reservando memoria para las columnas } // Mensaje en pantalla cout << "\nLlene la Matriz 2: " << endl; // Le pedimos al usuario los valores de los elementos de la matriz 2 for(int i=0; i<N; i++){ for(int j=0; j<M; j++){ cout << "Digite el numero[" << i << "][" << j << "] = "; cin >> *(*(puntero_matriz2+i)+j); // Es como decir puntero_matriz2[i][j] } } // Reservamos memoria para la matriz final matriz_final = new float*[N]; // Reservando memoria para las filas for(int i=0; i<N; i++){ matriz_final[i] = new float[M]; // Reservando memoria para las columnas } } void SumarMatriz(float **puntero_matriz1, float **puntero_matriz2, float **matriz_final, int N, int M){ // Sumamos las matrices for(int i=0; i<N; i++){ for(int j=0; j<M; j++){ *(*(matriz_final+i)+j) = *(*(puntero_matriz1+i)+j) + *(*(puntero_matriz2+i)+j); } } } void RestarMatriz(float **puntero_matriz1, float **puntero_matriz2, float **matriz_final, int N, int M){ // Restamos las matrices for(int i=0; i<N; i++){ for(int j=0; j<M; j++){ *(*(matriz_final+i)+j) = *(*(puntero_matriz1+i)+j) - *(*(puntero_matriz2+i)+j); } } } void MultiplicarMatriz(float **puntero_matriz1, float **puntero_matriz2, float **matriz_final, int N, int M){ // Multiplicamos las matrices for(int i=0; i<N; i++){ for(int j=0; j<M; j++){ *(*(matriz_final+i)+j) = *(*(puntero_matriz1+i)+j) * *(*(puntero_matriz2+i)+j); } } } void DivisionMatriz(float **puntero_matriz1, float **puntero_matriz2, float **matriz_final, int N, int M){ // Dividimos las matrices for(int i=0; i<N; i++){ for(int j=0; j<M; j++){ *(*(matriz_final+i)+j) = *(*(puntero_matriz1+i)+j) / *(*(puntero_matriz2+i)+j); } } } void ImpresionMatriz(float **puntero_matriz1, float **puntero_matriz2, float **matriz_final, int N, int M, int opc){ // Mensaje en pantalla cout << "La matriz 1 es: " << endl; // Imrpimimos la matriz 1 for(int i=0; i<N; i++){ for(int j=0; j<M; j++){ cout << *(*(puntero_matriz1+i)+j) << " "; } cout << "" << endl; } // Mensaje en pantalla cout << "\nLa matriz 2 es: " << endl; // Imprimimos la matriz 2 for(int i=0; i<N; i++){ for(int j=0; j<M; j++){ cout << *(*(puntero_matriz2+i)+j) << " "; } cout << "" << endl; } // Comparamos la opcion para saber que mensaje en pantalla mostrar if(opc==1){ cout << "\nLa suma de las dos matrices es: " << endl; } else if(opc==2){ cout << "\nLa resta de las dos matrices es: " << endl; } else if(opc==3){ cout << "\nLa multiplicacion de las dos matrices es: " << endl; } else if(opc==4){ cout << "\nLa division de las dos matrices es: " << endl; } // Imrpimimos la matriz que suma las dos matrices for(int i=0; i<N; i++){ for(int j=0; j<M; j++){ cout << *(*(matriz_final+i)+j) << " "; } cout << "" << endl; } }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue