Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: Dominic91 en 28 Agosto 2019, 05:03 am



Título: Duda con declaraciones
Publicado por: Dominic91 en 28 Agosto 2019, 05:03 am
Que tal amigos, buenas noches, soy nuevo en este foro de igual forma soy nuevo en programación del lenguaje C++, tengo una duda la cual espero puedan aclarar, realizando la codificación para un programa modular, me encuentro con un inconveniente que no se si sea por que hay un error en la codificación o el programa "DEV C++" no funcione al 100% bien.

el programa es:

Código
  1. #include<iostream> /*Entrada y salida de datos*/
  2. #include<stdio.h>/* Biblioteca de entrada y salida estándar*/
  3. #include<stdlib.h>/* Biblioteca para las funciones del sistema*/
  4. #include<math.h> /* Biblioteca para utilizar funciones matematicas*/
  5. #include<conio.h>
  6.  
  7. int elegir_operacion();
  8. using namespace std;
  9. //Prototipos de funcion
  10. int elegir_operacion()
  11. { //Se designa el primer mensaje de pantalla junto con la indicacion de seleccion de una operacion matematica//
  12.    int elegir_provisional;
  13.    cout<< "Elige una de estas Operaciones matematicas:"<<endl<<"1. SUMA"<<endl<<"2. RESTA"
  14. <<endl<<"3. MULTIPLICACION"<<endl<<"4. DIVISION"<<endl;
  15.    cin>>elegir_provisional;
  16.    return elegir_provisional;}
  17.  
  18.  
  19. int main(){
  20.    int vector_A[10], vector_B[10], vector_C[10], suma=0, resta=0, multiplica=0, division=0;
  21.    int elegir;
  22.    int i;
  23.   elegir=elegir_operacion();
  24. if (elegir==1 or elegir==2 or elegir==3 or elegir==4){
  25. cout<<"ingrese los 10 valores del vector 1:\n"<<endl;
  26. for(i=0;i<10;i++){
  27. cout<<"Ingrese los valores de cada posicion:\n"<<i<<":"<<endl;
  28. cin>>vector_A[i];
  29. }
  30. cout<<"ingresar los 10 valores del vector 2:\n"<<endl;
  31.    for(i=0;i<10;i++){
  32.    cout<<"Ingrese los valores de cada posicion:\n"<<i<<":"<<endl;
  33.    cin>>vector_B[i];
  34. cout<<endl<<endl<<"El resultado de la suma de los vectores es:\n"<<suma;
  35. cout<<endl<<endl<<"El resultado de la resta de los vectores es:\n"<<resta;
  36. cout<<endl<<endl<<"El resultado de la multiplicacion de los vectores es:\n"<<multiplica;
  37. cout<<endl<<endl<<"El resultado de la division de los vectores es:\n"<<division;}
  38.     }    
  39.   }
  40.  
  41.  
  42.    int calcularSuma(int vector_A[],int vector_B[]){
  43.    if(elegir==1){
  44. int suma;{
  45. cout<<endl<<endl<<"El resultado de la suma de los vectores es:\n"<<suma;
  46. for(int i=0;i<10;i++){
  47. vector_C[i]=vector_A[i]+vector_B[i];
  48. cout<<i<<"="<<vector_C[i]<<endl;}
  49. return suma; }
  50.    }
  51.    }
  52.  
  53.  
  54.    int calcularResta(int vector_A[],int vector_B[]){
  55.    if(elegir==2){
  56. int resta;{
  57. cout<<endl<<endl<<"El resultado de la resta de los vectores es:\n"<<resta;
  58. for(int i=0;i<10;i++){
  59. vector_C[i]=vector_A[i]-vector_B[i];
  60. cout<<i<<"="<<vector_C[i]<<endl;}
  61.    return resta; }
  62.    }
  63. }
  64.  
  65.  
  66.    int calcularMultiplicacion(int vector_A[],int vector_B[]){
  67.    if(elegir==3){
  68. int multiplica;{
  69. cout<<endl<<endl<<"El resultado de la multiplicacion de los vectores es:\n"<<multiplica;
  70. for(int i=0;i<10;i++){
  71. vector_C[i]=vector_A[i]*vector_B[i];
  72. cout<<i<<"="<<vector_C[i]<<endl;}
  73. return multiplica; }
  74.    }
  75.    }
  76.  
  77.  
  78.    int calcularDivision(int vector_A[],int vector_B[]){
  79.    if(elegir==4){
  80. int division;{
  81. cout<<endl<<endl<<"El resultado de la division de los vectores es:\n"<<division;
  82. for(int i=0;i<10;i++){
  83. vector_C[i]=vector_A[i]/vector_B[i];
  84. cout<<i<<"="<<vector_C[i]<<endl;}
  85. return division; }
  86.    }
  87. }
  88.  
el programa me dice que "vector_C" y "elegir" no han sido declarados, ya eh realizado ejercicios similares y no me habian salido errores, hasta ahora, es un poco raro ya que tengo un programa igual pero ese si lo ejecuta bien

Mod: Procura usa etiquetas GeSHi cuando publiques codigo


Título: Re: Duda con declaraciones
Publicado por: engel lex en 28 Agosto 2019, 06:23 am
no has dicho donde te da error pero me imagino que en la linea 43 te da el primero

efectivamente elegir no está declarado...

en programacion están los scopes (los alcances, usualmente definidos por los {}) elegir está en un scope diferentes al de las funciones, por lo que el mismo no existe en ellas

un ejemplo

Código:
int variable_global = 0;

int prueba(){

  //aqui existe variable_global ,pero no variable_local

}

int main(){
  int variable_local = 1;
  prueba();

}





Título: Re: Duda con declaraciones
Publicado por: @XSStringManolo en 28 Agosto 2019, 13:38 pm
Mete las líneas 20, 21 y 22 antes de la línea 20.
Es decir, declara las variables como "globales" para que se pueda tener acceso desde cualquier función del programa. Al declarar variables, arrays, constantes o lo que sea dentro de una función (en tu caso main) estas se crean dentro de main y solo son accesibles por la función main. En caso de que la función que contiene las variables retorne o se acabe su llamada, todo lo que contiene es destruido. Ejemplo:


Código
  1. #include ...
  2.  
  3. using namespace std;
  4.  
  5.  
  6. /********PROTOTIPOS**********/
  7. int funcionEjemplo();
  8.  
  9.  
  10.  
  11. /*********VARIABLES*********/
  12. int variableGlobal = 0;
  13.  
  14.  
  15.  
  16. /******FUNCION*MAIN******/
  17. int main()
  18. {
  19. int ABC = 0;
  20. ++variableGlobal;
  21. ABC = funcionEjemplo();
  22.  
  23. return 0;
  24. }
  25.  
  26.  
  27. /****FUNCIONES****/
  28. int funcionEjemplo()
  29. {
  30. int ABC = 7;
  31. int RESULTADO = ABC + 1;
  32. ++variableGlobal;
  33. return RESULTADO;
  34. }

-Se llama a la función main de primera.
-Se crea la variable local de main ABC y se le asigna el valor 0.
-Se llama a la función funcionEjemplo() para asignarle el valor retornado a ABC.
-Se crea la variable local de funcionEjemplo ABC dentro de funcionEjemplo y se le da valor 7.
-Se crea la variable local RESULTADO de funcionEjemplo y se le da el valor 8.
-Se retorna el valor de RESULTADO.
-Se destruyen las variables locales ABC y RESULTADO de funcionEjemplo.
-Se da el valor retornado a la variable ABC local de main.
Si te fijas hay 2 variables ABC distintas que se llaman igual. Para simplificar mentalmente, cada funcion es como un programa externo. Si quieres que ambos usen la misma variable ABC y no 2 distintas debes declararla fuera de las funciones y después accedes a ella desde donde quieras. De la forma que se hace con variableGlobal, a la que si se puede acceder desde ambas funciones.

A cerca de otras cosas de tu código:
Puedes ordenarlo y organizarlo mucho mejor escribiendo 4 o 5 líneas de nada.
-Haces el prototipo/declaración de función un par de lineas antes de definirla. El prototipo sobra si colocas la definición antes de main. Te recomiendo organizar los prototipos antes de main, y las definiciones y clases debajo de la función main(). Así es más sencillo para quien lea el código seguir el flow del programa/ orden de ejecución.

Estás incluyendo muchas librerías que no necesitas. Las .h standart suelen ser del lenguaje C y las que no llevan .h de C++.
En el codigo que pusiste te sobran todas las librerías/bibliotecas menos la de iostream.

Para hacer pausa al final del programa puedes usar cin.get(); (es de iostream) en vez de la llamada a system("pause"); Así te ahorras usar una librería para llamar solo al sistema.

En la línea 24 estás escribiendo literalmente or. Usa || en su lugar.

Estás usando la palabra Vector como nombre para un Array. En español mucha documentaciòn le llama vector a un array y matriz a un vector. Me parece que lleva a confusión. Principalmente porque hay un contenedor en C++ en la Standart Template Library que se llama vector. Yo te aconsejo que los llames Array en vez de vectores. Un array es lo mismo que un vector con la diferencia que un array tienes que decir que tamaño exacto va a tener. Y un vector se las arregla para poder aumentar el tamaño automáticamente. Esto ya lo verás.

Cuando haces cin >> el usario va a escribir un número en pantalla. Cuado tu escribas el siguiente cout, va a quedarse pegado el texto que imprimas con el cout al número que puso el usuario. En consola verías:
Hola, pon un número
1Has puesto el número 1.

Si le metes un endl al principio del cout se vería así:
Hola pon un número
1
Has puesto el número 1.

Lo soluciones así:
cout << endl << "ingrese los 10 valores del vector 1:\n"<<endl;
Esa \n es similar a endl y el resultado mostrado es el mismo. En C no existe endl asique se usa \n. No lo utilces en C++.

Con Vector[10] en realidad guardas 11 valores. El 0 se cuenta. 0 1 2 3 4 5 6 7 8 9 10

Tiene varios fallos más. No te recomiedo seguir el tutorial o los recursos que estás siguiendo para aprender. Si entiendes inglés leete el Apress Learn C++ for game developers o cualquiera de los libros para "principiantes" que están en el listado de stackoverflow. También tienes un curso de C++ en cconclase.com hay mucho material bueno.

Creaste el post en programación general. Hay un subforo para C++. Ahí también tienes muchos recursos para aprender.


Título: Re: Duda con declaraciones
Publicado por: Becerra en 28 Agosto 2019, 15:55 pm
Hola


Con Vector[10] en realidad guardas 11 valores. El 0 se cuenta. 0 1 2 3 4 5 6 7 8 9 10


Eso no es correcto, guardas 10 valores, del 0 al 9. El que el índice empiece desde el 0 no te da un elemento más del array.

Un saludo


Título: Re: Duda con declaraciones
Publicado por: Dominic91 en 28 Agosto 2019, 17:41 pm
no has dicho donde te da error pero me imagino que en la linea 43 te da el primero

efectivamente elegir no está declarado...

en programacion están los scopes (los alcances, usualmente definidos por los {}) elegir está en un scope diferentes al de las funciones, por lo que el mismo no existe en ellas

un ejemplo

Código:
int variable_global = 0;

int prueba(){

  //aqui existe variable_global ,pero no variable_local

}

int main(){
  int variable_local = 1;
  prueba();

}






efectivamente el error empieza desde la linea 43, solo que no me esta tomando en cuenta solo esas 2 declaraciones cuando ya estan declaradas, el if(elegir==1){   realice lo que me comentaste pero sigue marcando error, y el vector_c igual


Título: Re: Duda con declaraciones
Publicado por: Dominic91 en 28 Agosto 2019, 17:45 pm
Mete las líneas 20, 21 y 22 antes de la línea 20.
Es decir, declara las variables como "globales" para que se pueda tener acceso desde cualquier función del programa. Al declarar variables, arrays, constantes o lo que sea dentro de una función (en tu caso main) estas se crean dentro de main y solo son accesibles por la función main. En caso de que la función que contiene las variables retorne o se acabe su llamada, todo lo que contiene es destruido. Ejemplo:


Código
  1. #include ...
  2.  
  3. using namespace std;
  4.  
  5.  
  6. /********PROTOTIPOS**********/
  7. int funcionEjemplo();
  8.  
  9.  
  10.  
  11. /*********VARIABLES*********/
  12. int variableGlobal = 0;
  13.  
  14.  
  15.  
  16. /******FUNCION*MAIN******/
  17. int main()
  18. {
  19. int ABC = 0;
  20. ++variableGlobal;
  21. ABC = funcionEjemplo();
  22.  
  23. return 0;
  24. }
  25.  
  26.  
  27. /****FUNCIONES****/
  28. int funcionEjemplo()
  29. {
  30. int ABC = 7;
  31. int RESULTADO = ABC + 1;
  32. ++variableGlobal;
  33. return RESULTADO;
  34. }

-Se llama a la función main de primera.
-Se crea la variable local de main ABC y se le asigna el valor 0.
-Se llama a la función funcionEjemplo() para asignarle el valor retornado a ABC.
-Se crea la variable local de funcionEjemplo ABC dentro de funcionEjemplo y se le da valor 7.
-Se crea la variable local RESULTADO de funcionEjemplo y se le da el valor 8.
-Se retorna el valor de RESULTADO.
-Se destruyen las variables locales ABC y RESULTADO de funcionEjemplo.
-Se da el valor retornado a la variable ABC local de main.
Si te fijas hay 2 variables ABC distintas que se llaman igual. Para simplificar mentalmente, cada funcion es como un programa externo. Si quieres que ambos usen la misma variable ABC y no 2 distintas debes declararla fuera de las funciones y después accedes a ella desde donde quieras. De la forma que se hace con variableGlobal, a la que si se puede acceder desde ambas funciones.

A cerca de otras cosas de tu código:
Puedes ordenarlo y organizarlo mucho mejor escribiendo 4 o 5 líneas de nada.
-Haces el prototipo/declaración de función un par de lineas antes de definirla. El prototipo sobra si colocas la definición antes de main. Te recomiendo organizar los prototipos antes de main, y las definiciones y clases debajo de la función main(). Así es más sencillo para quien lea el código seguir el flow del programa/ orden de ejecución.

Estás incluyendo muchas librerías que no necesitas. Las .h standart suelen ser del lenguaje C y las que no llevan .h de C++.
En el codigo que pusiste te sobran todas las librerías/bibliotecas menos la de iostream.

Para hacer pausa al final del programa puedes usar cin.get(); (es de iostream) en vez de la llamada a system("pause"); Así te ahorras usar una librería para llamar solo al sistema.

En la línea 24 estás escribiendo literalmente or. Usa || en su lugar.

Estás usando la palabra Vector como nombre para un Array. En español mucha documentaciòn le llama vector a un array y matriz a un vector. Me parece que lleva a confusión. Principalmente porque hay un contenedor en C++ en la Standart Template Library que se llama vector. Yo te aconsejo que los llames Array en vez de vectores. Un array es lo mismo que un vector con la diferencia que un array tienes que decir que tamaño exacto va a tener. Y un vector se las arregla para poder aumentar el tamaño automáticamente. Esto ya lo verás.

Cuando haces cin >> el usario va a escribir un número en pantalla. Cuado tu escribas el siguiente cout, va a quedarse pegado el texto que imprimas con el cout al número que puso el usuario. En consola verías:
Hola, pon un número
1Has puesto el número 1.

Si le metes un endl al principio del cout se vería así:
Hola pon un número
1
Has puesto el número 1.

Lo soluciones así:
cout << endl << "ingrese los 10 valores del vector 1:\n"<<endl;
Esa \n es similar a endl y el resultado mostrado es el mismo. En C no existe endl asique se usa \n. No lo utilces en C++.

Con Vector[10] en realidad guardas 11 valores. El 0 se cuenta. 0 1 2 3 4 5 6 7 8 9 10

Tiene varios fallos más. No te recomiedo seguir el tutorial o los recursos que estás siguiendo para aprender. Si entiendes inglés leete el Apress Learn C++ for game developers o cualquiera de los libros para "principiantes" que están en el listado de stackoverflow. También tienes un curso de C++ en cconclase.com hay mucho material bueno.

Creaste el post en programación general. Hay un subforo para C++. Ahí también tienes muchos recursos para aprender.


Como tal no es un de un tutorial sino un tema de fundamentos de programación de la universidad, todos tenemos ese mismo ejercicio y ese mismo error, solo la variable "elegir" y "vector_c" nos muestra el error de que no han sido declaradas, aqui mi duda es el porque nos aparece eso ya que habiamos realizado otro ejercicio similar con anterioridad y lo compilo a la perfeccion y este no


Título: Re: Duda con declaraciones
Publicado por: @XSStringManolo en 28 Agosto 2019, 19:22 pm
Ya te lo expliqué, es porque estás usando en funciones externas la varible elegir dentro del if. Esa variable elegir está declarada como varible local de la función main. Por lo que no puedes acceder desde otras funcionas. Si quieres acceder declárala como variable global como ya te expliqué en el ejemplo. O declárala en la función que la vayas a usar antes de usarla.


Título: Re: Duda con declaraciones
Publicado por: Dominic91 en 28 Agosto 2019, 21:08 pm
Ya te lo expliqué, es porque estás usando en funciones externas la varible elegir dentro del if. Esa variable elegir está declarada como varible local de la función main. Por lo que no puedes acceder desde otras funcionas. Si quieres acceder declárala como variable global como ya te expliqué en el ejemplo. O declárala en la función que la vayas a usar antes de usarla.

eh seguido tu recomendación, pero ahora vector_C arroja solo ceros como resultado


Título: Re: Duda con declaraciones
Publicado por: @XSStringManolo en 29 Agosto 2019, 00:21 am
Declaraste el arrayC como global? Si lo declaraste en una funcion, cuando esa función hace return, el ArrayC deja de existir.

Hay un paréntesis que no tengo ni idea que hace:
int calcularSuma(int vector_A[],int vector_B[]){
    if(elegir==1){
   int suma;{

Ese paréntesis depués de suma; yo creo que sobra. Nunca vi utilizarlo así ni entiendo que se supone que hace o si es valido/compila. No te lo aseguro porque yo programo a mi bola y ni siquiera uso arrays, no me gustan. Uso strings, vectores o directamente aritmética de punteros.


Título: Re: Duda con declaraciones
Publicado por: Dominic91 en 29 Agosto 2019, 01:51 am
Declaraste el arrayC como global? Si lo declaraste en una funcion, cuando esa función hace return, el ArrayC deja de existir.

Hay un paréntesis que no tengo ni idea que hace:
int calcularSuma(int vector_A[],int vector_B[]){
    if(elegir==1){
   int suma;{

Ese paréntesis depués de suma; yo creo que sobra. Nunca vi utilizarlo así ni entiendo que se supone que hace o si es valido/compila. No te lo aseguro porque yo programo a mi bola y ni siquiera uso arrays, no me gustan. Uso strings, vectores o directamente aritmética de punteros.

Si de hecho es lo que no entiendo por que los otros 2 si los toma en cuenta y ese no mira:
Código
  1. int main(){
  2.    int vector_A[10], vector_B[10], vector_C[10], suma=0, resta=0, multiplica=0, division=0;
  3.    int elegir;
  4.    int i;
  5.   elegir=elegir_operacion();
  6.  

El ejercicio solicita que los valores ingresados en los valores 1 y 2 (vector_A y vector_B) realicen cualquiera de las 4 operaciones básicas y el resultado se vea en un tercer vector, ya habia realizado un programa similar pero en este me muestra el error solo en ese vector.

Código
  1.    int calcularSuma(int vector_A[],int vector_B[]){
  2.    int elegir=0;
  3. int vector_C[10];
  4. int suma;{
  5. if(elegir==1){
  6. for(int i=0;i<10;i++){
  7. vector_C[i]=vector_A[i]+vector_B[i];
  8. cout<<vector_C[i]<<endl;
  9. cout<<endl<<endl<<"El resultado de la suma de los vectores es:\n"<<suma;}
  10. return 0; }
  11.    }
  12.    }

solo así lo lee.


Título: Re: Duda con declaraciones
Publicado por: engel lex en 29 Agosto 2019, 02:54 am
Código
  1.    int calcularSuma(int vector_A[],int vector_B[]){
  2.    int elegir=0; // <---- elegir es cero
  3. int vector_C[10];
  4. int suma;{
  5. if(elegir==1){ <---- esto jamás pasará, ya que elegir es cero
  6. for(int i=0;i<10;i++){
  7. vector_C[i]=vector_A[i]+vector_B[i];
  8. cout<<vector_C[i]<<endl;
  9. cout<<endl<<endl<<"El resultado de la suma de los vectores es:\n"<<suma;}
  10. return 0; }
  11.    }
  12.    }



por aclarar un poco mas los scopes

Código
  1. int funcion1(){
  2.  int variable = 1;
  3.  
  4. }
  5.  
  6. int funcion2(){
  7.  int variable = 2;
  8.  
  9. }
  10.  

variable de funcion1 y de funcion2 nada tienen que ver, variable solo existe dentro del espacio declarado, si se declara en otro espacio, nada tiene que ver


Título: Re: Duda con declaraciones
Publicado por: @XSStringManolo en 29 Agosto 2019, 04:20 am
Siguiendo el enunciado de tu ejercicio. Sin usar el array de la STL ni aritmética de punteros yo haría algo así(no sé si estará bien, llevo siglos sin hacer nada con arrays en C y no tengo compilador a mano:
Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. const short int t = 11;
  6. int array1[t];
  7. int array2[t];
  8. int array3[t];
  9. int resto[t];
  10.  
  11. int main()
  12. {
  13.  
  14. bool mostrarResto = false;
  15.  
  16. while (1)
  17. {
  18.   for (int i = 0; i != t-1; ++i)
  19.   {
  20.   cout << "Introduce el valor numero " << i+1 << " correspondiente al primer array:" << endl;
  21.   cin >> array1[i];   cout << endl;
  22.   }
  23.  
  24.   for (int i = 0; i != t-1; ++i)
  25.   {
  26.   cout << "Introduce el valor numero " << i+1 << " correspondiente al segundo array:" << endl;
  27.   cin >> array2[i];   cout << endl;
  28.   }
  29.  
  30. cout << "Introduce el numero correspondiente a la accion a realizar:" << endl << "1. Sumar" << endl << "2. Restar" << endl << "3. Multiplicar" << endl << "4. Dividir" << endl << "Otro. Salir" << endl;
  31.  
  32. short unsigned int opcion = 0;
  33.  
  34. cin >> opcion;
  35.  
  36. cout << endl;
  37.  
  38.   switch (opcion)
  39.   {
  40.      case 1:
  41.      {
  42.         for (int i = 0; i < t-1; ++i)
  43.         {
  44.         array3[i] = array1[i] + array2[i];
  45.         }
  46.      } break;
  47.  
  48.      case 2:
  49.      {
  50.         for (int i = 0; i < t-1; ++i)
  51.         {
  52.            if ( array1[i] > array2[i] )
  53.            {
  54.            array3[i] = array1[i] - array2[i];
  55.            }
  56.  
  57.            else
  58.            {
  59.            array3[i] = array2[i] - array1[i];
  60.            }
  61.         }
  62.      } break;
  63.  
  64.      case 3:
  65.      {
  66.         for (int i = 0; i < t-1; ++i)
  67.         {
  68.         array3[i] = array1[i] * array2[i];
  69.         }
  70.      } break;
  71.  
  72.     case 4:
  73.      {
  74.  
  75.      mostrarResto = true;
  76.  
  77.         for (int i = 0; i < t-1; ++i)
  78.         {
  79.            if ( array1[i] > array2[i] )
  80.            {
  81.            array3[i] = array1[i] / array2[i];
  82.            resto[i] = array1[i] % array2[i];
  83.            }
  84.  
  85.            else
  86.            {
  87.            array3[i] = array2[i] / array1[i];
  88.            resto[i] = array2[i] % array1[i];
  89.            }
  90.         }
  91.      } break;
  92.  
  93.      default:
  94.      {
  95.      return 0;
  96.      }
  97.   }/*Fin Switch*/
  98.  
  99.   for (int i = 0; i < t-1; ++i)
  100.   {
  101.      if (mostrarResto)
  102.      {
  103.      cout << "Resultado de tu operación: " << array3[i] << endl << "Resto de la operacion" << resto[i] << endl;
  104.      }
  105.  
  106. else
  107. {
  108. cout << "Resultado de tu operación: " << array3[i] << endl;
  109. }
  110.   }
  111. }/*Fin while*/
  112. cin.get();
  113. return 0;
  114. }
  115.  



Título: Re: Duda con declaraciones
Publicado por: Dominic91 en 29 Agosto 2019, 20:42 pm
Siguiendo el enunciado de tu ejercicio. Sin usar el array de la STL ni aritmética de punteros yo haría algo así(no sé si estará bien, llevo siglos sin hacer nada con arrays en C y no tengo compilador a mano:
Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. const short int t = 11;
  6. int array1[t];
  7. int array2[t];
  8. int array3[t];
  9. int resto[t];
  10.  
  11. int main()
  12. {
  13.  
  14. bool mostrarResto = false;
  15.  
  16. while (1)
  17. {
  18.   for (int i = 0; i != t-1; ++i)
  19.   {
  20.   cout << "Introduce el valor numero " << i+1 << " correspondiente al primer array:" << endl;
  21.   cin >> array1[i];   cout << endl;
  22.   }
  23.  
  24.   for (int i = 0; i != t-1; ++i)
  25.   {
  26.   cout << "Introduce el valor numero " << i+1 << " correspondiente al segundo array:" << endl;
  27.   cin >> array2[i];   cout << endl;
  28.   }
  29.  
  30. cout << "Introduce el numero correspondiente a la accion a realizar:" << endl << "1. Sumar" << endl << "2. Restar" << endl << "3. Multiplicar" << endl << "4. Dividir" << endl << "Otro. Salir" << endl;
  31.  
  32. short unsigned int opcion = 0;
  33.  
  34. cin >> opcion;
  35.  
  36. cout << endl;
  37.  
  38.   switch (opcion)
  39.   {
  40.      case 1:
  41.      {
  42.         for (int i = 0; i < t-1; ++i)
  43.         {
  44.         array3[i] = array1[i] + array2[i];
  45.         }
  46.      } break;
  47.  
  48.      case 2:
  49.      {
  50.         for (int i = 0; i < t-1; ++i)
  51.         {
  52.            if ( array1[i] > array2[i] )
  53.            {
  54.            array3[i] = array1[i] - array2[i];
  55.            }
  56.  
  57.            else
  58.            {
  59.            array3[i] = array2[i] - array1[i];
  60.            }
  61.         }
  62.      } break;
  63.  
  64.      case 3:
  65.      {
  66.         for (int i = 0; i < t-1; ++i)
  67.         {
  68.         array3[i] = array1[i] * array2[i];
  69.         }
  70.      } break;
  71.  
  72.     case 4:
  73.      {
  74.  
  75.      mostrarResto = true;
  76.  
  77.         for (int i = 0; i < t-1; ++i)
  78.         {
  79.            if ( array1[i] > array2[i] )
  80.            {
  81.            array3[i] = array1[i] / array2[i];
  82.            resto[i] = array1[i] % array2[i];
  83.            }
  84.  
  85.            else
  86.            {
  87.            array3[i] = array2[i] / array1[i];
  88.            resto[i] = array2[i] % array1[i];
  89.            }
  90.         }
  91.      } break;
  92.  
  93.      default:
  94.      {
  95.      return 0;
  96.      }
  97.   }/*Fin Switch*/
  98.  
  99.   for (int i = 0; i < t-1; ++i)
  100.   {
  101.      if (mostrarResto)
  102.      {
  103.      cout << "Resultado de tu operación: " << array3[i] << endl << "Resto de la operacion" << resto[i] << endl;
  104.      }
  105.  
  106. else
  107. {
  108. cout << "Resultado de tu operación: " << array3[i] << endl;
  109. }
  110.   }
  111. }/*Fin while*/
  112. cin.get();
  113. return 0;
  114. }
  115.  



En la estructura SWITCH-CASE así va la forma modular?
perdona si mi pregunta suena tonta, como dije soy nuevo en esto asi que aun tengo muchas dudas, hago la pregunta devido a que eh visto algunos programas modulares pero solo con la estructura IF y veo que lleva cosas separadas