• Sábado 20 de Abril de 2024, 06:44

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - oscarmgg

Páginas: [1]
1
C/C++ / se repite algo que no debe ser...
« en: Domingo 16 de Noviembre de 2008, 18:27 »
Hola amigos,mil gracias por su ayuda... bien tengo un programita que lo que hace es a traves de un menu seleccionar una de las operaciones propuestas,sin embargo cuando me visualiza el menu nuevamente dado que esta dentro de un do while me sale lo siguiente:

A.- SUMA
B.-RESTA
C.-PRODUCTO
D.-DIVISION
E.-SALIR

SELECCIONE UNA OPCION: A(o la a minuscula)
Digite el primer numero: 5
Digite el segundo numero:6
suma:la suma es:11

A.- SUMA
B.-RESTA
C.-PRODUCTO
D.-DIVISION
E.-SALIR

seleccione una opcion:
opcion incorrecta,intentelo de nuevo
presione una tecla para continuar...

no se porque me esta entrando al default??? como podria hacer para que me muestre correctamente el menu cada vez que realice una operacion o si se escoge una opcion de menu distinta a las posibles????porfa su ayuda es importante mil gracias.
aqui les dejo el programa,esta hecho en dev- c++

Código: Text
  1.  
  2. #include "stdio.h"
  3.  
  4.  float numero_suma(float numero_a, float numero_b)
  5.  {
  6.      float suma;
  7.      suma= numero_a + numero_b;        
  8.              
  9.      return suma;
  10.    };
  11.  
  12.   float numero_resta(float numero_a,float numero_b)
  13.   {
  14.     float resta;
  15.      if(numero_a > numero_b)
  16.                        
  17.      resta=numero_a - numero_b;
  18.      
  19.      return resta;
  20.    };
  21.  
  22. numero_producto(float numero_a,float numero_b)
  23. {
  24.    float producto;
  25.    producto= numero_a * numero_b;                    
  26.    return producto;
  27.    };
  28.  
  29. numero_division( float numero_a,float numero_b)
  30. {
  31.   float division;
  32.    if(numero_b!=0)
  33.    {
  34.     division= numero_a/numero_b;
  35.     }
  36.     else
  37.     {
  38.     printf("no puedes dividir por cero");
  39.     printf("n");
  40.     system("pause");
  41.     exit(2);
  42.     }
  43.    return division;
  44.  
  45.   };
  46.  
  47.  
  48. main()
  49. {                    /*del main*/
  50. char op;
  51. float a;
  52. float b;
  53. float numsuma;
  54. float numresta;
  55. float numproducto;
  56. float numdivision;
  57. do
  58. {
  59.    printf("ntA.- Suma");
  60.    printf("ntB.- Resta");
  61.    printf("ntC.- Producto");
  62.    printf("ntD.- division");
  63.    printf("ntE.- salir");
  64.    printf("n");
  65.    printf("selecciona una opcion: ");
  66.    scanf("%c", &op);
  67.    printf("n");
  68.  
  69.  
  70.  
  71.  
  72.  
  73. switch (op)
  74. {
  75.   case 'a': case'A':
  76.   {
  77.        printf("digite el primer numero");
  78.        scanf("%f",&a);
  79.        printf("n");
  80.  
  81.        printf("digite el segundo numero");
  82.        scanf("%f",&b);
  83.        printf("n");
  84.        printf("Suma: ");
  85.        numsuma =numero_suma(a,b);
  86.        printf("la suma es %.2fn",numsuma);
  87.      } break;
  88.    
  89.   case 'b': case 'B':
  90.        {
  91.        printf("digite el primer numero");
  92.        scanf("%f",&a);
  93.        printf("n");
  94.  
  95.       printf("digite el segundo numero");
  96.       scanf("%f",&b);
  97.       printf("n");
  98.       printf("Resta: ");
  99.       numresta = numero_resta(a,b);
  100.       printf("la resta es %.2fn",numresta);
  101.      }  break;
  102.      
  103.  
  104.   case 'c': case 'C':
  105.        {
  106.        printf("digite el primer numero");
  107.        scanf("%f",&a);
  108.        printf("n");
  109.  
  110.       printf("digite el segundo numero");
  111.       scanf("%f",&b);
  112.       printf("n");
  113.       printf("Producto: ");
  114.       numproducto = numero_producto(a,b);
  115.       printf("el producto es %.2fn",numproducto);
  116.       }break;
  117.      
  118.    case 'd': case 'D':
  119.        {
  120.        printf("digite el primer numero");
  121.        scanf("%f",&a);
  122.        printf("n");
  123.  
  124.        printf("digite el segundo numero");
  125.        scanf("%f",&b);
  126.        printf("n");
  127.        printf("Division: ");
  128.        numdivision = numero_division(a,b);
  129.        printf("la division es %.2fn",numdivision);
  130.        }break;
  131.      
  132.    case 'e': case 'E':
  133.       {  
  134.      printf("ha elegido salir del programa...Adios...");
  135.      printf("n");
  136.      system("pause");
  137.      exit(0);
  138.      } break;
  139.      
  140.      default:{
  141.      printf("opcion incorrecta,intentalo de nuevo");
  142.      printf("n");
  143.     }break;
  144.      
  145.    
  146.     }        /* del switch*/
  147.    
  148.    
  149.   }while((op=='A') ||(op=='a')|| (op=='B') ||(op=='b')|| (op=='C') ||(op=='c')||( op=='D') ||(op=='d')||( op=='E')||(op=='e'));
  150.  
  151.      
  152. system("pause");
  153.  
  154. }  /* del main*/
  155.  
  156.  
  157.  
  158.  

2
C/C++ / porque me hace un bucle infinito???
« en: Viernes 14 de Noviembre de 2008, 20:45 »
Citar
Hola amigos un cordial saludos,bien es que tengo un programilla que hice pero que al intentar modificarlo con el objetivo de hacer un do while para que ma pregunte repetidamente el menu de opciones,y no se porque me hace un bucle infinito tanto con or(||) o and(&&),si alguien puede ayudarme le agradeceria muchisimo es cuestion no de tarea solo de practica que estoy realizando con el objetivo de aprender cada vez algo nuevo ...mil gracias
el codigo fuente es el siguiente,destacando que sin el do while me funciona perfecto ,quiero decir que me hace correcto las operaciones pero al colocar el do while como les indico con el objetivo de que cada vez que me haga una operacion el menu de opciones vuela a visualizarse hasta que el usuario decida escoger la opcion E.SALIR
Código: Text
  1.  
  2. #include "stdio.h"
  3.  
  4.  float numero_suma(float numero_a, float numero_b)
  5.  {
  6.    float suma;
  7.    suma= numero_a + numero_b;        
  8.              
  9. return suma;
  10. };
  11.  
  12. float numero_resta(float numero_a,float numero_b)
  13. {
  14.  float resta;
  15.  if(numero_a > numero_b){                  
  16.     resta=numero_a - numero_b;
  17. }
  18.  if(numero_a < numero_b){
  19.     resta= numero_b - numero_a;  
  20. }
  21. return resta;
  22. };
  23.  
  24. numero_producto(float numero_a,float numero_b)
  25. {
  26.  float producto;
  27.  producto= numero_a * numero_b;                    
  28. return producto;
  29. };
  30.  
  31. numero_division( float numero_a,float numero_b)
  32. {
  33. float division;
  34. if(numero_b!=0)
  35. {
  36. division= numero_a/numero_b;
  37. }
  38. else
  39. {
  40. printf("no puedes dividir por cero");
  41. printf("n");
  42. system("pause");
  43. exit(2);
  44. }
  45. return division;
  46.  
  47. };
  48.  
  49.  
  50. main()
  51. {                    /*del main*/
  52. char op;
  53. float a;
  54. float b;
  55. float numsuma;
  56. float numresta;
  57. float numproducto;
  58. float numdivision;
  59. do
  60. {
  61.    printf("ntA.- Suma");
  62.    printf("ntB.- Resta");
  63.    printf("ntC.- Producto");
  64.    printf("ntD.- division");
  65.    printf("ntE.- salir");
  66.    printf("n");
  67.    printf("selecciona una opcion: ");
  68.    scanf("%d", &op);
  69.    printf("n");
  70.  
  71.  
  72.  
  73.  
  74.  
  75. switch (op)
  76. {
  77.   case 'A':{
  78.        printf("digite el primer numero");
  79.  scanf("%f",&a);
  80.  printf("n");
  81.  
  82.  printf("digite el segundo numero");
  83.  scanf("%f",&b);
  84.  printf("n");
  85.    printf("Suma: ");
  86.    numsuma =numero_suma(a,b);
  87.    printf("la suma es %.2fn",numsuma);
  88.   }break;
  89.  
  90.   case 'B':{
  91.        printf("digite el primer numero");
  92.        scanf("%f",&a);
  93.        printf("n");
  94.  
  95.       printf("digite el segundo numero");
  96.       scanf("%f",&b);
  97.       printf("n");
  98.       printf("Resta: ");
  99.       numresta = numero_resta(a,b);
  100.       printf("la resta es %.2fn",numresta);
  101.       }break;
  102.  
  103.   case 'C':{
  104.        printf("digite el primer numero");
  105.        scanf("%f",&a);
  106.        printf("n");
  107.  
  108.       printf("digite el segundo numero");
  109.       scanf("%f",&b);
  110.       printf("n");
  111.       printf("Producto: ");
  112.       numproducto = numero_producto(a,b);
  113.       printf("el producto es %.2fn",numproducto);
  114.       }break;
  115.    
  116.    case 'D':{
  117.        printf("digite el primer numero");
  118.        scanf("%f",&a);
  119.        printf("n");
  120.  
  121.        printf("digite el segundo numero");
  122.        scanf("%f",&b);
  123.        printf("n");
  124.        printf("Division: ");
  125.        numdivision = numero_division(a,b);
  126.        printf("la division es %.2fn",numdivision);
  127.       }break;
  128.    
  129.    case 'E': {
  130.      printf("ha elegido salir del programa...Adios...");
  131.      printf("n");
  132.      system("pause");
  133.      exit(0);
  134.      }break;
  135.     default:{
  136.      printf("opcion incorrecta");
  137.      printf("n");
  138.     }break;
  139.  
  140. }                   /* del switch*/
  141.  
  142. }while(op!='A' || op!='B' || op!='C' || op!='D' || op!='E');
  143. // LO HE INTENTADO ASI TAMBIEN Y ME HACE LO MISMO BUCLE INFINITO.
  144. //while(op!='A' && op!='B' && op!='C' && op!='D' && op!='E'); que a mi apreciacion no podria ser puesto
  145. //que no hay una opcion que cumpla con todo
  146. //while(op!='E');
  147.  
  148.  
  149.  
  150.  
  151. system("pause");
  152.  
  153. }  /* del main*/
  154.  
  155.  
  156.  
  157.  






3
C/C++ / dividir en dos bloques un menu
« en: Viernes 14 de Noviembre de 2008, 18:59 »
Citar

Hola amigos antetodo agradeceros su valiosa ayuda para quienes como yo estamos empezando en este complejo tema de la programacion..

bien mi pregunta es quiza algo trivial para muchos de vosotros sin embargo para mi no lo es por favor tenerlo en cuenta....
deseo que una lista de menu me aparezca en pantalla en dos bloques ,me explico:

Código: Text
  1.  
  2.  
  3.  int  mes;
  4.           printf("1. Eneron");
  5.           printf("2. Febreron");
  6.           printf("3. Marzon");
  7.           printf("4. Abriln");
  8.           printf("5. Mayon");
  9.           printf("6. Junion");
  10.           printf("7. Julion");
  11.           printf("8. Agoston");
  12.           printf("9. Septiembren");
  13.           printf("10. Octubren");
  14.           printf("11. Noviembren");
  15.           printf("12. Diciembren");
  16.           printf("nn");
  17.           printf("ingrese un numero de mes: ");
  18.           scanf("%d",&numero_de_mes);
  19.              
  20.      printf("nn");    
  21.  
  22.  
  23.  
  24.  
  25.  
Citar
en tonces la idea es que en vez de una sola columna me la muestre en dos :
Código: Text
  1.  
  2.  
  3.          1. Enero             7. Julio
  4.          2. febrero           8. Agosto
  5.          3. marzo             9. septiembre
  6.          4. abril             10.octubre                
  7.          5. mayo              11.noviembre                          
  8.          6. junio             12 diciembre                    
  9.                                                                      
  10.  
  11.  
bien pues la verdad es que nunca he utilizado el goto pues he leido que no es muy aconsejable en programacion estructurada
queria saber si hay un comando  que pueda hacerme esto o si no hay mas remedio que utilizar un goto porfavor ayudarme a como seria esa instruccion...mil gracias amigos y que sepais que hacen una labor estupenda

4
C/C++ / hola amigos
« en: Sábado 8 de Noviembre de 2008, 22:35 »
bien tengo este programita que lo que hace es buscar un elemento en un array utilizando una funcion,el programa ejecuta bien el problema que tengo es que cuando busco el numero siguiente al ultimo de la lista leida me dice que existe y cada vez me dice lo mismo para elementos que estan despues del ultimo elemento,por favor ayudemen a encontrar el error que pueda tener ,por su colaboracion mil gracias..mi correo es oscarydey2002@hotmail.com
Código: Text
  1.  
  2.  
  3. #include"stdio.h"
  4. int buscar_elemento(int arr[],int num,int elem);//prototipo  de la funcion
  5. int array[],resultado,i,encontrado=0;
  6. int num,elemento;
  7. char opcion;
  8.  int main()
  9. {
  10.  
  11.   printf("cuantos elementos contendra el array :");
  12.   scanf("%d",&num);
  13.   for(i=0;i<num;i++)
  14.   {
  15.     printf("introduzca el elemento %d : ",i);                      
  16.     scanf("t%d",&array[i]);
  17.    
  18.    }
  19.  
  20.  
  21.   do //realizamos el do-while para que cuando no ponga s/S salga del programa
  22.     {  
  23.  
  24.     printf("digite el elemento a buscar :");
  25.    
  26.     scanf("%d",&elemento);
  27.     buscar_elemento(array,num,elemento);
  28.     if (encontrado!=0) //si nos da algo distinto a 0 es que ha ido bien
  29.     {
  30.         printf("El numero %d si existe en el arraynn",elemento);
  31.         printf("encontrado = %d",encontrado);
  32.         printf("n");
  33.     }
  34.     else //si nos da 0 es que no ha encontrado el numero
  35.     {
  36.         printf(" el elemento %d noooo  se encuentra en el arraynn",elemento);
  37.         printf("encontrado = %d",encontrado);
  38.         printf("n");
  39.      }
  40.      
  41.     printf("Desea buscar otro numero? S/N: ");
  42.     scanf("%s", &opcion);
  43.    
  44.  
  45. }while(opcion=='s' || opcion=='S');
  46.  
  47. }
  48.  
  49.  int buscar_elemento(int arr[],int num,int elem)
  50.    {  
  51.                          
  52.    
  53.      for(i=0;i<num;i++)                        
  54.         {
  55.            if (arr[i]==elem)
  56.             {
  57.                 encontrado=1;
  58.                
  59.                 break;
  60.             }
  61.    
  62.         }
  63.     return(encontrado);
  64.        
  65.     }
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  

5
Pascal / Leer Matriz y mostrarla al mismo tiempo
« en: Sábado 27 de Septiembre de 2008, 00:09 »
Hola Amigos intento resolver el siguiente planteamiento:

valor de A[3][2]:

5      1      6
12   34     5
9    
pues bien como pueden ver la idea es que cada vez que se me indique las componentes de la matriz y vaya entrando el valor este se ubique en dicha posicion y se vaya armando al mismo tiempo la  matriz,es decir si vemos en el ejemplo que os doi se me esta pidiendo la componente A[3][2], al entrar el valor y dar enter este valor debe posicionarse debajo del 34... asi hasta el final osea hasta A[3][3] ,pues bien

que funcion hay en pascal que me permita borrar la pantalla diferente al clrscr para poder adentrarla en el codigo o que me sugieren amigos:
begin
for i:= 1 to 3
  for j:= 1 to 3 do
    begin
     writeln('valor de A[' , i , ',' , j , ']');
      readln(A[i,j]);
   end;
end.


por su orientacion  mil gracias amigos

6
Pascal / COMO MUESTRO LA MATRIZ AUMENTADA
« en: Jueves 25 de Septiembre de 2008, 18:36 »
bien estoy en un programita que para quiza muchisimos de aqui sea una chorrada pero bueno por algo debo empezar.el programita consiste en calcular el determinante de una matriz que en mi caso la he tomado de 3x3,bien leyendo encuentro que hay un metodo que consiste en aumentar las dos primeras filas o columnas de la matriz inicial,es decir la leida por el usuario,pues bien yo hago lo siguiente:

Mostrar/Ocultar Número de línea | Expandir/Contraer | Seleccionar todo
 
 leo la matriz A;
 
5  3   4
2   1  6
9   8  7
 
para aumentar la matriz yo hago lo siguiente, que creo esta bien:
 
for i:=1 to 2 do
  for j:= 1 to 3 do
  A[i,j]:=A[i+3,j];
 
bien mi duda es como hago para mostrar la nueva matriz aumentada, pues no se como enlazarr la matriz inicial con el codigo que anteriormente les indique? es decir para ver en pantalla
 
5   3   4
2   1   6
9   8   7
5   3   4
2   1   6
 
bien amigos espero me podeis hechar una manita,gracias
 
P.d. Enko te felicito por tus valiosas aportaciones y por moderar de forma eficiente este foro

7
Pascal / cordial saludo
« en: Jueves 25 de Septiembre de 2008, 18:13 »
Hola   un cordial saludo  y mil gracias a todos aquellos que aportan sus brillantes ideas,miren soy nuevo en este foro y un principiante en el mundo de la programacion que la verdad me fascina pero que no cuento con medios para una universisdad,sin embargo de manera autodidacta por internet lo estoy intentando con lecturas de manuales,espero poder aprender de uds muchas soluciones a mis seguramente molestas inquietudes que estare formulando aqui pues como les digo soy un simple pero humilde aprendiz...

bien estoy en un programita que para quiza muchisimos de aqui sea una chorrada pero bueno por algo debo empezar.el programita consiste en calcular el determinante de una matriz que en mi caso la he tomado de 3x3,bien leyendo encuentro que hay un metodo que consiste en aumentar las dos primeras filas o columnas de la matriz inicial,es decir la leida por el usuario,pues bien yo hago lo siguiente:
Código: Text
  1.  
  2.  leo la matriz A;
  3.  
  4. 5  3   4
  5. 2   1  6
  6. 9   8  7
  7.  
  8. para aumentar la matriz yo hago lo siguiente, que creo esta bien:
  9.  
  10. for i:=1 to 2 do
  11.   for j:= 1 to 3 do
  12.   A[i,j]:=A[i+3,j];
  13.  
  14. bien mi duda es como hago para mostrar la nueva matriz aumentada, pues no se como enlazarr la matriz inicial con el codigo que anteriormente les indique? es decir para ver en pantalla
  15.  
  16. 5   3   4
  17. 2   1   6
  18. 9   8   7
  19. 5   3   4
  20. 2   1   6
  21.  
  22. bien amigos espero me podeis hechar una manita,gracias
  23.  
  24. P.d. Enko te felicito por tus valiosas aportaciones y por moderar de forma eficiente este foro
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  

Páginas: [1]