Anuncios Google

Ayuda con este codigo C

Buenas, a ver si alguno me puede echar una mano con este codigo. Se trata de que busque en una array el numero que ingresa pero cuando me devuelve la peticion, me muestra las opciones repetidas. Os dejo el codigo por si mi nefasta explicacion no ha servido. 

#include <stdio.h>
#include <stdlib.h>
#define longitud 5
#define NO -1
 
int buscar(int Nvalor, int array[], int tamano){
 
	int i;
	for(i=0;i<tamano;i++){
		if(array[i] == Nvalor)
		return i;			
	}
 
	return NO;	
}
 
int main(){
 
	int array[longitud]={1, 5, 3, 4, 5 };
	int numero;
	int actual=0;
	int crida;
 
	printf("Dime que numero quieres buscar? [1, 5, 3, 4, 5]\n");
	scanf("%d", &numero);
 
	printf("\n");
 
	while(crida!=NO){
		crida = buscar (numero, &array[actual], longitud-actual);
 
		if(actual=actual+crida+1){
	   			printf("El numero %d se encuentra en la posicion %d\n", numero, actual);	
		}
			else (crida == NO);{
		  		printf("Numero no encontrado\n");
			}
	}
system("pause");
}

 

Muchas gracias!


¡John 3:16!


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de doseuros

No entiendo muy bien cuál ni

No entiendo muy bien ni cuál es el objetivo del código ni cuál es el problema que tienes. De entrada, date cuenta que cuando evalúas la expresión if(actual=...) estás realizando una asignación (=) en lugar de una comparación(==).

Si nos explicas un poco lo que debería hacer el ejercicio y el problema que te da es posible que podamos ayudarte más. Si te es difícil de redactar el comportamiento que debería tener el código, simplemente pon algún juego de pruebas para que lo veamos directamente.

Saludos


Imagen de Annubiis

#include <stdio.h> #include

#include <stdio.h>
#include <stdlib.h>
#define longitud 5
#define NO -1
 
int buscar(int Nvalor, int array[], int tamano){
 
	int i;
	for(i=0;i<=tamano;i++){
		if(array[i] == Nvalor)
			return i;		
	}
 
 	return NO;
 
}
 
int main(){
 
	int array[longitud]={1, 5, 3, 4, 5};
	int numero;
	int actual=0;
	int crida;
 
	printf("Dime que numero quieres buscar? [1, 5, 3, 4, 5]\n");
	scanf("%d", &numero);
 
	printf("\n");
 
	while(crida != NO){
		crida = buscar (numero, &array[actual], longitud-actual);
 
 		if(crida != NO){
 			if(actual = actual+crida+1){
	   			printf("El numero %d se encuentra en la posicion %d\n", numero, actual);	
			}
		}
		else if (crida == NO){
		  		printf("Numero no encontrado o no esta en mas posiciones\n\n");
		}
 
	}
 
system("pause");
}

El problema está en que cuando se vuelve a hacer la iteraccion del bucle while no restringes con un if, entonces te lo vuelve a mostrar de nuevo :), espero haberte servido de ayuda.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.