como puedo hacer un programa en C que dados N numeros proporcionados por el usuario imprima los que no se no se encuentren dentro de un rango igualmento proporcionado por el usuario.
por ejemplo el usuario introducirá:
N números: 4, 8, 10 , 14, 16, 15, 14
limite inf: 0
limite sup: 10
entonces el programa imprimirá los números que no se encuentren dentro del 0 al 10
regresara: 14, 16, 15 (sin imprimir números previamente leídos)
Cita de: pefo en 20 Noviembre 2012, 19:37 PM
como puedo hacer un programa en C que dados N numeros proporcionados por el usuario imprima los que no se no se encuentren dentro de un rango igualmento proporcionado por el usuario.
por ejemplo el usuario introducirá:
N números: 4, 8, 10 , 14, 16, 15, 14
limite inf: 0
limite sup: 10
entonces el programa imprimirá los números que no se encuentren dentro del 0 al 10
regresara: 14, 16, 15 (sin imprimir números previamente leídos)
CitarVamos que te hagan toda la tarea!!!!.No aportas nada ! ! !
Pero como no somos malos, para que te hagas una idea de por donde pueden ir los tiros -es una opción, las hay .....- :
#include<stdio.h>
#include<stdlib.h>
#define N 8
int main()
{
int num[N]={4,8,10,14,16,15,14,9},i=0,j=0,k,aux[8],num1[8],n=0;
for (i=0;i<=N;i++)
if (num[i]<0 || num[i]>10) {aux[j]=num[i];j++;}
for( i = 0; i < j; ++i ){
for( k = 0; k < n && num1[k] != aux[i]; ++k ) ;
if( k >= n ){
num1[n] = aux[i];
++n;
}
}
for (i=0;i<n;i++) printf("%d ",num1[i]);
return 0;
}
Saluditos!.
ya lo hice y si hace lo que quiero, pero ahora no se como separarlo por funciones
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *nums;
int cant,i,lim_inf,lim_sup;
printf("Ingrese la cantidad de numeros:");
scanf("%d",&cant);
nums=(int *) malloc(cant*sizeof(int));
for(i=0;i<cant;i++)
{
printf("\nIngrese el %d numero:",i+1);
scanf("%d",nums+i);
}
printf("\nIngrese el limite inferior :");
scanf("%d",&lim_inf);
printf("\nIngrese el limite superior :");
scanf("%d",&lim_sup);
for(i=0;i<cant;i++)
{
if(*(nums+i)>lim_sup || *(nums+i)<lim_inf)
printf("%d ",*(nums+i));
}
return 0;
}
#include <stdio.h>
#define TRUE 1
#define FALSE 0
int isInRange(int n,int limiteInferior,int limiteSuperior);
void printNumbers(int numeros[], int limiteInferior,int limiteSuperior);
int
int main(){
int n[] = {1,2,5,3,6,4,8,7,10,4,3,};
int limiteInferior, limiteSuperior;
printf("Introduzca el limite inferior");
scanf("%d",&limiteInferior);
printf("Introduzca el limite superior");
scanf("%d", &limiteSuperior);
if(limiteInferior < limiteSuperior){
printNumbers(n,11,limiteInferior,limiteSuperior);
}else{
frptinf(stderr,"Limite superior inferior ( o igual ) a limite inferior");
}
void printNumbers(int numeros[],int size, int limiteInferior,int limiteSuperior){
for(int i = 0; i < size;i++){
if(isInRange(numeros[i],limiteInferior,limiteInferior) == TRUE){
printf("Numero: %d \n",numeros[i]);
}
}
}
int isInRange(int n,int limiteInferior,int limiteSuperior){
if( n >= limiteInferior || n <= limiteSuperior){
return TRUE;
}else{
return FALSE;
}
}
}
Cita de: Oblivi0n en 21 Noviembre 2012, 11:57 AM
#include <stdio.h>
int isInRange(int n,int limiteInferior,int limiteSuperior){
if( n >= limiteInferior || n <= limiteSuperior){
return TRUE;
}else{
return FALSE;
}
}
}
CitarTiene el problema de que el 14 o cualquier otro numero que se repita, se repetirá en la respuesta.
Saluditos!.
Cita de: leosansan en 21 Noviembre 2012, 13:36 PM
Saluditos!.
Se soluciona de manera sencilla con un metodo "contains". Guardando en otro array los numero ya impresos, y comprobando que este no esté repetido
Dos comentarios en relación al programa de Oblivi0n:
1) El lenguaje C no permite la anidación de funciones, esta es una extensión. Uno de los compiladores que la soportan es, si recuerdo correctamente, GCC. Para solucionarlo basta con sacar a "printNumbers" e "isInRange" de la función "main".
2) Los operadores lógicos y de comparación resultan en el valor uno si se cumple la condición y cero en caso contrario. En base a ello se puede reducir la función que comprueba el rango (también hay que sustituir el operador lógico OR por AND):
int isInRange(int num, int min, int max)
{
return num >= min && num <= max;
}
Un saludo