программирование_c#_работа со строками и файлами. программы_отчет. Решение Листинг программы using System using System. Collections. Generic using System. Linq using System. Text
Скачать 150.64 Kb.
|
Задание 1 Разработать программу, которая для заданной строки s: 9) подсчитывает количество цифр в строке; Решение: Листинг программы: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp_z1 { class Program { static void Main(string[] args) { Console.WriteLine("Введите строку, содержащую в тексте цифры:"); string s = Console.ReadLine(); //строка, в которой считаем цифры int count = 0; //счетчик цифр for (int i = 0; i < s.Length; i++) //проходим по строке в цикле { if (char.IsDigit(s[i])) // если текущий символ является цифрой count++; // увеличиваем счетчик на единицу } Console.WriteLine("Количество цифр в строке {0} - {1}", s, count); //выводим результат Console.ReadKey(); } } } Результат работы программы: Задание 2 Разработать программу, которая: 9) заменяет все вхождения подстроки str1 на подстроку str2 (при этом str1 может являться частью str2); Решение: Листинг программы: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp_z2 { class Program { static void Main(string[] args) { Console.WriteLine("Введите строку s: "); StringBuilder s = new StringBuilder(Console.ReadLine()); // задаем исходную строку Console.WriteLine("Введите подстроку str1: "); StringBuilder str1 = new StringBuilder(Console.ReadLine()); // задаем подстроку-искомое Console.WriteLine("Введите подстроку str2: "); StringBuilder str2 = new StringBuilder(Console.ReadLine()); // задаем подстроку-заменитель s.Replace(str1.ToString(), str2.ToString()); // заменяем все подстроки str1 на str2 Console.WriteLine("Измененная строка s: {0}", s); Console.ReadKey(true); // выход из программы } } } Результат работы программы: Задание 3 Дана строка, в которой содержится осмысленное текстовое сообщение. Слова сообщения разделяются пробелами и знаками препинания. 9. Подсчитать, сколько раз заданное слово встречается в сообщении. Решение: Листинг программы: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp_z3 { class Program { static void Main(string[] args) { // задаем строку Console.WriteLine("Введите строку с осмысленным сообщением: "); string s = Console.ReadLine(); // задаем искомое слово Console.WriteLine("\nВведите искомое слово: "); string word = Console.ReadLine(); //искомое слово int count = 0; //счетчик наличия искомого слова в строке // разбиваем строку на слова и помещаем в массив string[] mas = s.Split(' ', '.', ',', '-', '!', '?',':',';'); // проходим по массиву слов и сравниваем foreach (string p in mas) { if (p.ToUpper() == word.ToUpper()) { count++; //если текущее слово равно искомому, увеличиваем счетчик } } // вывод результата работы программы Console.WriteLine("\r\nСлово {0} встречается в тексте {1} раз(а)", word, count); Console.ReadKey(true); // выход из программы } } } Результат работы программы: Задание 1 9. Дан текстовый файл. Напечатать символы с k1 по k2 в каждой строке. Решение: Листинг программы: using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp_z1_2 { class Program { static void Main(string[] args) { int k1 = 0; int k2 = 0; //открываем текстовый файл try { StreamReader sr = new StreamReader("text.txt", Encoding.Default); Console.WriteLine("Текстовый файл:"); //пока файл не закончился while (sr.EndOfStream != true) { string str = sr.ReadLine(); //считываем строку Console.WriteLine(str); //выводим строку } sr.Close();//закрываем текстовый файл Console.WriteLine("\nВывод части строки"); bool f = false; do { Console.Write("Введите номер начальной позиции k1= "); k1 = int.Parse(Console.ReadLine()); if (k1 >= 0) { Console.Write("Введите номер конечной позиции k2= "); k2 = int.Parse(Console.ReadLine()); if (k1 < k2) { f = true; } else Console.WriteLine("Конечная позиция не может быть меньше начальной!"); } else { Console.WriteLine("Конечная позиция не может быть меньше начальной!"); } } while (f!=true); sr = new StreamReader("text.txt", Encoding.Default); Console.WriteLine("\nВывод с {0}-й позициии по {1}-ю позицию в строке:\n",k1,k2); //пока файл не закончился while (sr.EndOfStream != true) { string str = sr.ReadLine(); //считываем строку for (int i = 0; i < str.Length; i++) { if (i >= k1 && i <= k2) //если символ попадает между k1 и k2 Console.Write(str[i]); //выводим его } Console.Write("\n");//перевод строки } sr.Close();//закрываем текстовый файл } catch { //если файл отстутствует или повреждён, программа продолжит свою работу без //исключения, но выведет сообщение о том, что произошла ошибка Console.WriteLine("При загрузке файла произошли ошибки!"); } Console.ReadKey(true); //выход из программы } } } Результат работы программы: Задание 2 9. Даны два файла с числами. Получить новый файл, в котором на четных местах будут стоять компоненты, которые стоят на четных местах в первом файле, а на нечетных – компоненты, которые стоят на нечетных во втором (количество компонентов в исходных файлах одинаковое). Решение: Листинг программы: using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp_z2_2 { class Program { static Random rnd = new Random(); //Создание объекта для генерации чисел static void CreateFiles(string fname, int n) { //открываем двоичный поток BinaryWriter fOut = new BinaryWriter(new FileStream(fname, FileMode.Create)); //записываем данные в двоичный поток for (int i = 0; i < n; i++) { fOut.Write(rnd.Next(0, 25)); } fOut.Close(); //закрываем двоичный поток } static void Main(string[] args) { //Создание объекта для генерации чисел, если требуется создать новые Console.WriteLine("Создать файлы перед выполнением - 1, использовать готовые - 2:"); int k = int.Parse(Console.ReadLine()); if (k == 1) { Console.WriteLine("Введите количество чисел в файле:"); int m = int.Parse(Console.ReadLine()); CreateFiles("t1.dat", m); CreateFiles("t2.dat", m); } //чтение данных из двоичного потока FileStream f = new FileStream("t1.dat", FileMode.Open); Console.WriteLine("Первый файл:"); long n = f.Length; //определяем количество байт в байтовом потоке int a; BinaryReader fIn = new BinaryReader(f); n = f.Length / 4; //определяем количество чисел в двоичном потоке int[] MyArray = new int[n]; //задаем массив для сохранения чисел из файлов //n определяем один раз, так как количество чисел в файлах одинаковое for (int i = 0; i < n; i++) { a = fIn.ReadInt32(); if (i % 2 == 0) MyArray[i] = a; Console.Write(a + " "); } fIn.Close(); f.Close(); Console.WriteLine(); Console.WriteLine("Второй файл:"); fIn = new BinaryReader(new FileStream("t2.dat", FileMode.Open)); for (int i = 0; i < n; i++) { a = fIn.ReadInt32(); if (i % 2 == 1) MyArray[i] = a; Console.Write(a + " "); } fIn.Close(); Console.WriteLine(); Console.WriteLine("Результат:"); BinaryWriter fOut = new BinaryWriter(new FileStream("t3.dat", FileMode.Create)); for (int i = 0; i < n; i++) { fOut.Write(MyArray[i]); Console.Write(MyArray[i] + " "); } fOut.Close(); Console.ReadKey(true); } } } Результат работы программы: |