elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Mensajes
Páginas: 1 ... 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 [36] 37
351  Programación / Programación C/C++ / Re: Invertir un arreglo de enteros en lenguaje C.- en: 16 Enero 2014, 14:17 pm
Ya los estas utilizando. El operador "[]" es uno binario y requiere que uno de sus operandos (no importa cual) sea un puntero.

Tengo una duda:
¿Cuando el identificador de un array puede no ser un puntero?(el apuntador constante a el primer elemento del array).-
Si me la pudieras aclarar me seria de mucha utilidad.-

Saludos
352  Programación / Programación C/C++ / Re: Invertir un arreglo de enteros en lenguaje C.- en: 16 Enero 2014, 00:33 am
Hola.
Muchas gracias a ambos, que lastima que todavía no llegué a estudiar memoria dinámica, creo que viene más allá de los apuntadores.-

Saludos.
353  Programación / Programación C/C++ / Re: Invertir un arreglo de enteros en lenguaje C.- en: 14 Enero 2014, 23:12 pm
Hola.
Una consulta más, ¿tiene sentido hacer este mismo código con punteros teniendo en cuenta que el nombre de un arreglo es un apuntador, o el nombre de un arreglo es la dirección del primer elemento que contiene el arreglo?.-
Si esto es conveniente necesitaría toda la teoría posible porque estoy estudiando apuntadores y nunca pude resolver esta incógnita, y además ¿sería más conveniente con arreglos de punteros?.- 

Saludos y gracias.-
354  Programación / Programación C/C++ / Re: Invertir un arreglo de enteros en lenguaje C.- en: 14 Enero 2014, 22:55 pm
Hola.

Citar
¿Qué número POSITIVO no es mayor o igual a 0?
O pones i<longitud+1 o pones int en vez de unsigned int.

De acuerdo, inocente error el mío, i<longitud+1 no me funciona.
Quitando unsigned si.-

Gracias a los tres.- 
Saludos.
355  Programación / Programación C/C++ / Invertir un arreglo de enteros en lenguaje C.- en: 14 Enero 2014, 22:00 pm
Hola.
Esto debe ser sencillo pero no logro resolverlo, el caso es que no  me acepta esta línea de código.-

Código
  1. //for(i=longitud; i>=0; i--,j++)

Me da el siguiente error, no al compilar sino al ejecutar.-



Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main(void){
  5. unsigned int enteros[]={15,12,28,18,05,33,21},i=0, longitud=0, copia[7], j=0;
  6. longitud = sizeof enteros / sizeof *enteros;
  7.  
  8. printf("\n Original....:");
  9. for(i=0; i<longitud; i++){
  10. printf("%d ", enteros[i]);
  11. }
  12.  
  13. //for(i=longitud; i>=0; i--,j++){
  14. for(i=longitud; i>0; i--,j++){
  15. copia[j] = enteros[i];
  16. }
  17.  
  18. printf("\n\n Invertido...:");
  19. for(i=0; i<longitud; i++){
  20. printf("%d ", copia[i]);
  21. }
  22.  
  23. return 0;
  24. }

Bueno espero de vuestra ayuda.-       
Saludos.
356  Programación / Programación C/C++ / Re: Limpieza de buffer de teclado en lenguaje C. en: 13 Enero 2014, 15:12 pm
Hola.
Excelente simplificaste mucho mi código, muchas gracias.-

Citar
fgets Leerá hasta n-1 caracteres o hasta que lea un retorno de línea (\n).
En este último caso , el carácter de retorno de línea también es leído.-

Saludos.
357  Programación / Programación C/C++ / Re: Limpieza de buffer de teclado en lenguaje C. en: 13 Enero 2014, 00:54 am

Hola.
Por favor me podrían probar el programa para que me digan si encuentran algún    error, estoy totalmente obnubilado y necesito de mentes frescas para que constaten si  definitivamente no los tiene (más allá de que se ingresen  100 dígitos).-
       
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void limpiar(char[], int);
  5.  
  6. int main(void){
  7. unsigned int ok=0, longitud=0, i=0, ch=0;
  8. char numeroChar[100] = "";
  9.  
  10. do{
  11. system("cls");
  12. printf("\n\n Ingrese un entero (maximo 9999)....:");
  13. fgets(numeroChar, 100, stdin);
  14. longitud = strlen(numeroChar);
  15. i=0;
  16. if(longitud >=4){
  17. limpiar(numeroChar, longitud);
  18. }
  19. longitud = strlen(numeroChar);
  20.  
  21. printf("\n\n Ingresaste..: %s", numeroChar);
  22.  
  23. printf("\n\n 0 para continuar otro para salir....:");
  24. scanf("%d" , &ok);
  25. while((ch = getchar()) != '\n');
  26.  
  27. }while(ok==0);
  28.  
  29. return 0;
  30. }
  31.  
  32. void limpiar(char numeroChar[], int longitud){
  33. int i=3;
  34. while(++i < longitud){
  35. if(i==4){
  36. numeroChar[4] = '\0';
  37. }
  38. if(i>4){
  39. numeroChar[i] = ' ';
  40. }
  41. }
  42. }

    Desde ya muchas gracias.-
    Saludos.
358  Programación / Programación C/C++ / Re: Limpieza de buffer de teclado en lenguaje C. en: 11 Enero 2014, 23:06 pm
Hola vangodp.
Por el momento solo me limito a leer y no tengo argumentos para disentir en ciertas cosas por el poco tiempo que tengo estudiando C.-
Sólo voy a hacer unas pequeñas observaciones:
En primer lugar tengo leído que la única función que debo utilizar para leer cadenas es fgets y más en este caso que necesito un máximo restringido de caracteres ingresados.-
En segundo lugar si ingreso 12345678 el resultado es incorrecto.-



Luego de lo observado el programa funciona muy bien.-
De cualquier manera en este instante encontré la solución.-   

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(void){
  5. unsigned int ok=0, ch=0, c=0, longitud=0;
  6. char numeroChar[7] = "";
  7.  
  8. do{
  9. system("cls");
  10. printf("\n\n Ingrese un entero....:");
  11. fgets(numeroChar, 5, stdin);
  12. longitud = strlen(numeroChar);
  13.  
  14. do{
  15. if(ch == 0) break;
  16. }while((ch = getchar()) != '\n');
  17.  
  18. numeroChar[longitud-1] = '\0';
  19. printf("\n\n Ingresaste..: %s   -----> longitud = %d", numeroChar, longitud);
  20. printf("\n\n 0 para continuar otro para salir....:");
  21. scanf("%d" , &ok);
  22. while((c = getchar()) != '\n');
  23.  
  24.  
  25. }while(ok==0);
  26.  
  27. return 0;
  28. }
        

   Saludos.
359  Programación / Programación C/C++ / Limpieza de buffer de teclado en lenguaje C. en: 11 Enero 2014, 18:16 pm
Hola.
Cuando ingreso más de 3 cifras todo funciona a la perfección, pero si ingreso menos de 4 el programa se queda detenido en el bucle while de limpieza de buffer de teclado, es como cuando tiene algo para leer (más de 3 cifras) todo funciona Ok .-

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(void){
  5. unsigned int ok=0, ch=0, longitud=0;
  6. char numeroChar[7] = "";
  7.  
  8. do{
  9. system("cls");
  10. printf("\n\n Ingrese un entero....:");
  11. fgets(numeroChar, 5, stdin);
  12. longitud = strlen(numeroChar);
  13. while((ch = getchar()) != '\n');
  14. numeroChar[longitud-1] = '\0';
  15. printf("\n\n Ingresaste..: %s   -----> longitud = %d", numeroChar, longitud);
  16. printf("\n\n 0 para continuar otro para salir....:");
  17. scanf("%d" , &ok);
  18. while((ch = getchar()) != '\n');
  19. }while(ok==0);
  20.  
  21. return 0;
  22. }
   

Bueno espero que me ayuden porque hace 2 días que estoy googleando y practicando y no logro la solución y por favor un poco de teoría del porqué.-       

Saludos.

360  Programación / Programación C/C++ / Re: Pasar de cadena(char) a entero(int) sin sobrepasar el máximo permitido. en: 9 Enero 2014, 13:34 pm
Hola leo.
Citar
…..nos hubiéramos ahorrado trabajo.
Mil disculpas.-

 
Citar
if(longitud-1 == 11 && numeroChar[0] >= 2){
               i=1;
 }
Muy bien, muchas gracias grave error el mio y lo estoy revisando porque me parece que hay otro.-

Citar
….no inicializas la variable numero a cero

Esta parte no la entiendo, lo voy a analizar, en crudo te diré que el paso de la variable a la función es para pasarla como valor y no como referencia (*ptrNumero
) para no destruir los datos que contiene, decime por favor tu conclusión.-  

Saludos.
Páginas: 1 ... 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 [36] 37
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines