Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: el gusanillo en 30 Diciembre 2017, 07:48 am



Título: ejercicio " calcular la diferencia "
Publicado por: el gusanillo en 30 Diciembre 2017, 07:48 am
Buenos días, estoy intentando dar forma al siguiente ejercicio. A ver si me podeis ayudar un poco.
aprovecho para desearos a todod un feliz 2018

Escribid un programa que dado un array de 10 enteros (introducidos a  mano en el código),calcule la diferencia entre el valor menor y mayor.


#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
const int max=10;
float notas[10];
float mayor=0;
float menor=100;
float nmenor;
float nmayor;
float suma=0;
int i;
void main()
for(i=0;i<=max-1;i++)
{
   cout<<"Ingrese la nota"<<i<<endl;
   cin>>notas;
}
//Encuentro el mayor,menor y promedio
for(i=0;i<=max-1;i++)
{
   if(notas>mayor)
   {
      mayor=notas;
      nmayor=i
      if (notas<menor)
      {
         menor=notas;
         nmenor=i;
      }
      suma=suma+notas;
   }
   cout<<"la nota mayor es"<<mayor<<"y esta en la posicion"<<nmayor<<endl;
   cout<<"la noata menor es"<<menor<<"y esta en la posicion"<<menor<<endl;
   cout<<endl;
   for(i=0;i<max-1;i++)
   cout<<"la nota"<<i<<"es"<<notas<<endl;
   getch();
}


Título: Re: ejercicio " calcular la diferencia "
Publicado por: MAFUS en 31 Diciembre 2017, 00:57 am
Pues, a parte de que hay unas cuantas cosas mal: main debe ser siempre int y no hay apertura de llaves en main, el programa no hace lo que dice el enunciado, a saber:
· array de 10 enteros introducido a mano en el código
· encontrar la diferencia entre el mínimo y el máximo (¿no será entre el máximo y el mínimo?)


Título: Re: ejercicio " calcular la diferencia "
Publicado por: el gusanillo en 20 Enero 2018, 07:23 am
Muchas gracias por su aportación.Tomo buena nota y sigo trabajando en ello.
Soy novato en programación y autodidacta, asi que a base de estronciarme, voy aprendiendo.
Un saludo.


Título: Re: ejercicio " calcular la diferencia "
Publicado por: dariodr01 en 20 Enero 2018, 17:23 pm
Te dejo este codigo. Lo hice tal como dice el enunciado.
Salu2

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. const int maximo=5;
  5.  
  6. float notas[maximo];
  7. float mayor=0;
  8. float menor,diferencia;
  9. float suma=0;
  10. int i;
  11.  
  12. int main() {
  13.  
  14.  for(i=0; i<maximo; i++)
  15.  {
  16.    cout<<"Ingrese la nota"<<i<<endl;
  17.    cin>>notas[i];
  18.  }
  19.  
  20.  //Encuentro el mayor,menor
  21.  menor = notas[1];
  22.  
  23.  for(i=0; i<maximo; i++)
  24.  {
  25.    if(notas[i] > mayor)
  26.      mayor=notas[i];
  27.    else if (notas[i] < menor)
  28.      menor=notas[i];
  29.   }
  30.  
  31.   diferencia = mayor - menor;
  32.  
  33.   cout << "La diferencia entre la nota mayor y la nota menor es " << diferencia;
  34.  
  35.   return 0;
  36. }
  37.  


Título: Re: ejercicio " calcular la diferencia "
Publicado por: el gusanillo en 27 Enero 2018, 07:17 am
Buenos días, muchísimas gracias. Esto de aprender a piñón es duro. Me he propuesto aprender un poco de programación, por lo menos lo básico, y así entender algo de lo que empiezan a hacer mis hijos.
Un saludo.


Título: Re: ejercicio " calcular la diferencia "
Publicado por: dijsktra en 2 Febrero 2018, 16:15 pm
Te dejo este codigo. Lo hice tal como dice el enunciado.
Salu2

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. const int maximo=5;
  5.  
  6. float notas[maximo];
  7. float mayor=0;
  8. float menor,diferencia;
  9. float suma=0;
  10. int i;
  11.  
  12. int main() {
  13.  
  14.  for(i=0; i<maximo; i++)
  15.  {
  16.    cout<<"Ingrese la nota"<<i<<endl;
  17.    cin>>notas[i];
  18.  }
  19.  
  20.  //Encuentro el mayor,menor
  21.  menor = notas[1];
  22.  
  23.  for(i=0; i<maximo; i++)
  24.  {
  25.    if(notas[i] > mayor)
  26.      mayor=notas[i];
  27.    else if (notas[i] < menor)
  28.      menor=notas[i];
  29.   }
  30.  
  31.   diferencia = mayor - menor;
  32.  
  33.   cout << "La diferencia entre la nota mayor y la nota menor es " << diferencia;
  34.  
  35.   return 0;
  36. }
  37.  
El programa está mal. contraejemplo: [-5,-5,-5,-5,-4] con 5 enteros, da diferencia 5, y debe dar 1. -4 -(-5)= 1

En otro post... https://foro.elhacker.net/programacion_cc/tengo_un_ejercicio_al_que_no_doy_formanecesito_un_empujon-t479671.0.html  (https://foro.elhacker.net/programacion_cc/tengo_un_ejercicio_al_que_no_doy_formanecesito_un_empujon-t479671.0.html) hablo del problema de un incorrecto valor inicial.


El siguiente problema da la diferencia entre la nota mayor y menor de un array de (N) elementos...

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


Salida de pantalla

Código:
-5 -5 -4
1

Otro
Código:
-5 25 -2 -3
30