Al final he pasado de la instrucción for y he usado do...while y he hecho que el programa pare de leer números cuando lee un salto de linea o se llega al número de datos que dijo el usuario.
Código C:
Ver original/* Programa que pide al usuario los datos y se determina el mayor de esos datos enteros
*/
# include <stdio.h>
# include <stdlib.h> //Librería necesaria para el system ("pause")
int main ()
{
int dato; //valor a procesar
int ubi; //Posición del dato mayor
int max; //valor máximo
int k=0; //Sirve para contar los datos y hacer que el valor max se inicialize como el primer dato
char c; //variable para detectar el salto de linea
int ndatos; //número de datos
printf ("\nEscribe el numero de datos: "); printf ("\nEscribe los datos: ");
do
{
c
=getchar (); //capta el caracter salto de linea para que se dejen de leer los datos if (k==0) //con esto el primer dato será tomado como máximo al principio
{
max=dato;
k++;
ubi=k;
}
else if (k>0 && dato>max)
{
max=dato;
k++;
ubi=k;
}
else
k++;
}while (c!='\n' && k<ndatos); //cuando el programa lee un salto de linea o k es igual al número de datos el programa para de leer caracteres
printf ("\nEl maximo de los %d datos es %d ubicado en %d\n\n", k
, max
, ubi
);
system ("pause"); //Para que no se cierre la ventana de dos en Dev-C++ return 0;
}