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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Tengo un ejercicio al que no doy forma.Necesito un empujón
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Tengo un ejercicio al que no doy forma.Necesito un empujón  (Leído 3,875 veces)
el gusanillo

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Tengo un ejercicio al que no doy forma.Necesito un empujón
« en: 28 Enero 2018, 08:45 am »

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 Desconectado

Mensajes: 1.603



Ver Perfil
Re: Tengo un ejercicio al que no doy forma.Necesito un empujón
« Respuesta #1 en: 28 Enero 2018, 12:34 pm »

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:
Código:
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 Desconectado

Mensajes: 20


Ver Perfil
Re: Tengo un ejercicio al que no doy forma.Necesito un empujón
« Respuesta #2 en: 29 Enero 2018, 06:33 am »

Muchas gracias por la respuesta, me pongo con ello.
En línea

dijsktra

Desconectado Desconectado

Mensajes: 110


Mr Edsger Dijsktra (Tribute to)


Ver Perfil
Re: Tengo un ejercicio al que no doy forma.Necesito un empujón
« Respuesta #3 en: 2 Febrero 2018, 15:46 pm »

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.



Código
  1. #include <stdio.h>
  2.  
  3. /*
  4.   P : N > 0
  5.   Q : d = M - m
  6.   where
  7.   V[M] = max i : 0 <= i < N : V[i]
  8.   V[m] = min i : 0 <= i < N : V[i]
  9.  
  10.   I : Q[N/n] and 0 <= M,m < n , 1<= n <= N and *
  11.   V[M] = max i : 0 <= i < n : V[i]
  12.   V[m] = max i : 0 <= i < n : V[i]  
  13.  
  14.   *  M,m for efficiency reasons.
  15.   C(n) : N - n >= 0
  16.   O(n)
  17. */
  18. int dist(const int V[], const int N)
  19. {
  20.  int M,m,n;
  21.  for(M=m=0, n=1 ; n < N ; n++)
  22.    {
  23.      M = (V[n] > V[M])?n:M;
  24.      m = (V[n] < V[m])?n:m;      
  25.    }
  26.  return (M-m);
  27. }
  28.  
  29. #define MAX 1000
  30. int main (int argc, char **args)
  31. {
  32.  int N=0;
  33.  int V[MAX];
  34.  while (scanf("%d",&V[N])!=EOF) N++;
  35.  printf("%d\n",dist(V,N));
  36. }


Ejemplo de salida
Código:
-5
-3
-1
1
3
5
7
9
11
13
15
10
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 Desconectado

Mensajes: 20


Ver Perfil
Re: Tengo un ejercicio al que no doy forma.Necesito un empujón
« Respuesta #4 en: 31 Marzo 2018, 09:20 am »

Muchas gracias por la ayuda.
En línea

el gusanillo

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: Tengo un ejercicio al que no doy forma.Necesito un empujón
« Respuesta #5 en: 30 Julio 2019, 06:45 am »

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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Tengo un fallo en el siguiente ejercicio
Programación C/C++
juni85 4 2,921 Último mensaje 8 Junio 2010, 08:19 am
por juni85
Tengo un problema con un ejercicio
Programación Visual Basic
Senior++ 5 2,786 Último mensaje 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 Último mensaje 8 Septiembre 2015, 19:53 pm
por ivancea96
tengo un ejercicio que no se como resolverlo
Programación C/C++
tiburon 1 1,803 Último mensaje 15 Octubre 2019, 23:53 pm
por K-YreX
TENGO PROBLEMAS CON 'SWITCH' EN UN EJERCICIO
Programación C/C++
BARIS514 3 3,287 Último mensaje 5 Marzo 2020, 03:09 am
por BARIS514
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines