elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  como hacer un programa que imprima los numeros que no estan dentro de una rango
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: como hacer un programa que imprima los numeros que no estan dentro de una rango  (Leído 5,508 veces)
pefo

Desconectado Desconectado

Mensajes: 4


Ver Perfil
como hacer un programa que imprima los numeros que no estan dentro de una rango
« 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)


En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: como hacer un programa que imprima los numeros que no estan dentro de una rango
« Respuesta #1 en: 20 Noviembre 2012, 21:09 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)
Citar
Vamos 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 .....- :
Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #define N   8
  4.  
  5. int main()
  6. {
  7.    int num[N]={4,8,10,14,16,15,14,9},i=0,j=0,k,aux[8],num1[8],n=0;
  8.    for (i=0;i<=N;i++)
  9.        if (num[i]<0 || num[i]>10) {aux[j]=num[i];j++;}
  10.    for( i = 0; i < j; ++i ){
  11.            for( k = 0; k < n && num1[k] != aux[i]; ++k ) ;
  12.            if( k >= n ){
  13.                    num1[n] = aux[i];
  14.                    ++n;
  15.              }
  16.        }
  17.    for (i=0;i<n;i++)  printf("%d  ",num1[i]);
  18.    return 0;
  19. }
Saluditos!.


En línea

pefo

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: como hacer un programa que imprima los numeros que no estan dentro de una rango
« Respuesta #2 en: 21 Noviembre 2012, 06:58 am »

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;
}
En línea

Oblivi0n


Desconectado Desconectado

Mensajes: 392

Odio las ranas.


Ver Perfil
Re: como hacer un programa que imprima los numeros que no estan dentro de una rango
« Respuesta #3 en: 21 Noviembre 2012, 11:57 am »

Código
  1. #include <stdio.h>
  2.  
  3. #define TRUE 1
  4. #define FALSE 0
  5.  
  6. int  isInRange(int n,int limiteInferior,int limiteSuperior);
  7. void printNumbers(int numeros[], int limiteInferior,int limiteSuperior);
  8.  
  9.  
  10. int
  11.  
  12. int main(){
  13.  
  14. int n[] = {1,2,5,3,6,4,8,7,10,4,3,};
  15. int limiteInferior, limiteSuperior;
  16. printf("Introduzca el limite inferior");
  17. scanf("%d",&limiteInferior);
  18. printf("Introduzca el limite superior");
  19. scanf("%d", &limiteSuperior);
  20. if(limiteInferior < limiteSuperior){
  21. printNumbers(n,11,limiteInferior,limiteSuperior);
  22. }else{
  23. frptinf(stderr,"Limite superior inferior ( o igual ) a limite inferior");
  24. }
  25.  
  26.  
  27. void printNumbers(int numeros[],int size, int limiteInferior,int limiteSuperior){
  28.  
  29. for(int i = 0; i < size;i++){
  30. if(isInRange(numeros[i],limiteInferior,limiteInferior) == TRUE){
  31. printf("Numero: %d  \n",numeros[i]);
  32. }
  33. }
  34. }
  35.  
  36. int  isInRange(int n,int limiteInferior,int limiteSuperior){
  37. if( n >= limiteInferior || n <= limiteSuperior){
  38. return TRUE;
  39. }else{
  40. return FALSE;
  41. }
  42. }
  43. }
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: como hacer un programa que imprima los numeros que no estan dentro de una rango
« Respuesta #4 en: 21 Noviembre 2012, 13:36 pm »

Código
  1. #include <stdio.h>
  2.  
  3.  
  4. int  isInRange(int n,int limiteInferior,int limiteSuperior){
  5. if( n >= limiteInferior || n <= limiteSuperior){
  6. return TRUE;
  7. }else{
  8. return FALSE;
  9. }
  10. }
  11. }
Citar
Tiene el problema de que el 14 o cualquier otro numero que se repita, se repetirá en la respuesta.
Saluditos!.
En línea

Oblivi0n


Desconectado Desconectado

Mensajes: 392

Odio las ranas.


Ver Perfil
Re: como hacer un programa que imprima los numeros que no estan dentro de una rango
« Respuesta #5 en: 21 Noviembre 2012, 14:15 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
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: como hacer un programa que imprima los numeros que no estan dentro de una rango
« Respuesta #6 en: 21 Noviembre 2012, 20:49 pm »

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):
Código
  1. int isInRange(int num, int min, int max)
  2. {
  3.   return num >= min && num <= max;
  4. }

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines