Foro de elhacker.net

Programación => Ejercicios => Mensaje iniciado por: dpunisher03 en 3 Abril 2008, 06:18 am



Título: necesito saber como ingresar 1 nº entero >0 y <=100 luego contar sus digitos....
Publicado por: dpunisher03 en 3 Abril 2008, 06:18 am
hola a todos necesito saber como hacer el siguiente programa, si alguien me ayudaria estaria muy agradecido
1.- ingresar un nº entero >0 y <=100 luego contar sus digitos e invertir el digito
ejemplo ingresar el 12 y que diga que tiene 2 digitos y luego invertirlo e imrpimir el 21

ojala alguien me pueda ayudar ::)


Título: Re: necesito saber como ingresar 1 nº entero >0 y <=100 luego contar sus digitos
Publicado por: BETA_V en 3 Abril 2008, 19:53 pm
espero que te sirva, es lo mas simple que se puede hacer
Código
  1. var
  2. valor:integer;
  3. begin
  4. repeat
  5.  readln(valor);
  6. until (valor>0) and (valor<=100);
  7. if valor>10 then writeln('Tiene 2 digitos')
  8.  else writeln('Tiene 1 digito');
  9. writeln(valor mod 10,'',valor div 10);
  10. readln;
  11. end.
  12.  
  13.  


Título: Re: necesito saber como ingresar 1 nº entero >0 y <=100 luego contar sus digitos....
Publicado por: dpunisher03 en 3 Abril 2008, 23:13 pm
se me olvido decir que era en c++ usando solo secuencias de repeticion como while por do while if etc
si pueder ayudarme bkn


Título: Re: necesito saber como ingresar 1 nº entero >0 y <=100 luego contar sus digitos
Publicado por: eLank0 en 3 Abril 2008, 23:48 pm
Con el operador aritmético de módulo de C++ y un bucle while hasta que el valor inicial se convierta en 1 deberías tener suficiente.

S2


Título: Re: necesito saber como ingresar 1 nº entero >0 y <=100 luego contar sus digitos
Publicado por: cassiani en 4 Abril 2008, 06:48 am
se me olvido decir que era en c++ usando solo secuencias de repeticion como while por do while if etc
si pueder ayudarme bkn

Aqui te lo dejo, adaptalo a tus gustos y preferencias:

Código
  1. //incluyendo librerias...
  2. #include<stdio.h>   //--> para el printf, scanf
  3. #include<conio.h>   //--> para el clrscr, getch
  4.  
  5. //Declarando variables globales
  6. int numero, digito, digito2;
  7.  
  8. //Cuerpo principal del programa
  9. void main()
  10. {
  11. while ((numero<1) || (numero>100))
  12. {
  13. //limpiamos pantalla cada vez que entremos al ciclo
  14. clrscr();
  15. printf("Introduzca un numero: ");
  16. scanf("%d",&numero);
  17. }
  18.  
  19. if (numero<10)
  20. {
  21. printf("Tiene 1 digito, invertido --> %d",numero);
  22. }
  23. else
  24. {
  25. if (numero>99)
  26. {
  27. printf("Tiene 3 digitos, Invertido --> 001");
  28. }
  29. else
  30. {
  31. digito=numero%10;
  32. digito2=numero/10;
  33. printf("Tiene 2 digitos, Invertido --> %d%d",digito,digito2);
  34. }
  35. }
  36. getch();
  37. }

Espero te sea de ayuda!

¡S4lu2!


Título: Re: necesito saber como ingresar 1 nº entero >0 y <=100 luego contar sus digitos
Publicado por: BETA_V en 4 Abril 2008, 14:47 pm
hola¡¡ en vez de un while, lo haria con un do while,dado que primero tenes que ingresar un valor para verificar la condicion,en todo caso si usas un while ,tendrias que primero inicializar la variable para poder ingresar al bucle while¡¡¡ciaoo¡¡


Título: Re: necesito saber como ingresar 1 nº entero >0 y <=100 luego contar sus digitos
Publicado por: cassiani en 4 Abril 2008, 16:50 pm
hola¡¡ en vez de un while, lo haria con un do while,dado que primero tenes que ingresar un valor para verificar la condicion,en todo caso si usas un while ,tendrias que primero inicializar la variable para poder ingresar al bucle while¡¡¡ciaoo¡¡

No, no es necesario inicializar la variable antes de que entre al while, pues cuando fue declara se le asigno por defecto un "0" lo que garantiza que entrará por lo menos una vez al While.

Código
  1. int ejemplo;
  2.  
  3. void main()
  4. {
  5. printf("Valor inicial --> %d",ejemplo);
  6. getch();
  7. }


Título: Re: necesito saber como ingresar 1 nº entero >0 y <=100 luego contar sus digitos
Publicado por: BETA_V en 4 Abril 2008, 18:20 pm
hola¡¡ inicializar los valores es una buena practica,y mas cuando programas en diferentes lenguajes,en pascal no vienen inicializadas las variables¡¡


Título: Re: necesito saber como ingresar 1 nº entero >0 y <=100 luego contar sus digitos
Publicado por: cassiani en 4 Abril 2008, 18:43 pm
hola¡¡ inicializar los valores es una buena practica,y mas cuando programas en diferentes lenguajes,en pascal no vienen inicializadas las variables¡¡

noo, no y disculpa que te corriga, el valor predeterminado de una variable de tipo INTEGER es siempre '0' y para muestra un botón:

Código
  1. Program Ejemplo;
  2. Uses
  3.    Crt;
  4. Var
  5.   Numero:Integer;
  6. Begin
  7.     Clrscr;
  8.     textcolor(yellow);
  9.     gotoxy(30,25);write('Valor predeterminado --> ',Numero);
  10.     Readln;
  11. End.

Por eso te digo que siempre entrará al ciclo, por lo menos en una ocasión. Aunque claro, no voy a objetar el hecho de inicializar las variables, como dices, es buena costumbre, pero NO NECESARIO en este caso.

¡S4lu2!


Título: Re: necesito saber como ingresar 1 nº entero >0 y <=100 luego contar sus digitos
Publicado por: BETA_V en 4 Abril 2008, 21:38 pm
hola¡¡ el integer en delphi sin inicializar me devolvio  2147348480¡¡ :-\¡¡ mas haya de que si ingresaria en el bucle, no siempre va a tener una concion igual a esa¡¡ por eso veo conveniente explicar lo importante de inicializar las variables¡¡por ej cuando trabajas con objetos ,los constructores los obvias,,usas el constructor por defeccto???


Título: Re: necesito saber como ingresar 1 nº entero >0 y <=100 luego contar sus digitos....
Publicado por: cassiani en 4 Abril 2008, 22:37 pm
hola¡¡ el integer en delphi sin inicializar me devolvio  2147348480¡¡ :-\¡¡ mas haya de que si ingresaria en el bucle, no siempre va a tener una concion igual a esa¡¡ por eso veo conveniente explicar lo importante de inicializar las variables¡¡por ej cuando trabajas con objetos ,los constructores los obvias,,usas el constructor por defeccto???

excelente!! haces tu tarea, he trabajado con PHP, Java, VB, Pascal y C++, NUNCA con delphy aunque leí que era muy parecido a pascal.

Por eso te digo que siempre entrará al ciclo, por lo menos en una ocasión. Aunque claro, no voy a objetar el hecho de inicializar las variables, como dices, es buena costumbre, pero NO NECESARIO en este caso.

Dije que no era necesario en este CASO, PERO, que sin embargo NO objetaria sobre la inicializacion de las variables, sobre delphy no opino porque no lo conozco.

En fin... no puedo llevarte la contraria si no conozco el tema, por el momento...

Yo por mi parte nunca he tenido que hacerlo, solo cuando era extramadamente necesario.

¡Saludos! un placer discutir contigo, ja, ja.  :laugh:


Título: Re: necesito saber como ingresar 1 nº entero >0 y <=100 luego contar sus digitos
Publicado por: BETA_V en 7 Abril 2008, 17:33 pm
¡Saludos! un placer discutir contigo, ja, ja.  :laugh:

Gracias¡¡¡jajajaj


Título: Re: necesito saber como ingresar 1 nº entero >0 y <=100 luego contar sus digitos....
Publicado por: dpunisher03 en 14 Abril 2008, 20:57 pm
gracias por la ayuda me sirvio n
cierren el tema porfa ^^


Título: Re: necesito saber como ingresar 1 nº entero >0 y <=100 luego contar sus digitos....
Publicado por: caballero-maldito en 9 Marzo 2009, 22:49 pm
en muchos lenguajes de programacion es necesario inicializar las variables con algun valor aunque este sea cero, si dudas intenta practicarlo en C cuando declaras las variables toman el valor del espacio en memoria que les asigna el sistema
si el siguiente codigo t da algun cero digo publicamente que soy gay  :xD (y aclaro no lo soy)

el programa solo muestra el valor de algunos espacios de la memoria, o dicho de otra forma muestra lo que guarda cada elemento del arreglo sin una asignacion o inicializacion previa.

#include<stdio.h>
#include<conio.h>
#define x 10
void main()
{
   int num
  • ;
   int i;
   clrscr();
   for(i=0;i<=x;i++)
   {
      printf("%d, ",i);
   }
}
   


Título: Re: necesito saber como ingresar 1 nº entero >0 y <=100 luego contar sus digitos....
Publicado por: leogtz en 11 Marzo 2009, 07:02 am
En C :
Código
  1. #include <stdio.h>
  2. int main()
  3. {
  4.    signed int numero;
  5.    signed int digito_uno;
  6.    signed int digito_dos;
  7.    printf("Introduzca un numero mayor a 0 y menor a 100 : ");
  8.    scanf("%i", &numero);
  9.    if(numero > 0 && numero < 100)
  10.    {
  11.        if(numero > 10)
  12.        printf("\nTiene 2 digitos");
  13.        {
  14.        digito_dos = numero % 10;
  15.        numero /= 10;
  16.        digito_uno = numero % 10;
  17.        }
  18.        printf("\n%i%i", digito_dos, digito_uno);
  19.    } else {
  20.        printf("El numero no tiene 2 digitos\n");
  21.    }
  22.    return 0;
  23. }
  24.  
  25.  

Saludos.


Título: Re: necesito saber como ingresar 1 nº entero >0 y <=100 luego contar sus digitos....
Publicado por: DarkItachi en 9 Abril 2009, 12:15 pm
Aqui el mio:

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. main()
  5. {
  6.      int num, dgt;
  7.      while (1==1)
  8.      {
  9.            cout<<endl<<"Introduzca numero: ";
  10.            cin>>num;
  11.            cout<<endl;
  12.            if (num>0 && num<=100)
  13.            {
  14.                if (num<10) dgt=1;
  15.                if (num>9) dgt=2;
  16.                if (num==100) dgt=3;
  17.                break;
  18.            }
  19.            else
  20.            {
  21.                cout<<"Introduzca un numero valido!"<<endl; continue;
  22.            }
  23.      }
  24.      system("cls");
  25.      cout<<"El numero es: "<<num<<endl;
  26.      if (num==100)
  27.      {
  28.         cout<<"El numero invertido es 001."<<endl;
  29.      }
  30.      else if (num>=10)
  31.      {
  32.         int nvr, nvr2;
  33.         nvr=num % 10;      
  34.         nvr2=num/10;
  35.         cout<<"El numero invertido es " << nvr << nvr2 <<endl;
  36.      }
  37.      else if (num<10)
  38.      {
  39.           cout<<"El numero invertido es " << num<<endl;
  40.      }
  41.      cout<<"El Numero de digitos del numero es: "<<dgt<<endl;
  42.      system("pause");
  43. }
  44.  


Título: Re: necesito saber como ingresar 1 nº entero >0 y <=100 luego contar sus digitos....
Publicado por: leogtz en 9 Abril 2009, 21:11 pm
En Batch Script :
Código
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. :code
  4. set /p "numero=Numero : "
  5. if not defined numero (goto:code)
  6. if %numero% gtr 0 (
  7. if %numero% lss 100 (
  8. call:view %numero%
  9. goto:eof
  10. ) else (
  11. echo Mal.
  12. exit /b 1
  13. )
  14. )
  15. goto:eof
  16. :view
  17. set "numero=%1"
  18. set "numero2=%1"
  19. set /a "contador=0"
  20. :bucle
  21. if not defined numero (goto:end)
  22. set "numero=%numero:~1%"
  23. set /a "contador+=1"
  24. goto:bucle
  25. :end
  26. echo.%numero2% tiene %contador% digitos.
  27. set /a "contador-=1"
  28. echo.Invertido : %numero2:~-1%%numero2:~0,1%
  29. set /p ,=
  30. exit /b 0

Salida :

Código:
Numero : 73
73 tiene 2 digitos.
Invertido : 37


Título: Re: necesito saber como ingresar 1 nº entero >0 y <=100 luego contar sus digitos....
Publicado por: Eliptico en 27 Mayo 2009, 23:28 pm
¿Y de esta forma?  ;D
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main(int agrc,char* argv[])
  6. {
  7.    char numero[4]; /*para poder guardar 3 digitos*/
  8.    int num;
  9.    char i; /*un contador pequeñico para los bucles*/
  10.  
  11.    do{
  12.        printf("Introduce un numero entre 1 y 100, ambos incluidos: ");
  13.        fflush(stdin);
  14.        scanf("%d",&num);
  15.    }while(num<0 || num>100);
  16.  
  17.    sprintf(numero,"%d",num);
  18.  
  19.     printf("El numero tiene %d cifras.\n",strlen(numero));
  20.     printf("El numero invertido es: ");
  21.  
  22.     for(i=strlen(numero)-1;i>=0;i--)
  23.        printf("%c",numero[i]);
  24.     printf("\n");
  25.  
  26.     system("PAUSE");
  27.  
  28.    return 0;
  29. }
  30.  

Bueno, ya se que es C, pero se popdra transportar a C++ no?


Título: Re: necesito saber como ingresar 1 nº entero >0 y <=100 luego contar sus digitos....
Publicado por: Eliptico en 28 Mayo 2009, 08:24 am
Y aun otra forma mas divertida de hacerlo:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define MAX 10000
  5.  
  6. struct NodoEntero
  7. {
  8.    unsigned char cifra;
  9.    NodoEntero* Enlace;
  10. };
  11. typedef struct NodoEntero NodoEntero;
  12. typedef NodoEntero* ptrNodoEntero;
  13.  
  14. void push(ptrNodoEntero* Base,unsigned char valor);
  15. unsigned char pop(ptrNodoEntero*);
  16. char pila_vacia(ptrNodoEntero);
  17.  
  18. int main(int argc,char* argv[])
  19. {
  20.    int numero,numcifras=0,potenciaDiez=1;
  21.    ptrNodoEntero basePila=NULL;
  22.  
  23.    do{
  24.        printf("Introduce un numero entre 1 y %d (ambos incluidos): ",MAX);
  25.        fflush(stdin);
  26.        scanf("%d",&numero);
  27.    }while(numero<0 || numero>MAX);
  28.  
  29.    do{
  30.        push(&basePila,numero%10);
  31.        numero/=10;
  32.        numcifras++;
  33.    }while(numero!=0);
  34.  
  35.    printf("El numero tiene %d cifras\n",numcifras);
  36.  
  37.    do{
  38.        numero += potenciaDiez * pop(&basePila);
  39.        potenciaDiez*=10;
  40.    }while(!pila_vacia(basePila));
  41.  
  42.    printf("El numero invertido es: %d\n",numero);
  43.  
  44.    system("PAUSE");
  45. }
  46.  
  47. void push(ptrNodoEntero* Base,unsigned char valor)
  48. {
  49.    ptrNodoEntero NuevoNodo;
  50.  
  51.    NuevoNodo=(NodoEntero*)malloc(sizeof(NodoEntero));
  52.    NuevoNodo->cifra=valor;
  53.    NuevoNodo->Enlace=(*Base);
  54.    (*Base)=NuevoNodo;
  55. }
  56.  
  57. unsigned char pop(ptrNodoEntero* Base)
  58. {
  59.    ptrNodoEntero Aux;
  60.    unsigned char ret;
  61.  
  62.    Aux=(*Base);
  63.    ret=(*Base)->cifra;
  64.    (*Base)=(*Base)->Enlace;
  65.    free(Aux);
  66.  
  67.    return ret;
  68. }
  69.  
  70. char pila_vacia(ptrNodoEntero Base)
  71. {
  72.    return (Base==NULL ? 1 : 0);
  73. }
  74.  

Jejeje, a ver si cae otra forma....

¿Se nota que me aburro?

Un saludo!!!!!!!!!!!!!