• Помогите перевести с Pascal на c#

    Само задание: Элементами типизированного файла являются отдельные слова. Изменить все его
    элементы на другие слова (их значения вводятся с клавиатуры). Рассмотреть вариант: размер
    существующего файла неизвестен.

    uses crt;
    var f:file of string;
    s:string;
    i,n:integer;
    begin
    clrscr;
    assign(f,'filef');
    rewrite(f);
    writeln('Введите в файл словa, окончание ввода exit:');//не знем сколько слов
    repeat
    readln(s);
    write(f,s);
    until s='exit';
    clrscr;
    writeln('Исходный файл:');
    reset(f);
    n:=filesize(f);//определяем сколько слов в файле
    while not eof(f) do//пока не конец файла, читаем
    begin
    read(f,s);
    writeln(s);
    end;
    close(f);
    rewrite(f);
    writeln('Введите в файл ',n,' новых слов');
    for i:=1 to n do
    begin
    readln(s);
    write(f,s);
    end;
    clrscr;
    writeln('Измененнный файл:');
    reset(f);
    for i:=0 to n-1 do
    begin
    read(f,s);
    writeln(s);
    end;
    close(f);
    readln
    end.

Ответы 1

  • using System;using System.Collections.Generic;using System.IO;using System.Runtime.Serialization.Formatters.Binary;internal static class Program{    private const string fileName_ = "words.dat";    private static void Main()    {        try        {            Console.WriteLine("Ввод строк/слов, каждое с новой строки, окончание ввода - пустая строка");            var words = new List<string>();            string line;            while ((line = Console.ReadLine()) != string.Empty)                words.Add(line);            Serialize(fileName_, words.ToArray());            words.Clear();            Console.WriteLine("Вывод данных из файла");            var words_from_file = (string[]) Deserialize(fileName_);            for (var i = 0; i < words_from_file.Length; i++)                Console.WriteLine($"{i} = {words_from_file[i]}");        }        catch(Exception e)        {            Console.WriteLine(e);        }        finally        {            Console.ReadLine();        }    }    private static void Serialize(string file, object o)    {        using (var fs = new FileStream(file, FileMode.Create, FileAccess.Write, FileShare.ReadWrite))        {            var bf = new BinaryFormatter();            bf.Serialize(fs, o);        }    }    private static object Deserialize(string file)    {        using (var fs = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read))        {            var bf = new BinaryFormatter();            var o = bf.Deserialize(fs);            return o;        }    }}Сериализация в бинарный файл. В вашей программе действия записи и вывода происходят 2 раза, если это действительно надо повторить, то добавьте все в цикл и повторяйте сколько надо/хочется
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years