BG Development


Страници: (2) [1] 2   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> Може ли да ми проверите кода., Запис
Ivana
Публикувано на: 12-12-2018, 20:08
Quote Post



Име: Ивана Иванова
Група: Потребител
Ранг: Новопостъпил

Мнения: 10
Регистриран на: 12.12.18



Последната операция не зная как да напиша.
CODE

Type

Plant = Integer;
TPlantRec = record
           AgeYears    :Plant;
           Weightkg    :Plant;
       HeightMeters    :Plant;
                Typ    :String [20];
end;

Procedure EnterNewPlant(Var NewPlant: TPlantRec);

Begin
       Writeln(' Enter new Plant Information: ' );

       Write('Plant Name:         ');
       Readln(NewPlant.Typ);

       Write('Plant age in years: ');
       Readln(NewPlant.AgeYears);

       Write('Plant Weight in kg: ');
       Readln(NewPlant.Weightkg);

       Write('Plant Hight in Meters: ' );
       Readln(NewPlant.HeightMeters);

end;

Var
       PlantRecArray : Array [1..3] of TPlantRec;
       TempPlantRec  : TPlantRec;
       TPlantRecFile : File of TPlantRec;
       NewPlants     : 1..3;

Begin   Assign(TPlantRecFile,  'TplantRec.dat');
       ReWrite(TPlantRecFile);

       For NewPlants := 1 to 3 do
       Begin

            EnterNewPlant(PlantRecArray[NewPlants]);
            {PlantRecArray[NewPlants] Now contains the Plant Info }
            Write(TPlantRecFile, PlantRecArray[NewPlants]);
       end;

       Close(TPlantRecFile);
      Writeln('Thanks for entering the plants information');
      Writeln('The Information was Saved In a File!      ');

      Write(' Now Choose a Record to Display from 1 to 3: ');
      Readln(NewPlants);

      ReSet(TPlantRecFile);
      Seek(TPlantRecFile, NewPlants-1);
      Read(TPlantRecFile, TempPlantRec);
      Close(TPlantRecFile);

      Writeln('Here is the Plant Information from record #',NewPlants,':');
      Writeln;
      Writeln('Plant Name:  ', PlantRecArray[NewPlants].Typ);
      Writeln('Plant Age:   ', PlantRecArray[NewPlants].AgeYears);
      Writeln('Plant Weight:', PlantRecArray[NewPlants].Weightkg);
      Writeln('Plant Hight: ', PlantRecArray[NewPlants].HeightMeters);
      Readln;

End.

Условието на задачата. Да се създаде запис съхраняващ данните на едно растение – вид, години, тегло и височина. За група от растения да се създаде масив. Всяка една от клетките на масива да съдържа по един запис, съхраняваща данните за едно растение. Данните за всяко растение да се прочетат от клавиатурата и да се запишат в масива. След това, да се създаде файл и в него да се запишат само растенията по-високи от 1 метър.

Това мнение е било редактирано от SuN на 12-12-2018, 23:21
PMEmail Poster
Top
johnfound
Публикувано на: 12-12-2018, 20:55
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 7636
Регистриран на: 27.05.04



Форматирай си кода правилно с таговете [code] и опиши по-подробно какво не ти е ясно.

Това мнение е било редактирано от johnfound на 12-12-2018, 20:55


--------------------
asm32 - Приложно програмиране на асемблер.
Tox: 48C0321ADDB2FE5F644BB5E3D58B0D58C35E5BCBC81D7CD333633FEDF1047914A534256478D9
PMEmail PosterUsers Website
Top
Ivana
Публикувано на: 12-12-2018, 21:01
Quote Post



Име: Ивана Иванова
Група: Потребител
Ранг: Новопостъпил

Мнения: 10
Регистриран на: 12.12.18



Не зная как да напиша процедура която да се създаде файл в който да се запишат само растенията по-високи от 1 метър. А за таг код не знаех че така се прави, нова съм във форума ви. Вече така ще правя.

Това мнение е било редактирано от Ivana на 12-12-2018, 21:02
PMEmail Poster
Top
ivanov03
Публикувано на: 13-12-2018, 00:18
Quote Post



Име:
Група: Потребител
Ранг: Посетител

Мнения: 77
Регистриран на: 14.12.12




Здравей!

В момента нямам време, за да ти помогна с конкретен код, затова ще ти дам само насоки.

Ето два начина на решение:

1. когато записваш данните в масива(в цикъла For) правиш проверка дали растението е по-високо от метър, и ако е - директно го записваш във файла(който трябва да си създала и отворила предварително)
Проверката се прави с конструкцията if - then

2. Правиш отделна процедура за това - като в нея трябва да прочеш данните от масива(с цикъл) и в този цикъл трябва да направиш такава проверка(като в начин 1).

Това е от мен.

Успех!
PM
Top
Golden Gega
Публикувано на: 13-12-2018, 13:02
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 1624
Регистриран на: 04.06.10



Процедурата е нещо подобно:

CODE
Procedure StorePlant(Var FileIn: string, FileOut: string)
Var FIn, FOut: File of TPlantRec;
   R: TPlantRec;
begin
 Assign(FIn, FileIn);
 Assing(FOut, FileOut);
 Reset(FIn);
 Rewrite(FOut);
 While Not Eof(FIn)
   begin
   Read(FIn, R);
   if (R.HeightMeters > 1.0) then
     Write(FOut, R);
   end;
 Close(FIn);
 Close(FOut);
end;


И се извиква например:

CODE
StorePlant('TplantRec.dat', ''TplantRec1m.dat');


PMEmail Poster
Top
Ivana
Публикувано на: 13-12-2018, 21:31
Quote Post



Име: Ивана Иванова
Група: Потребител
Ранг: Новопостъпил

Мнения: 10
Регистриран на: 12.12.18



Благодаря написах я малко по различно, само ако може да ми кажете дали така е добре.

CODE

uses Crt;

Type

Plant = Integer;
TPlantRec = record
           AgeYears    :Plant;
           Weightkg    :Plant;
       HeightMeters  :Plant;
                Typ       :String [20];
end;

Procedure EnterNewPlant(Var NewPlant: TPlantRec);

Begin
       Writeln(' Enter new Plant Information: ' );

       Write('Plant Name:         ');
       Readln(NewPlant.Typ);

       Write('Plant age in years: ');
       Readln(NewPlant.AgeYears);

       Write('Plant Weight in kg: ');
       Readln(NewPlant.Weightkg);

       Write('Plant Hight in Meters: ');
       Readln(NewPlant.HeightMeters);

end;


Var
       PlantRecArray : Array [1..3] of TPlantRec;
       TempPlantRec  : TPlantRec;
       TPlantRecFile : File of TPlantRec;
       TPlantRecFOut : File of TPlantRec;
       NewPlants     : 1..3;

Begin   Assign(TPlantRecFile,  'TPlantRec.dat');
       Assign(TPlantRecFOut,  'TPlantRec+1M.dat');
       ReWrite(TPlantRecFile);
       ReWrite(TPlantRecFOut);

       For NewPlants := 1 to 3 do
       Begin

            EnterNewPlant(PlantRecArray[NewPlants]);
            Write(TPlantRecFile, PlantRecArray[NewPlants]);
       end;
       For NewPlants := 1 to 3 do
       Begin
       While Not Eof(TPlantRecFile) do
       begin
       Read(TPlantRecFile, TempPlantRec);
       if (TempPlantRec.HeightMeters > 1.0) then
        Write(TPlantRecFOut, TempPlantRec);
       end;

       Close(TPlantRecFile);
       Close(TPlantRecFOut);
      Writeln('Thanks for entering the plants information');
      Writeln('The Information was Saved In a File!      ');

      Write(' Now Choose a Record to Display from 1 to 3: ');
      Readln(NewPlants);

      ReSet(TPlantRecFile);
      Seek(TPlantRecFile, NewPlants-1);
      Read(TPlantRecFile, TempPlantRec);
      Close(TPlantRecFile);

      Writeln('Here is the Plant Information from record #',NewPlants,':');
      Writeln;
      Writeln('Plant Name:  ', PlantRecArray[NewPlants].Typ);
      Writeln('Plant Age:   ', PlantRecArray[NewPlants].AgeYears);
      Writeln('Plant Weight:', PlantRecArray[NewPlants].Weightkg);
      Writeln('Plant Hight: ', PlantRecArray[NewPlants].HeightMeters);
      Readln;

end;
End.


Благодаря, Предварително.
PMEmail Poster
Top
johnfound
Публикувано на: 13-12-2018, 21:39
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 7636
Регистриран на: 27.05.04



Не е нужно да четеш от файла всички растения, за да отделиш от тях по-високите от 1м, защото вече ги имаш в масива.


--------------------
asm32 - Приложно програмиране на асемблер.
Tox: 48C0321ADDB2FE5F644BB5E3D58B0D58C35E5BCBC81D7CD333633FEDF1047914A534256478D9
PMEmail PosterUsers Website
Top
Ivana
Публикувано на: 13-12-2018, 21:47
Quote Post



Име: Ивана Иванова
Група: Потребител
Ранг: Новопостъпил

Мнения: 10
Регистриран на: 12.12.18



Благодаря, разбрах.
PMEmail Poster
Top
stewie
Публикувано на: 13-12-2018, 23:18
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 5639
Регистриран на: 14.07.16



Паскал е жив ? Къде това ?
PM
Top
johnfound
Публикувано на: 13-12-2018, 23:37
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 7636
Регистриран на: 27.05.04



QUOTE (stewie @ 14-12-2018, 00:18)
Паскал е жив ? Къде това ?

Съвсем жив и здрав. Кеф ти платен, кеф ти свободен:

https://www.embarcadero.com/

https://www.lazarus-ide.org/


--------------------
asm32 - Приложно програмиране на асемблер.
Tox: 48C0321ADDB2FE5F644BB5E3D58B0D58C35E5BCBC81D7CD333633FEDF1047914A534256478D9
PMEmail PosterUsers Website
Top
0 потребители преглеждат тази тема в момента (0 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (2) [1] 2  Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0