Ver Mensaje Individual
  #5 (permalink)  
Antiguo 11/03/2010, 10:52
Alexander4
 
Fecha de Ingreso: marzo-2010
Mensajes: 3
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Problema con un programa en C

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
  1. /* Programa que pide al usuario los datos y se determina el mayor de esos datos enteros
  2. */
  3.  
  4. # include <stdio.h>
  5. # include <stdlib.h> //Librería necesaria para el system ("pause")
  6.  
  7. int main ()
  8. {
  9.   int dato;   //valor a procesar
  10.   int ubi;    //Posición del dato mayor
  11.   int max;    //valor máximo
  12.   int k=0;    //Sirve para contar los datos y hacer que el valor max se inicialize como el primer dato
  13.   char c;     //variable para detectar el salto de linea
  14.   int ndatos; //número de datos
  15.  
  16.   printf ("\nEscribe el numero de datos: ");
  17.   scanf("%d", &ndatos);
  18.   printf ("\nEscribe los datos: ");
  19.    
  20.    do
  21.    {
  22.     scanf("%d", &dato);
  23.     c=getchar (); //capta el caracter salto de linea para que se dejen de leer los datos
  24.     if (k==0)  //con esto el primer dato será tomado como máximo al principio
  25.       {
  26.        max=dato;
  27.        k++;
  28.        ubi=k;
  29.       }
  30.     else if (k>0 && dato>max)
  31.       {
  32.          max=dato;
  33.          k++;
  34.          ubi=k;
  35.       }
  36.     else
  37.       k++;
  38.    
  39.    }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
  40.    
  41.    printf ("\nEl maximo de los %d datos es %d ubicado en %d\n\n", k, max, ubi);
  42.  
  43.    system ("pause"); //Para que no se cierre la ventana de dos en Dev-C++
  44.    return 0;
  45.        
  46. }