• Martes 12 de Noviembre de 2024, 20:39

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 - cltomas

Páginas: [1]
1
C/C++ / token :: en C...
« en: Martes 12 de Abril de 2011, 22:00 »
Estoy leyendo un libro de programación en C, y tengo una duda con, este token "::", supuestamente sirve para cuando tengo una variable local y una global  con el mismo nombre, por ejemplo:

Código: C
  1.  
  2. #include <stdio.h>
  3.  
  4. int f1();
  5. int a = 2;
  6.  
  7. int main()
  8. {
  9.     int i;
  10.    
  11.     for (i = 1; i <= 3; i++)
  12.         f1();
  13. }
  14. int f1()
  15. {
  16.   int a = 4;
  17.       a+= 4;
  18.  
  19.   printf("El valor de a como variable local es %dn", a);
  20.  
  21.   : :a = : :a + a;
  22.  
  23.   printf("Utilizando la variable global ::a, %dn", : :a);
  24.  
  25.   return 0;  
  26. }    
  27.  
  28.  
Al anteponer :: en la variable a, utilizaria la variable global para la suma y no la variable local....  :unsure: , pero me da un error al compilar precisamente en ese token al compilar.... solo quiero saber si ese token existe en ansi  C  :D

2
C/C++ / Como Evitar error ....
« en: Martes 29 de Marzo de 2011, 19:19 »
Tengo el siguiente código:

Código: C
  1.  
  2.                                    /* Hecho por Cltomas */
  3. /*-----------------------------------Eterno Autodidacta ------------------------*/
  4. /* "No hay mejor Aprendizaje que el impuesto por uno mismo" by  Cltomas 2011....*/
  5.  
  6.  
  7. #include <stdio.h>
  8.  
  9. /* pide 5 números entre 1 y 30 e imprime la cantidad como *'s */
  10. int main()
  11. {
  12.    int a, n;
  13.    int cont = 1;
  14.    
  15.     while ( cont++ != 6)
  16.     {
  17.      printf("nIngresa 5 números entre 1 - 30 =>");
  18.      scanf("%d", &a);
  19.      getchar();
  20.    
  21.      if ((a >=1)&&(a<=30))
  22.        {
  23.         printf("n");
  24.         for ( n = a; n > 0; n--)
  25.             printf("*");
  26.         printf("n");
  27.         }
  28.      else
  29.          {
  30.          printf("nNúmero fuera de Rango, Se sale del Programan");
  31.                 break;      
  32.           }
  33.     } printf("n");
  34.       return 0;
  35. }            
  36.  
  37.  
  38.  
Funciona bien, si introduces de uno en uno los números, pero, siempre hay un pero, si ingreso números de la siguiente manera," 1.2.3.4.5", y lo mismo con "1,2,3,4,5" sucede esto en el programa:

Código: C
  1.  
  2. @ldebian:~/Desktop$ ./fg
  3.  
  4. Ingresa 5 números entre 1 - 30 =>1.2.3.4.5
  5. *
  6.  
  7. Ingresa 5 números entre 1 - 30 =>
  8. **
  9.  
  10. Ingresa 5 números entre 1 - 30 =>
  11. ***
  12.  
  13. Ingresa 5 números entre 1 - 30 =>
  14. ****
  15.  
  16. Ingresa 5 números entre 1 - 30 =>
  17. *****
  18.  
  19.  
Ahora mi pregunta, ¿Como evito este tipo de errores? Siempre hay curiosos por así decirlo, que buscaran algún error y mis programas aunque básicos, no quiero que tengan esos errores, si es que puedo evitarlos claro..... Desde ya muchas gracias...

3
C/C++ / Confundido con código en C
« en: Jueves 24 de Marzo de 2011, 21:27 »
Yo otra vez con un código que no puedo hacer,  no sé como plantearlo, sé que debe se un bucle while o eso creo, el ejerciccio es este:

Código: C
  1. Escribir un programa que lea números hasta que se encuentre el cero. El segundo número se sumará al primero, luego el tercero se restará, el cuarto se sumará, y así se deberá seguir alternado hasta que se llegue al cero. Cuando se llegue a esta condicion deberá imprimir el resultado, el total de operandos de la operación (sin incluir el cero), y la suma de los operandos que se restaron.
  2.  
Llevo dandole vueltas en mi cabeza, pero no doy con él...  :no: ...
Un ayuda me vendría bien..desde ya gracias..

Al fin lo pude hacer, vaya tela de días que me costo  :brickwall: , aquí coloco el código final.. .. gracias por los consejos .... :good:

Código: C
  1.  
  2.                                  /* Hecho por Cltomas */
  3. /*-----------------------------------Eterno Autodidacta -------------------------------------------------*/
  4. /* "No hay mejor Aprendizaje que el impuesto por uno mismo" by  Cltomas 2011....*/
  5.  
  6. /* Escribir un programa que lea números hasta que se encuentre el cero. El segundo número se sumará al primero
  7. , luego el tercero se restará, el cuarto se sumará, y así se deberá seguir alternado hasta que se llegue al cero.
  8.  Cuando se llegue a esta condición deberá imprimir el resultado, el total de operandos de la operación (sin incluir el cero)
  9. y la suma de los operandos que se restaron. */
  10.  
  11. #include <stdio.h>
  12.  
  13.  
  14. int main()
  15. {
  16.     int a;
  17.     int b, c;
  18.     int suma;
  19.     int sum3 = 0;
  20.     int cont = 1;
  21.  
  22.    
  23.     puts("Introduce 2 números, para sumarlos");
  24.     scanf("%d%d", &a, &b);
  25.     getchar();
  26.    
  27.    suma = a + b;
  28.    
  29.     while(c != 0)
  30.    {
  31.           puts("Introduce otro número, para sumarlo o restarlo, según corresponda:");
  32.           scanf("%d", &c);
  33.           getchar();
  34.        
  35.           cont +=1;
  36.          
  37.             if (cont%2 != 0)
  38.                
  39.                 suma += c;
  40.                            
  41.            else
  42.                 {
  43.                   suma -= c;  
  44.                   sum3 = sum3 + c;
  45.                 }
  46.        
  47.       } printf("La suma Total: %d, Total Operandos: %d, Suma de los que se restaron: %d n", suma, cont, sum3);
  48.      return 0;
  49.   }
  50.      
  51.    
  52.  
  53.  
  54.  

4
C/C++ / duda en C
« en: Sábado 19 de Marzo de 2011, 15:19 »
Tengo este trozo de código que forma parte de un programa que utiiza funciones:
Código: C
  1.  
  2.            resultado = cubo(n); /* Hacemos la llamada a la función */
  3.            printf("El cubo de %.2f  es %.2fn", n, resultado);
  4.  

Alguien me puede explicar, porque cuando coloco ese trozo al reves es decir:

Código: C
  1.  
  2.           printf("El cubo de %.2f  es %.2fn", n, resultado);
  3.           resultado = cubo(n); /* Hacemos la llamada a la función */  
  4.  
El programa me genera resultados inesperados, por ejemplo si ejecuto e programa con el codigo anterior,el cubo de 2 me da 0.00  &lt;_&lt; , pero si lo hago con el primer  trozo de código, me genera el resultado correcto  :rolleyes:

5
C/C++ / Suuma de los cuadrados
« en: Miércoles 16 de Marzo de 2011, 20:04 »
No ?e como implementar la suma de los cuadrados dado x número:, tengo entendid que esta es la formula para calcular la sumade los cuadrados de n número:
Código: C
  1. n(n+1)(2n+1)/6
  2.  
Pero no me deja implementarla en el código el compilador me dice que x no es una función  &lt;_&lt;

Código: C
  1. #include <stdio.h>
  2. #include <math.h>
  3. /* introducir un numero por teclado menor a 100, imprimir la suma de los cuadrados
  4. de los numeros separados por 4 posiciones ente sí*/
  5.  
  6. int main()
  7. {
  8.  int x;
  9.  int c = 0;
  10.  int sum = 0;
  11.  
  12.  printf("nIntroduce un Número menor a 100=>");
  13.  scanf("%d", &x);
  14.  getchar();
  15.  
  16.  for (x=x;x <=100;x+=4)
  17.  {
  18.    printf("nLos Números son:%d", x);
  19.    
  20.    c = c + 1;
  21.    sum = pow((sum + x), 2); ???? /* n(n+1)(2n+1)/6 */
  22.  }
  23.   printf("n La Suma de los cuadrados es :%dn", sum);
  24. }  
  25.    
  26.  

6
C/C++ / Switch no ejecuta Default
« en: Domingo 13 de Marzo de 2011, 01:28 »
Tengo este codigo, y el deafault no se ejecuta y no comprendo porque no lo hace &lt;_&lt;

Código: C
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {  
  5.      int MAT, CARR, SEM;
  6.      float pro;
  7.    
  8.      printf("nintroduce Matricula=>");
  9.      scanf("%d", &MAT);
  10.       getchar();
  11.      
  12.      printf("nintroduce Carrera 1.Ind 2.-Tel 3.-Inf 4.-Mat=>");
  13.      scanf("%d", &CARR);
  14.      getchar();
  15.    
  16.      printf("nintroduce sem=>");
  17.      scanf("%d", &SEM);
  18.      getchar();
  19.    
  20.      printf("nintroduce pro=>");
  21.      scanf("%f", &pro);
  22.      getchar();
  23.  
  24.   switch(CARR)
  25.  {
  26.      
  27.      case 1: if((SEM >=6)&&(pro >=8.5))  
  28.                 printf("n Mat %d, Carre %d, Pro %fn", MAT, CARR, pro);
  29.                 break;
  30.    
  31.      case 2: if((SEM >=5)&&(pro >=9.0))
  32.                 printf("n Mat %d, Carre %d, Pro %fn", MAT, CARR, pro);
  33.                 break;
  34.            
  35.      case 3: if((SEM >=6)&&(pro >=8.8))
  36.                 printf("n Mat %d, Carre %d, Pro %fn", MAT, CARR, pro);
  37.                 break;
  38.                
  39.      case 4: if((SEM>=7)&&(pro>=9.0))
  40.                 printf("n Mat %d, Carre %d, Pro %fn", MAT, CARR, pro);
  41.                 break;
  42.         default: printf("nError!!!!!n");
  43.             break;
  44.        
  45.   }            
  46. }
  47.      
  48.  

7
C/C++ / Rsultado Erroneo
« en: Miércoles 9 de Marzo de 2011, 17:48 »
Porque el siguiente codigo no se ejecuta bien:
Código: C
  1. #include <stdio.h>
  2. /* Crear un programa calcule cuantas cifras tiene un número entero positivo (pista: se
  3. puede hacer dividiendo varias veces entre 10)*/
  4.  
  5. int main()
  6. {
  7.   int num;
  8.   int num2;
  9.  
  10.   printf("nIntroduce un numero:");
  11.   scanf("%d", &num);
  12.   while (num > 1)
  13.   {
  14.    printf("nEl Número %d tiene %d cifras positivasn", num, num2);
  15.    num /=10;
  16.    num2 = (num / 10);
  17.    }  
  18.    getchar();
  19.    return;  
  20. }
  21.  
Al hacer la primera division de cualquier número me genera un valor  erroneo para num2, pero en las siguientes divisiones me genera bien el valor de num 2,Aquí  el código en ejecución:
Citar
Introduce un numero:12345
El Número 12345 tiene -1081048328 cifras positivas
El Número 1234 tiene 123 cifras positivas
El Número 123 tiene 12 cifras positivas
El Número 12 tiene 1 cifras positivas
  :unsure:

8
C/C++ / Duda con codigo C
« en: Miércoles 9 de Marzo de 2011, 15:05 »
Tengo que hacer el siguiente programa:
Código: C
  1. /*Dados como entrada 3 enteros representando la fecha como dia ? mes, año, imprimir la fecha del dia anterior.
  2.  Por ejemplo para una entrada como: 1 3 1992 La salida seria: Fecha anterior a 1-3-1992 es 29-02-1992 */
  3.                                                        
  4.  
Este es mi codigo:
Código: C
  1. #include <stdio.h>
  2.  
  3. /*Dados como entrada 3 enteros representando la fecha como dia ? mes, año, imprimir la fecha del dia anterior.
  4.  Por ejemplo para una entrada como: 1 3 1992 La salida seria: Fecha anterior a 1-3-1992 es 29-02-1992 */
  5.                                                        
  6.                                        
  7. int main()
  8. {
  9.      int dia;
  10.      int mes;
  11.      int anno;
  12.     int dia2, mes2;
  13.     int fecha;
  14.     int anno2;
  15.    
  16.     printf("nIntroduce el Día del mes=>n");
  17.     scanf("%d", &dia);
  18.     getchar();
  19.     printf("nIntroduce el mes [numerario]=>n");
  20.     scanf("%d", &mes);
  21.     getchar();
  22.     printf("nIntroduce el año =>n");
  23.     scanf("%d", &anno);
  24.     getchar();
  25.    
  26.      dia2=dia-1;
  27.      mes2=mes-1;
  28.      anno2=anno-1;
  29.    
  30.     /* como restringir la entrada del dia y mes a 2 digitos y año a 4 digitos*/
  31.    
  32.      if((dia2 == 0) && (mes2 == 0) && (anno != 0)) //caundo la fecha introducida sea del tipo 1-1-1977 sera 30-12-1976
  33.      
  34.       {
  35.          dia2 = 31;
  36.          mes2 = 12;
  37.        
  38.          printf("n[1º] La fecha anterior a %d-%d-%d es %d-%d-%dn", dia, mes, anno, dia2, mes2, anno2);
  39.       }
  40.     else
  41.         if ((dia2 > 0) && (mes2 == 0) && (anno != 0))// cuando la fecha introducida sea del tipo 12-1-1977 sera 11-1-1977
  42.    
  43.       {
  44.            dia2=dia - 1;
  45.            mes2=mes2 + 1;
  46.          
  47.            printf("n[2º]La fecha anterior a %d-%d-%d es %d-%d-%dn", dia, mes, anno, dia2, mes2, anno);
  48.         }
  49.      else
  50.          if ((dia2 == 0) && (mes2 > 0) && (anno != 0))// cuando la fecha introducida sea del tipo 1-12-1977 sera 30-11-1977
  51.        {
  52.            dia2= 30;
  53.            mes2=mes -1;
  54.            
  55.           printf("n[3º]La fecha anterior a %d-%d-%d es %d-%d-%dn", dia, mes, anno, dia2, mes2, anno);
  56.        }
  57.      else
  58.         if ((dia2 > 0) && (mes2>0) && (anno != 0))//cuando la fecha introducida sea del tipo 16-4-1977 sera 15-4-1977
  59.        {
  60.           dia2=dia -1;
  61.           mes2=mes2 + 1;
  62.          
  63.           printf("n[4º]La fecha anterior a %d-%d-%d es %d-%d-%dn", dia, mes, anno, dia2, mes2, anno);          
  64.         }
  65.  
  66.       else  
  67.            if ((dia == 0) || (mes == 0) || (anno == 0))
  68.       {    
  69.           printf("n[5] ERROR ..Has introducido un 0.. n");
  70.       }
  71.      else
  72.       {
  73.            printf("nERROR!!!! (día, mes, año negativo?)n");//para numero negativos LoL!!!!
  74.       }  
  75.    getchar();
  76.     return 0;
  77. }
  78.  
  79.  
Sé que me ido por las ramas con el codigo, pero soy novato y autodidacta, mis dudas son:
1.-¿ como hago para cuando el mes del año tenga 31 días y no 30?.
2.-¿como restringir la entrada del dia y mes a 2 digitos y año a 4 digitos?

Desde ya gracias y Saludos  :hola:

Páginas: [1]