necesito saber como ingresar 1 nº entero >0 y <=100 luego contar sus digitos....

Iniciado por dpunisher03, 3 Abril 2008, 06:18 AM

0 Miembros y 1 Visitante están viendo este tema.

cassiani

Cita de: 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???

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

Cita de: cΔssiΔnі en  4 Abril 2008, 18:43 PM
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:


dpunisher03


caballero-maldito

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);
       }
    }
       

leogtz

En C :
#include <stdio.h>
int main()
{
    signed int numero;
    signed int digito_uno;
    signed int digito_dos;
    printf("Introduzca un numero mayor a 0 y menor a 100 : ");
    scanf("%i", &numero);
    if(numero > 0 && numero < 100)
    {
        if(numero > 10)
        printf("\nTiene 2 digitos");
        {
        digito_dos = numero % 10;
        numero /= 10;
        digito_uno = numero % 10;
        }
        printf("\n%i%i", digito_dos, digito_uno);
    } else {
        printf("El numero no tiene 2 digitos\n");
    }
    return 0;
}



Saludos.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

DarkItachi

Aqui el mio:

Código (cpp) [Seleccionar]

#include <iostream>
using namespace std;

main()
{
      int num, dgt;
      while (1==1)
      {
            cout<<endl<<"Introduzca numero: ";
            cin>>num;
            cout<<endl;
            if (num>0 && num<=100)
            {
                if (num<10) dgt=1;
                if (num>9) dgt=2;
                if (num==100) dgt=3;
                break;
            }
            else
            {
                cout<<"Introduzca un numero valido!"<<endl; continue;
            }
      }
      system("cls");
      cout<<"El numero es: "<<num<<endl;
      if (num==100)
      {
         cout<<"El numero invertido es 001."<<endl;
      }
      else if (num>=10)
      {
         int nvr, nvr2;
         nvr=num % 10;       
         nvr2=num/10;
         cout<<"El numero invertido es " << nvr << nvr2 <<endl;
      }
      else if (num<10)
      {
           cout<<"El numero invertido es " << num<<endl;
      }
      cout<<"El Numero de digitos del numero es: "<<dgt<<endl;
      system("pause");
}
     
Come to me when you have these eyes...

By more that you try it, a feather never will achieve to fly.

leogtz

En Batch Script :
Código (dos) [Seleccionar]
@echo off
setlocal enabledelayedexpansion
:code
set /p "numero=Numero : "
if not defined numero (goto:code)
if %numero% gtr 0 (
if %numero% lss 100 (
call:view %numero%
goto:eof
) else (
echo Mal.
exit /b 1
)
)
goto:eof
:view
set "numero=%1"
set "numero2=%1"
set /a "contador=0"
:bucle
if not defined numero (goto:end)
set "numero=%numero:~1%"
set /a "contador+=1"
goto:bucle
:end
echo.%numero2% tiene %contador% digitos.
set /a "contador-=1"
echo.Invertido : %numero2:~-1%%numero2:~0,1%
set /p ,=
exit /b 0


Salida :

Numero : 73
73 tiene 2 digitos.
Invertido : 37

Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Eliptico

¿Y de esta forma?  ;D

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int agrc,char* argv[])
{
   char numero[4]; /*para poder guardar 3 digitos*/
   int num;
   char i; /*un contador pequeñico para los bucles*/

   do{
       printf("Introduce un numero entre 1 y 100, ambos incluidos: ");
       fflush(stdin);
       scanf("%d",&num);
   }while(num<0 || num>100);

   sprintf(numero,"%d",num);

    printf("El numero tiene %d cifras.\n",strlen(numero));
    printf("El numero invertido es: ");

    for(i=strlen(numero)-1;i>=0;i--)
       printf("%c",numero[i]);
    printf("\n");

    system("PAUSE");

   return 0;
}


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

Eliptico

Y aun otra forma mas divertida de hacerlo:

#include <stdio.h>
#include <stdlib.h>

#define MAX 10000

struct NodoEntero
{
   unsigned char cifra;
   NodoEntero* Enlace;
};
typedef struct NodoEntero NodoEntero;
typedef NodoEntero* ptrNodoEntero;

void push(ptrNodoEntero* Base,unsigned char valor);
unsigned char pop(ptrNodoEntero*);
char pila_vacia(ptrNodoEntero);

int main(int argc,char* argv[])
{
   int numero,numcifras=0,potenciaDiez=1;
   ptrNodoEntero basePila=NULL;

   do{
       printf("Introduce un numero entre 1 y %d (ambos incluidos): ",MAX);
       fflush(stdin);
       scanf("%d",&numero);
   }while(numero<0 || numero>MAX);

   do{
       push(&basePila,numero%10);
       numero/=10;
       numcifras++;
   }while(numero!=0);

   printf("El numero tiene %d cifras\n",numcifras);

   do{
       numero += potenciaDiez * pop(&basePila);
       potenciaDiez*=10;
   }while(!pila_vacia(basePila));

   printf("El numero invertido es: %d\n",numero);

   system("PAUSE");
}

void push(ptrNodoEntero* Base,unsigned char valor)
{
   ptrNodoEntero NuevoNodo;

   NuevoNodo=(NodoEntero*)malloc(sizeof(NodoEntero));
   NuevoNodo->cifra=valor;
   NuevoNodo->Enlace=(*Base);
   (*Base)=NuevoNodo;
}

unsigned char pop(ptrNodoEntero* Base)
{
   ptrNodoEntero Aux;
   unsigned char ret;

   Aux=(*Base);
   ret=(*Base)->cifra;
   (*Base)=(*Base)->Enlace;
   free(Aux);

   return ret;
}

char pila_vacia(ptrNodoEntero Base)
{
   return (Base==NULL ? 1 : 0);
}


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

¿Se nota que me aburro?

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