Programa que busca un número en una cifra

Iniciado por rosky, 27 Enero 2017, 20:40 PM

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

rosky

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

AnthonyS

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.

rosky


NavyPenguin

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.