Hola, estoy intentando realizar un programa que inserte un numero de 1 a 9 y busque si esta en otra cifra pedida, ejemplo:
introduzco el 5, introduzco el 167457, y me dice que el 5 esta en la cifra.
Pero no funciona y no le encuentro el fallo, por un lado tengo un problema a la hora de contar las cifras y finalmente no funciona.
¿Me podríais echar una mano? Gracias de antemano.
#include <stdio.h>
#include <stdlib.h>
#define TAM 20
int main()
{
printf("*** CIFRAS ***\n\n");
int i,num,cifra,resto[TAM];
int semaforo=0;
int potencia=10;
int longitud=1;
int copia_cifra;
//introduzco un numero de 1 a 9
printf("Intrduce un entero de 1 a 9:\n");
scanf(" %d",&num);
while(num>9||num<1)
{
printf("ERROR. Intrduce un entero de 1 a 9");
scanf(" %d",&num);
}
//introduzco una cifra mayor que 0
printf("Intrduce una cifra mayor que 0:\n");
scanf(" %d",&cifra);
while(cifra<1)
{
printf("ERROR. Intrduce una cifra mayor que 0:\n");
scanf(" %d",&cifra);
}
copia_cifra=cifra;
//Aqui obtengo el numero de cifras que tiene mi numero
while(copia_cifra/10>0)
{
copia_cifra=copia_cifra/10;
longitud++;
}
//Divido la cifra por decena centenas etc y averiguo si coincide con el numero pedido
for(i=0;i<longitud&&semaforo!=1;i++)
{
resto[i]=cifra%(potencia^(i+1));
return 0;
if(resto[i]==num)semaforo=1;
else if(resto[i]/(potencia^i)==num)semaforo=1;
}
if(semaforo==1)printf("\nEl numero aparece en la cifra");
else if(semaforo==0)printf("\nEl numero NO aparece en la cifra");
return 0;
}
Saludos.
Me pidieron un ejercicio igual que ese en clase hace 1 año,te mostraré el código para ver si te ayuda a aclararte.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int numero=0,propuesto=0;
printf("Introduzca un numero mayor que cero,y luego uno desde 0 hasta 9 \n el primero sera usado de referencia y el segundo el que se \n busca.\n");
while(numero<1 || propuesto<1) scanf("%d %d",&numero,&propuesto);
while(numero>0)
{
if(numero%10 == propuesto)
{
printf("El numero pertence a la cifra introducida \n");
numero = 0;
propuesto = 0;
}
else
numero = numero/10;
}
if(propuesto) printf("La cifra propuesta no existe en el numero\n");
return 0;
}
Un saludo.
Perfecto,muchas gracias ;-)
Veo que ya te dieron una respuesta, pero con respecto a tu código, te sugiero que utilices un arreglo y luego pedir la cifra con char *fgets(char *cadena, int n, FILE *stream);
, ya que fgets lee una cadena de caracteres siendo "n" el numero maximo de cifras a leer y STREAM el archivo de donde lee, en este caso sería "stdin" que es el archivo de entrada de teclado. Luego vas revisando caracter por caracter gracias al arreglo y revisas si es = 5.
Espero que te sirva.