Я работаю над школьным проектом на языке программирования Ada. Профессор хочет, чтобы мы использовали язык, на котором мы не знакомы, чтобы писать. Мне нужно использовать Ада двусвязный список, чтобы написать программу текстового редактора. Программа при вызове примет единственный необязательный аргумент командной строки, который задает имя файла по умолчанию. Если этот файл уже существует, его содержимое должно быть загружено в текстовый буфер. После сохранения файла содержимое буфера будет выгружено в файл с указанным именем, перезаписывая любой существующий файл. Например,
, если я введу команду
a - для добавления
привет
мир
.
файл будет иметь
привет
мир
добавляется в конец документа
если я наберу
3 a
привет
world
.
затем к строке 3 документа добавляется та же строка.
Вот код, который я написал до сих пор, но я не могу понять, как использовать строку в качестве условия моего оператора case.
Может кто-нибудь помочь мне с этим проектом?
with Ada.Containers.Doubly_Linked_Lists;
with Ada.Text_Io; use Ada.Text_Io;
with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;
procedure main is
package String_List is new Ada.Containers.Doubly_Linked_Lists(Unbounded_String);
use String_List;
--Userinput : String(1 .. 10) := (others => ' '); --This string length is 10
Last: Integer; --This is use to count input string length
currentAddress: Integer := 0;
text : List; -- List is from Doubly_Linked_Lists
type Userinput is (a, c, p, e);
--size: Integer; --This is use to count input string length
procedure Print(Position : Cursor) is -- this subprogram print all string from list
begin
Put_Line(To_String(Element(Position)));
--Put_Line("K");
end Print;
begin
loop
Put( Integer'Image (currentAddress) & " >> " );
Get_Line(Userinput);
case Userinput is
when a =>
Put( Integer'Image (currentAddress) & " >> " );
Get_Line(Userinput);
text.Append(To_Unbounded_String(Userinput)); -- if letter is a add it to the doubly link list
when c =>
--text.Insert(Before => text.Find(To_Unbounded_String(Userinput)), New_Item => To_Unbounded_String( ? ));
when p =>
text.Iterate(Print'access);
when e =>
Put_Line("Program Exit");
exit;
when others =>
Put_Line ("No command found ");
end case;
end loop;
end main;