Autor
|
Tema: como hacer un programa que imprima los numeros que no estan dentro de una rango (Leído 5,508 veces)
|
pefo
Desconectado
Mensajes: 4
|
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
Mensajes: 1.314
|
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)
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 .....- : #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!.
|
|
|
En línea
|
|
|
|
pefo
Desconectado
Mensajes: 4
|
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
Mensajes: 392
Odio las ranas.
|
#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; } } }
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
#include <stdio.h> int isInRange(int n,int limiteInferior,int limiteSuperior){ if( n >= limiteInferior || n <= limiteSuperior){ return TRUE; }else{ return FALSE; } } }
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
Mensajes: 392
Odio las ranas.
|
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
Mensajes: 1.639
|
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
|
|
|
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
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Programa que imprima los 1000 primeros numeros primos
Programación C/C++
|
muymuyperdido
|
7
|
22,636
|
24 Noviembre 2012, 23:30 pm
por Beakman
|
|
|
Como puedo saber los números que faltan dentro del rango ?
« 1 2 3 »
.NET (C#, VB.NET, ASP)
|
luis456
|
24
|
13,422
|
28 Enero 2014, 11:43 am
por luis456
|
|
|
[PYTHON]¿Cómo guardar datos de un rango de números que genero con un While?
Scripting
|
4T1L4
|
2
|
3,203
|
24 Octubre 2016, 15:23 pm
por 4T1L4
|
|
|
Progrmacion en C ¿Como hacer para que me imprima los caracteres!?
Programación C/C++
|
SSMACHINE
|
2
|
1,866
|
31 Octubre 2016, 01:40 am
por MAFUS
|
|
|
[BATCH][Aporte] Range.bat (generador de numeros aleatorio dentro de un rango)
Scripting
|
CodeRed
|
1
|
3,668
|
23 Mayo 2020, 20:44 pm
por .:Xx4NG3LxX:.
|
|