ejercicio " calcular la diferencia "

Iniciado por el gusanillo, 30 Diciembre 2017, 07:48 AM

0 Miembros y 1 Visitante están viendo este tema.

el gusanillo

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();
}

MAFUS

#1
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?)

el gusanillo

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.

dariodr01

Te dejo este codigo. Lo hice tal como dice el enunciado.
Salu2

Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

const int maximo=5;

float notas[maximo];
float mayor=0;
float menor,diferencia;
float suma=0;
int i;

int main() {
   
  for(i=0; i<maximo; i++)
  {
    cout<<"Ingrese la nota"<<i<<endl;
    cin>>notas[i];
  }
 
  //Encuentro el mayor,menor
  menor = notas[1];
 
  for(i=0; i<maximo; i++)
  {
    if(notas[i] > mayor)
      mayor=notas[i];
    else if (notas[i] < menor)
      menor=notas[i];
   }
   
   diferencia = mayor - menor;
   
   cout << "La diferencia entre la nota mayor y la nota menor es " << diferencia;
   
   return 0;
}

el gusanillo

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.

dijsktra

#5
Cita de: dariodr01 en 20 Enero 2018, 17:23 PM
Te dejo este codigo. Lo hice tal como dice el enunciado.
Salu2

Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

const int maximo=5;

float notas[maximo];
float mayor=0;
float menor,diferencia;
float suma=0;
int i;

int main() {
 
 for(i=0; i<maximo; i++)
 {
   cout<<"Ingrese la nota"<<i<<endl;
   cin>>notas[i];
 }
 
 //Encuentro el mayor,menor
 menor = notas[1];
 
 for(i=0; i<maximo; i++)
 {
   if(notas[i] > mayor)
     mayor=notas[i];
   else if (notas[i] < menor)
     menor=notas[i];
  }
 
  diferencia = mayor - menor;
 
  cout << "La diferencia entre la nota mayor y la nota menor es " << diferencia;
 
  return 0;
}

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 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...


#include <iostream>
using namespace std;

/*
 P : N > 0
 Q : d = M - m
 where
 M = max i : 0 <= i < N : V[i]
 m = min i : 0 <= i < N : V[i]

 I : Q[N/n] and 1<= n <= N and *
 M = max i : 0 <= i < n : V[i]
 m = min 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=V[0], n=1 ; n < N ; n++)
   {
     M = (V[n] > M)?V[n]:M;
     m = (V[n] < m)?V[n]:m;      
   }
 return (M-m);
}

#define MAX 1000
int main (int argc, char **args)
{
 int N=0;
 int V[MAX];
 for ( ; cin >> V[N]; N++);
 cout << dist(V,N) << endl;
}



Salida de pantalla

-5 -5 -4
1


Otro
-5 25 -2 -3
30



Si la depuración es el proceso de eliminar fallos en el software, entonces programar debe ser el proceso de ponerlos dentro. (Edsger Dijsktra)