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();
}
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?)
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.
Te dejo este codigo. Lo hice tal como dice el enunciado.
Salu2
#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;
}
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.
Cita de: dariodr01 en 20 Enero 2018, 17:23 PM
Te dejo este codigo. Lo hice tal como dice el enunciado.
Salu2
#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 (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