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 ::)
espero que te sirva, es lo mas simple que se puede hacer
var
valor:integer;
begin
repeat
readln(valor);
until (valor>0) and (valor<=100);
if valor>10 then writeln('Tiene 2 digitos')
else writeln('Tiene 1 digito');
writeln(valor mod 10,'',valor div 10);
readln;
end.
se me olvido decir que era en c++ usando solo secuencias de repeticion como while por do while if etc
si pueder ayudarme bkn
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
Cita de: 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
Aqui te lo dejo, adaptalo a tus gustos y preferencias:
//incluyendo librerias...
#include<stdio.h> //--> para el printf, scanf
#include<conio.h> //--> para el clrscr, getch
//Declarando variables globales
int numero, digito, digito2;
//Cuerpo principal del programa
void main()
{
while ((numero<1) || (numero>100))
{
//limpiamos pantalla cada vez que entremos al ciclo
clrscr();
printf("Introduzca un numero: ");
scanf("%d",&numero);
}
if (numero<10)
{
printf("Tiene 1 digito, invertido --> %d",numero);
}
else
{
if (numero>99)
{
printf("Tiene 3 digitos, Invertido --> 001");
}
else
{
digito=numero%10;
digito2=numero/10;
printf("Tiene 2 digitos, Invertido --> %d%d",digito,digito2);
}
}
getch();
}
Espero te sea de ayuda!
¡S4lu2!
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¡¡
Cita de: 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¡¡
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.
int ejemplo;
void main()
{
printf("Valor inicial --> %d",ejemplo);
getch();
}
hola¡¡ inicializar los valores es una buena practica,y mas cuando programas en diferentes lenguajes,en pascal no vienen inicializadas las variables¡¡
Cita de: 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¡¡
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:
Program Ejemplo;
Uses
Crt;
Var
Numero:Integer;
Begin
Clrscr;
textcolor(yellow);
gotoxy(30,25);write('Valor predeterminado --> ',Numero);
Readln;
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!
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???
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:
Cita de: cΔssiΔnі en 4 Abril 2008, 22:37 PM
¡Saludos! un placer discutir contigo, ja, ja. :laugh:
Gracias¡¡¡jajajaj
gracias por la ayuda me sirvio n
cierren el tema porfa ^^
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);
}
}
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.
Aqui el mio:
#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");
}
En Batch Script :
@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
¿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?
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!!!!!!!!!!!!!