Autor
|
Tema: Tengo un ejercicio al que no doy forma.Necesito un empujón (Leído 3,875 veces)
|
el gusanillo
Desconectado
Mensajes: 20
|
Escribid un programa que,dado un array de 10 enteros (introducidos a mano en el código),calcule la diferencia entre la posición del valor mayor y la del menor (si la diferencia es negativa,querrá decir que el valor menor aparecerá después del array).
Lo llevo así:
#include<stdio.h> #include<stdlib.h> #define números_ a_pedir 10 #define max (a,b) a>b? a:b #define min (a,b) a<b a:b
int main (int arge, char**argv){ int i,máximo,minimo; máximo=minimo=0; for(i=0;i<números_a_pedir;++){ int n; scanf ("%i",&n); màximo=max (máximo,n); mínimo=min (mínimo,n) } printf("Maximo:%i,Minimo:%i",maximo,minimo); return EXIT_SUCCESS;
De momento, hasta aquí llego.Se que tengo errores,pero no consigo avanzar.
Muchas gracias por vuestro tiempo.
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Antes de ayudarte con tu el algoritmo: El ejercicio pide números introducidos a mano en el código, eso es, el array debes inscribirlo de la forma: int array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; Los valores óbviamente debes ponerlos tú. Ahora: Sabes que sí o sí es un array. Prepara dos variables, una que guarde el mayor y otra que guarde el menor. Al principio del código haz que valgan lo mismo que el primer elemento del array. Después, por cada elemento del array, menos el primero por la razón que ya hemos dicho, si menor es mayor que el elemento del array copiar dicho elemento a menor y de igual forma si mayor es menor que el elemento del array copiar dicho elemento a mayor. Una vez terminado el bucle el número que buscas será la diferencia entre mayor y menor. No te preocupes por si menor o mayor y menor son negativos pues matemáticamente la respuesta será igual de buena.
|
|
|
En línea
|
|
|
|
el gusanillo
Desconectado
Mensajes: 20
|
Muchas gracias por la respuesta, me pongo con ello.
|
|
|
En línea
|
|
|
|
dijsktra
Desconectado
Mensajes: 110
Mr Edsger Dijsktra (Tribute to)
|
Algunos comentarios antes: - Recomendable: Nombres cortos y significativos, M "grande" para maximo, m "pequeña" para minimo, cuando sea posible.
- Recomendable: No usar caracteres que no sean ANSI en los fuentes (ó,í..). Dependiendo de la configuración, los compiladores pueden no procesar bien el fuente
- Recomendable: separar el proceso de computo (hallar distancias) de la IO (scanf, printf)
- Se exije al menos un elemento en el array. Parece que no pero esta da problemas en las inicializaciones... a 1, no a 0.
- Si el vector tiene elementos repetidos, la respuesta no es unica. i.e en -3,-3, puede ser 0,1,-1
- Se pide la distancia entre posiciones M,m, no entre valores V[M],V[m]
- Para un curso elemental, obviar los comentarios de especificación.
#include <stdio.h> /* P : N > 0 Q : d = M - m where V[M] = max i : 0 <= i < N : V[i] V[m] = min i : 0 <= i < N : V[i] I : Q[N/n] and 0 <= M,m < n , 1<= n <= N and * V[M] = max i : 0 <= i < n : V[i] V[m] = max i : 0 <= i < n : V[i] * M,m for efficiency reasons. C(n) : N - n >= 0 O(n) */ int dist(const int V[], const int N) { int M,m,n; for(M=m=0, n=1 ; n < N ; n++) { M = (V[n] > V[M])?n:M; m = (V[n] < V[m])?n:m; } return (M-m); } #define MAX 1000 int main (int argc, char **args) { int N=0; int V[MAX]; while (scanf("%d",&V [N ])!=EOF ) N ++; }
Ejemplo de salida Valores introducidos a mano. El ultimo valor es la distancia 10 (computada) entre el elemento -5 y 15
|
|
|
En línea
|
Si la depuración es el proceso de eliminar fallos en el software, entonces programar debe ser el proceso de ponerlos dentro. (Edsger Dijsktra)
|
|
|
el gusanillo
Desconectado
Mensajes: 20
|
Muchas gracias por la ayuda.
|
|
|
En línea
|
|
|
|
el gusanillo
Desconectado
Mensajes: 20
|
Buenos días
Pasado un tiempo he retomado la programación e ingresé en este ejercicio del que pedí ayuda.
Al pasarlo por DEV veo que al introducir los datos, es infinito.
¿Alguien me podría decir por qué?
Un saludo
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Tengo un fallo en el siguiente ejercicio
Programación C/C++
|
juni85
|
4
|
2,921
|
8 Junio 2010, 08:19 am
por juni85
|
|
|
Tengo un problema con un ejercicio
Programación Visual Basic
|
Senior++
|
5
|
2,786
|
18 Junio 2011, 18:49 pm
por Senior++
|
|
|
Errores con un ejercicio de registros en el que tengo que crear una agenda. C++
Programación C/C++
|
seryioo
|
4
|
2,001
|
8 Septiembre 2015, 19:53 pm
por ivancea96
|
|
|
tengo un ejercicio que no se como resolverlo
Programación C/C++
|
tiburon
|
1
|
1,803
|
15 Octubre 2019, 23:53 pm
por K-YreX
|
|
|
TENGO PROBLEMAS CON 'SWITCH' EN UN EJERCICIO
Programación C/C++
|
BARIS514
|
3
|
3,287
|
5 Marzo 2020, 03:09 am
por BARIS514
|
|