• Domingo 28 de Abril de 2024, 23:40

Autor Tema:  Programa  (Leído 3161 veces)

lau82

  • Nuevo Miembro
  • *
  • Mensajes: 18
    • Ver Perfil
Programa
« en: Miércoles 9 de Agosto de 2006, 16:05 »
0
Me mandaron a realizar un programa para la facultad y me dieron este enunciado, necesitaria que alguien lo revisara para ver si esta bien y que se fijara si me falta algo agregar ya que asi me van a tomar el examen.

Realizar un programa en lenguaje pascal que permita a un operador registrar diariamente en una estacion meteorologica los siguientes datos:  numero del dia, numero del mes,año, Temperatura Maxima, Temperatura Minima,Lluvias: 1:Si o 2:No, Precipitaciones: se tiene el registro de cuanta lluvia cayo en un dia.

Si precipitaciones es menor o igual a cero significa que no llovio.

Informar por pantalla cada uno con su titulo indicativo.

1)cuantos dias hubo sin lluvia?
2)cuantos dias llovio menos de 50mm?
3)cuantos dias llovio 50 mm o mas?
4)cual es el porcentaje de dias sin lluvias?
5)Cantidad total de precipitaciones registradas?
6)temperaturas promedios diarias

Program lluvias;

Uses
       Crt;
Var
      Numdia,Nummes,Año : = integer;
      TempMax,TempMin: = real;
      Lluvias,LluviaN: =
      Cantlluvia: = real;
      Cantdias: = integer;
      Porcentaje : = real;
      Acumdias: = integer;
      Cantot: = real;
      PromTemp := real;
Begin
        ClrScr;
Write(´ Ingreso los datos’)
Repeat
   Writeln(´cantlluvia´);
                Cantlluvia: = cantlluvia + 1;
   Begin
                                     If cantlluvia=0  then cantdias: = cantdias + 1
                         Porcentaje:= acumdias * cantdias / 100
                                     Else Write (¨No contar los dias¨);
         
                 Begin
                                           If cantlluvia< 50  then   cantdias: = cantdias + 1
                                           Else  Write (´No contar los dias’);
           Begin
                                                  If cantlluvia>=50 then  cantdias:= cantdias + 1
                                                  Else Write (´No contar los dias¨);
           End;
                 End;
      End;
Cantot: = cantot + 1
Prom: = Tempmax + TempMin   / 2
Until  cantlluvia < = 0
End.

muchas gracias

pd. hay una parte del enunciado que dice LLuvias 1: Si o 2: No   nose como ponerla en el programa.

Laura

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Programa
« Respuesta #1 en: Miércoles 9 de Agosto de 2006, 16:25 »
0
Citar
pd. hay una parte del enunciado que dice LLuvias 1: Si o 2: No nose como ponerla en el programa.
Siguiendo tu planteo sería así:

Código: Text
  1.  
  2. TotalDias: Integer;
  3. DiasLluvia: Integer;
  4. Lluvia: Byte; // 1 o 2
  5. ........ leiste todos los datos
  6. TotalDias := TotalDias + 1;
  7. if Lluvia = 1 then DiasLLuvia := DiasLluvia+1;
  8. .... otras cosas
  9. DiasNoLluvia := TotalDias - DiasLluvia;
  10.  
  11.  

lau82

  • Nuevo Miembro
  • *
  • Mensajes: 18
    • Ver Perfil
Re: Programa
« Respuesta #2 en: Jueves 10 de Agosto de 2006, 13:23 »
0
se puede usar archivos secuenciales para hacer este ejercicio.?  ej lluvias.dat   como seria el ejercicio?

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Programa
« Respuesta #3 en: Jueves 10 de Agosto de 2006, 14:09 »
0
Cita de: "lau82"
se puede usar archivos secuenciales para hacer este ejercicio.?  ej lluvias.dat   como seria el ejercicio?
Yo creo que deberías usar archivos de algun tipo, tanto de texto (acceso secuencial) como binario (acceso aleatorio).

lau82

  • Nuevo Miembro
  • *
  • Mensajes: 18
    • Ver Perfil
Re: Programa
« Respuesta #4 en: Jueves 10 de Agosto de 2006, 16:00 »
0
Te decia porque me lo piden asi: yo hice un bosquejo del programa.. te parece que esta bien?

LLUVIAS (c:\DATOS.TXT)

Uses
       Crt;
Var
      dia,mes,año : = integer;
      TempMax,TempMin: = real;
      Sinllu,men50, mas50: =integer;
      Precipitaciones : = real;
      Porcentaje : = real;
      Acumdias: = integer;
      totallu: = real;
      PromTemp := real;
      Lluvia: = string;
      Datos: = text;
Begin
   Write(‘Ingrese el nombre del archivo: ‘);
   Readln( lluvias)
   sinllu. = 0
            men50: = 0
   mas50: = 0
   totallu
        ClrScr;
Write(´ Ingreso los datos’)
Repeat
   
   Begin
If (precipitaciones =0 ) then sinllu: = sinllu + 1
          Porcentaje:= acumdias * cantdias / 100
Else Write (¨No contar los dias¨);
         
            Begin
If (precipitaciones > 0)  and (precipitaciones < 50)  then   men50: = men50 + 1
Else  Write (´No contar los dias’);
               Begin
If (precipitaciones >=50) then  mas50:= mas50 + 1
Else Write (´No contar los dias¨);
               End;
            End;

      End;
totllu: = totllu + 1
Prom: = Tempmax + TempMin   / 2
Until  cantlluvia < = 0

writeln('CANTIDAD DE DIAS SIN LLUVIA: ',SINLLU);
writeln('CANTIDAD DE DIAS QUE LLOVIO MENOS DE
50mm: ',men50);
writeln('CANTIDAD DE DIAS QUE LLOVIA IGUAL O MAS DE 50
mm ',MAS50);
writeln('PRECIPITACIONES ACUMULADAS ',TOTALLU);
writeln('EL PORCENTAJE DE DIAS SIN LLUVIAS
ES ',);
writeln('PROMEDIO DE TEMPERATURAS');

End.

lau82

  • Nuevo Miembro
  • *
  • Mensajes: 18
    • Ver Perfil
Re: Programa
« Respuesta #5 en: Jueves 10 de Agosto de 2006, 17:24 »
0
ESTA BIEN HECHO ASI? CUALES SON LOS ERRORES?
NOSE COMO PONER EL PORCENTAJE NI CUANDO DICE LLUVIA 1: SI O LLUVIA 2: NO

Program lluvias;
LLUVIAS (c:\DATOS.TXT)

Uses
       Crt;
Var
      dia,mes,año : = integer;
      TempMax,TempMin: = real;
      Sinllu,men50, mas50: =integer;
      Precipitaciones : = real;
      Porcentaje : = real;
      Acumdias: = integer;
      totallu: = real;
      PromTemp := real;
      Lluvia: = string;
      Datos: = text;
Begin
Write(‘Ingrese el nombre del archivo: ‘);
   Readln( lluvias);
   ASSIGN(DATOS,LLUVIA); {Asignación a la variable DATOS del archivo en disco “lluvias”}
                {Lo llamare  precipitaciones.pas}
   RESET(DATOS);        {Apertura del archivo para leer datos desde el}
   
   {Inicializacion de variables}
   sinllu. = 0
            men50: = 0
   mas50: = 0
   totallu:=0
        ClrScr;
Repeat
   
   Begin
If (precipitaciones =0 ) then sinllu: = sinllu + 1
          Porcentaje:= acumdias * cantdias / 100
Else Write (¨No contar los dias¨);
         
            Begin
If (precipitaciones > 0)  and (precipitaciones < 50)  then   men50: = men50 + 1
Else  Write (´No contar los dias’);
               Begin
If (precipitaciones >=50) then  mas50:= mas50 + 1
Else Write (´No contar los dias¨);
               End;
            End;

      End;
Until  precipitaciones < = 0
CLOSE (DATOS);

totllu: = totllu + 1
Prom: = (Tempmax + TempMin )  / 2

APPEND (DATOS) ;
WRITELN(DATOS) ;
WRITELN(DATOS, PROM) ;
WRITELN(DATOS,TOTLLU) ;
CLOSE(DATOS) ;

writeln('CANTIDAD DE DIAS SIN LLUVIA: ',SINLLU);
writeln('CANTIDAD DE DIAS QUE LLOVIO MENOS DE
50mm: ',men50);
writeln('CANTIDAD DE DIAS QUE LLOVIA IGUAL O MAS DE 50
mm ',MAS50);
writeln('PRECIPITACIONES ACUMULADAS ',TOTALLU);
writeln('EL PORCENTAJE DE DIAS SIN LLUVIAS
ES ',);
writeln('PROMEDIO DE TEMPERATURAS');
readln,

End.

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Programa
« Respuesta #6 en: Jueves 10 de Agosto de 2006, 17:40 »
0
Citar
ESTA BIEN HECHO ASI? CUALES SON LOS ERRORES?
Si compila, y hace lo que tiene que hacer, entonces no veo cual es el problema.

Igualmente, te planteo como podrías hacerlo comodo:

*)realiza un menú cuando comienza la ejecucion de este tipo:
Citar
1) Ingresar Datos
2)Ver dias con lluvia
3)Ver temperatura promedia
4)Ver mm precipitados promedio
5),.....etc....
6)Salir

*) en la opcion 1, lo unico que tiens que hacer es pedir todos los datos con alguna verificacion y guardarlos en un archivo de texto.
*) con el resto de las opciones, simplemente  vas leyendo del archivo todos los datos y sacas el promedio que corresponde.

Citar
TotalDias: Integer;
DiasLluvia: Integer;
Lluvia: Byte; // 1 o 2
........ leiste todos los datos
TotalDias := TotalDias + 1;
if Lluvia = 1 then DiasLLuvia := DiasLluvia+1;
.... otras cosas
DiasNoLluvia := TotalDias - DiasLluvia;

Para la lluvia:

lau82

  • Nuevo Miembro
  • *
  • Mensajes: 18
    • Ver Perfil
Re: Programa
« Respuesta #7 en: Jueves 10 de Agosto de 2006, 19:15 »
0
sin usar byte, se puede poner  

WRITE (‘SI LLOVIO INGRESO 1 SINO 2’)
READ('LLUVIA')
IF LLUVIA:= 2 THEN  CL:= CL + 1
ELSE  ( ACA NOSE QUE PONER?)

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Programa
« Respuesta #8 en: Jueves 10 de Agosto de 2006, 23:37 »
0
Cita de: "lau82"
sin usar byte, se puede poner  

WRITE (‘SI LLOVIO INGRESO 1 SINO 2’)
READ('LLUVIA')
IF LLUVIA:= 2 THEN  CL:= CL + 1
ELSE  ( ACA NOSE QUE PONER?)
y para que quieres ponerle algo si realmente no tienes que poner nada?!!!!!!
Código: Text
  1.  
  2. WRITE (‘SI LLOVIO INGRESO 1 SINO 2’)
  3. READ('LLUVIA')
  4. IF LLUVIA:= 2 THEN  CL:= CL + 1;
  5.  
  6.  
en un IF no tienes proque poner un ELSE

Saiyan1

  • Miembro activo
  • **
  • Mensajes: 54
    • Ver Perfil
    • http://www.anaprog.com.ar
Re: Programa
« Respuesta #9 en: Viernes 1 de Septiembre de 2006, 13:14 »
0
Citar
y para que quieres ponerle algo si realmente no tienes que poner nada?!!!!!!

Jejeje...
me mataste con esa Enko.... xD :kicking:
----------------------
Gustavo Insaurralde
Foro de Analista Programador

Zirrosis

  • Miembro activo
  • **
  • Mensajes: 97
    • Ver Perfil
Re: Programa
« Respuesta #10 en: Sábado 2 de Septiembre de 2006, 18:20 »
0
Yo en el instituto hice un prgoraam para gestionar una biblioteca, la verdad, estaba bastatne currado el prgorama, unas 2.000 lineas. Usaba archivos seccuenciales para almacenar los datos, y en este programa, lo haria de la misma manera. Si es en tiempo real (es decir, kada dia real se introduce un nuevo dato) se tiene ke hacer forzosamente kon archivos, sino, hazlo komo tu kieras, aunke es  mas corto si lo haces sin usar otros archivos. ;)  ;)  ;)