Вопрос по информатике:
Помогите перевести с 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.
Трудности с пониманием предмета? Готовишься к экзаменам, ОГЭ или ЕГЭ?
Воспользуйся формой подбора репетитора и занимайся онлайн. Пробный урок - бесплатно!
- 05.01.2015 01:52
- Информатика
- remove_red_eye 8761
- thumb_up 28
Ответы и объяснения 1
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 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 раза, если это действительно надо повторить, то добавьте все в цикл и повторяйте сколько надо/хочется
- 06.01.2015 03:16
- thumb_up 9
Знаете ответ? Поделитесь им!
Есть сомнения?
Не нашли подходящего ответа на вопрос или ответ отсутствует? Воспользуйтесь поиском по сайту, чтобы найти все ответы на похожие вопросы в разделе Информатика.
Трудности с домашними заданиями? Не стесняйтесь попросить о помощи - смело задавайте вопросы!
Информатика — наука о методах и процессах сбора, хранения, обработки, передачи, анализа и оценки информации с применением компьютерных технологий, обеспечивающих возможность её использования для принятия решений.