profile
Опубликовано 6 лет назад по предмету Информатика от bysenkimer

Нужна помощь в паскале!!!
Написать массив 5 строк 10 столбцов из случайных слов в которых есть как заглавные так и не заглавные буквы.
Первая строка N заменяет X
Вторая строка X заменяет на M
Третья строка инвитирует всю строку и каждую букву
Четвёртая строка строчные меняет на прописные
Прописные на заглавные. 

Эти процедуры должны быть оформлены отдельно для каждой строки, также должен быть выбор процедур выполнения.
Вывести на экран начальный и конечный массив и записать в файл

Готов за ращение даже заплатить рублей 300-400

  1. Ответ
    Ответ дан Aillianna
    uses crt;


    const
        n = 5;
        m = 10; {кол-во столбцов}
        l = 10; {максимальная длина одной строки/слова}
        {letters = 'ABCDEFGHIJKLMNNNNNNNNNNNNOPQRSTUVWXXXXXXXXXXYZabcdefghijklmnopqrstuvwxyz';}
        file_path = 'data.txt';


    type
        SmallString = string[l];
        WordsMas = array[1..n, 1..m] of SmallString;


    var
        words: WordsMas;
        i, j, k: integer;


    function RandomWord(n: integer): SmallString;
    var
        i: integer;
        s: SmallString;
        letters: string;
    begin
        letters := 'ABCDEFGHIJKLMNNNNNNNNNNNNOPQRSTUVWXXXXXXXXXXYZabcdefghijklmnopqrstuvwxyz';
        s := '';
        for i := 1 to n do 
            s := s + letters[Random(length(letters) - 1) + 1];
        RandomWord := s;
    end;


    function Replace(s, find_text, replace_text: SmallString): SmallString;
    var
        i: integer;
    begin
        repeat
            i := pos(find_text, s);
            if i <> 0 then begin
                delete(s, i, length(find_text));
                insert(replace_text, s, i);
            end;
        until i = 0;
        
        Replace := s;
    end;


    function Invert(s: SmallString): SmallString;
    var
        i: integer;
        t: SmallString;
    begin
        t := '';
        for i := 1 to length(s) do
            t := s[i] + t;
        
        Invert := t;
    end;


    function SwapCase(s: SmallString): SmallString;
    var
        i: integer;
    begin
        for i := 1 to length(s) do
            if s[i] = upcase(s[i]) then
                s[i] := chr(ord(s[i]) + 32)
            else s[i] := upcase(s[i]);
        
        SwapCase := s;
    end;


    procedure PrintMas(mas: WordsMas; name: string);
    var
        i, j: integer;
        f: text;
    begin
        writeln(name);
        for i := 1 to n do
        begin
            
            write(i, ': ');
            for j := 1 to m do
                write(mas[i, j]:l, '; ');
            writeln;
        end;
        
        Assign(f, file_path);
        Append(f);
        
        writeln(f, name);
        for i := 1 to n do
        begin
            
            write(f, i, ': ');
            for j := 1 to m do
                write(f, mas[i, j]:l, '; ');
            writeln(f);
        end;
        
        Close(f);
    end;


    begin
        Randomize;
        ClrScr;
        
        for i := 1 to n do
            for j := 1 to m do
                words[i, j] := RandomWord(Random(l - 5) + 5);
                {words[i, j] := 'GoodXXMMNN';}
        
        PrintMas(words, 'Original');
        
        for i := 1 to n do
            for j := 1 to m do
                case i of
                    1: words[i, j] := Replace(words[i, j], 'N', 'X');
                    2: words[i, j] := Replace(words[i, j], 'X', 'M');
                    3: words[i, j] := Invert(words[i, j]);
                    4: words[i, j] := SwapCase(words[i, j]);
                end;
        
        PrintMas(words, 'New One');
        
        Readln;
    end.

    Проверялось. Работает на Турбо паскале





    1. Ответ
      Ответ дан Aillianna
      А теперь проверяйте работает ли это на турбо паскале. Если выдает ошибки то пишите номер строки и текст ошибки. Буду пытаться исправлять
Самые новые вопросы