• Sábado 18 de Mayo de 2024, 10:16

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.


Mensajes - 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++ / Re: Operacion con muchos digitos
« en: Martes 29 de Marzo de 2011, 16:30 »
Yo te recomiendo este:
Código: C
  1. Como Programar en C .C++ Deitel.Prentice-Hall
  2.  
Esta muy bueno para los principiantes, yo he tirado de muchos libros a la vez, para ir aprendiendo, pero este creo que es uno de los mejores que he leido... El que recomienda m0skito es el mejor sin lugar a dudas, ya que es de los creadores del lenguajes, pero si ya sabes algo de prograamación...... saludos

4
C/C++ / Re: Operacion con muchos digitos
« en: Lunes 28 de Marzo de 2011, 16:43 »
A mí también me funciona bien y estoy en Debian Gnu/linux, te recomiendo que utilices gcc para windows, como dice m0skito debe ser problema del compilador... Saludos

5
C/C++ / Re: Operacion con muchos digitos
« en: Sábado 26 de Marzo de 2011, 20:22 »
¿Y en que momento declaraste la variable segundo?...  No me entero muy bien, coloca el código que tienes... al primero le falt declarar segundo o segundos ....

6
C/C++ / Re: Confundido con código en C
« en: Sábado 26 de Marzo de 2011, 00:21 »
Lo tengo al 98% el código, solo me falla el contador de lo operandos totales menos el cero (no se cuenta) y que a veces no se sale del bucle while mientras no introduzca 2 ceros continuos  &lt;_&lt; ..
 lo he probado con estos números:
Código: C
  1. 6,5,4,3,2,6,5,4,3,2,0,0,
  2.  
Código: C
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.   int a, b, c, d;
  6.   int cont  = 0;
  7.   int cont1 = 0;
  8.   int cont2 = 0;  
  9.   int suma;
  10.   int sum = 0;
  11.   int suma2 = 0;
  12.  
  13.   puts("introduce 2 números");
  14.   scanf("%d %d", &a, &b);
  15.   getchar();
  16.  
  17.   if ((a != 0) && (b != 0))
  18.   {  
  19.      suma = a + b;
  20.      cont = cont + 1;
  21.   while ((c != 0) && (d != 0))
  22.   {
  23.       puts("introduce 1 número");
  24.       scanf("%d", &c);
  25.       getchar();
  26.       sum = sum + c;
  27.       cont1 = cont1 + 1;
  28.  
  29.       puts("introduce otro número");
  30.       scanf("%d", &d);
  31.       getchar();
  32.       suma2 = suma2 + d;
  33.       cont2 = cont2 + 1;
  34.    }
  35.     printf("nSuma Total %d, Suma operandos que se Restaron %d,  operandos %dn", suma - sum + suma2 ,sum, cont +      cont1 + cont2);
  36.  }  else puts("Error!");
  37. }
  38.    
  39.  
Me ido un poco por las ramas, pero funciona ... mas o menos... algun aporte  :rolleyes:

7
C/C++ / Re: Confundido con código en C
« en: Viernes 25 de Marzo de 2011, 15:04 »
Aún no llego a los Arrays supuestamente, se debe hacer con bucles, que es en el capitulo que voy.... Sé que el bucle for no me vale, dado queno sé cuantas veces se introducira números antes de ingresar un 0... El while creo que me serviria.... Tenía pensado esto:
 
Código: C
  1.  
  2.   float, a, b, c, d;
  3.   float Sum, restar, Sum2;
  4.   int cont = 0;
  5.   leer a
  6.   leer b
  7.   Sum   <- a + b;
  8.  
  9.  mientras a || b  distinto de cero
  10.    
  11.        leer c
  12.        restar = Sum - c;
  13.        cont =  cont + 1; //contador de números que se restan
  14.    
  15.      leer d
  16.       Sum2 = restar + d;
  17.   Terminar mientras.
  18.  
  19.   imrpimir suma Total y suma de los que se restaron y total operandos...
  20.  
  21.  

 Eso es más o menos lo que creo que me serviria, pero me hace que no funcionaría  :no: .... ¿Estoy bien? o ¿estoy bien mal?

Y m0skito no es una tarea, es más mis timpos de estudiante terminaron, esto lo hago porque me gusta y soy totalmente novato y autodidacta.... lo pregunte porque llevo días dandole vueltas en mi cabeza, pero no me aclaro....
Saludos

8
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.  

9
C/C++ / Re: duda en C
« en: Sábado 19 de Marzo de 2011, 18:00 »
risa te da por la pregunta  &lt;_&lt; ... Deja decirte, soy un autodidacta y como tal tengo ingentes dudas, pero hay libros y manuales que dan las cosas por sentado que tu las sabes, y si  hubiera sabido  que en C o   cualquier otro lenguaje de programación el orden de los productos afecta el resultado, me lo hubiera pensado antes de hacer la pregunta, es más no la hubiera hecho.
Todos te dicen que un int almacena valores desde -32.768 a 32.767, pero nadie te dice de donde se obtiene ese valor, así que imaginate el tiempo que "pierdes" tratando de comprender de donde sale eso, no me basta con solo  saber que un int almacena de -32.768 a 32.767..
Así que si consideras que mi pregunta es demasiado obvia no la tendrías que haber contestado...De todas formas muchas gracias por tu respuesta ya me queda mucho más claro, mi problema..

10
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:

11
C/C++ / Re: Suuma de los cuadrados
« en: Viernes 18 de Marzo de 2011, 17:10 »
Cita de: "m0skit0"
Cita de: "Jesus21"
creo que esto es lo que quieres hacer
Me da a mí que no.

¿Me cuentas un poco a qué te refieres exactamente con "suma de cuadrados"? Si puedes poner una definición matemática pues mejor.

Saludos
Esta es la formula para calcular la suma de los cuadrados de un número, pero a mí no me resulta, el compilador me dice que x no es una función..

Código: C
  1. n(n+1)(2n+1)/6
  2.  

12
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.  

13
C/C++ / Re: ¿por que me pasa esto?
« en: Domingo 13 de Marzo de 2011, 10:18 »
Busca por google esto "nacho cabanes", es una buen web para principiantes como tú y yo..xD...
No puedo insertar links...
Y lo más importante debes aprender a realizar programación estructurada te evitaras muchos dolores de cabeza, porque si no lo haces.. dios se apiade de ti.
 los malos hábitos son díficiles de eliminar..

14
C/C++ / Re: Switch no ejecuta Default
« en: Domingo 13 de Marzo de 2011, 10:03 »
Gracias por tu respuesta, pero estoy en Debian Gnu/linux y el default se ejecuta correctamente, el problema era que me faltaba colocar un printf fuera del switch    :brickwall:

15
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.  

16
C/C++ / Re: Rsultado Erroneo
« en: Miércoles 9 de Marzo de 2011, 18:20 »
Gracias y yo dandome de  :brickwall:  y la solución era "fácil".... otra nota para mis apuntes  :good:

17
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:

18
C/C++ / Re: Duda con codigo C
« en: Miércoles 9 de Marzo de 2011, 15:34 »
Gracias, el problema es que se debe realizar sin while ya que aún no llego a los bucles while, for .... :brickwall:


doble post lo siento..no se borrarlo

19
C/C++ / Re: Duda con codigo C
« en: Miércoles 9 de Marzo de 2011, 15:33 »
Gracias, el problema es que se debe realizar sin while ya que aún no llego a los bucles while, for .... :brickwall:

20
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]