Const nn=100; type Abit=record fio:string; ball:array[1..3] of byte; from:string; midb:real end; var t:Abit; mAb:array[1..nn] of Abit; i,j,n,m:integer; midinst:real; begin { ввод исходных данных } Write('Количество абитуриентов (до 100): '); Readln(n); Write('Средний по институту: '); Readln(midinst); m:=0; for i:=1 to n do begin Writeln('Абитуриент № ',i); With mAb[i] do begin Write('Фамилия, И.О.: '); Readln(fio); Write(' по трем предметам через пробел: '); Readln(ball[1],ball[2],ball[3]); midb:=(ball[1]+ball[2]+ball[3])/3; Write('Место жительства: '); Readln(from) end; if mAb[i].midb>midinst then m:=m+1; end; { простейшая обменная сортировка по убыванию } for i:=1 to n-1 do for j:=i+1 to n do if mAb[i].midb<mAb[j].midb then begin t:=mAb[i]; mAb[i]:=mAb[j]; mAb[j]:=t end; { вывод } Writeln; Writeln('Количество поступающих со средним выше среднеинститутского: ',m); for i:=1 to n do with mAb[i] do Writeln(fio,' ',ball[1]:2,ball[2]:2,ball[3]:2,' ',from) end.
Тестовое решение: Количество абитуриентов (до 100): 4 Средний по институту: 5.94 Абитуриент № 1 Фамилия, И.О.: Иванов А.Г. по трем предметам через пробел: 9 7 5 Место жительства: Вологда Абитуриент № 2 Фамилия, И.О.: Петров Л.Л. по трем предметам через пробел: 9 9 9 Место жительства: Грязевец Абитуриент № 3 Фамилия, И.О.: Раковский Д.Г. по трем предметам через пробел: 4 4 5 Место жительства: Сокол Абитуриент № 4 Фамилия, И.О.: Акимова Я.С. по трем предметам через пробел: 9 5 4 Место жительства: Харовск
Количество поступающих со средним выше среднеинститутского: 3 Петров Л.Л. 9 9 9 Грязевец Иванов А.Г. 9 7 5 Вологда Акимова Я.С. 9 5 4 Харовск Раковский Д.Г. 4 4 5 Сокол
using System;
using System.Text.RegularExpressions;
internal class Program
{
private static void Main()
{
var test_lines = new[]
{
"Я сегодня съела 2 булочки, 7 сосисок и выпила 3 чашки кофе.",
"Старший брат родился в 1990 году, а младший - в 2000г.",
"Мне нравится книга '100 лет одиночества'"
};
foreach (var test_line in test_lines)
{
Console.WriteLine(test_line);
Console.WriteLine("Самое большое число в строке {0} или {1}", FindMaxNumber(test_line), FindMaxNumberWithRegex(test_line));
}
Console.WriteLine();
Console.WriteLine("Введите строку");
var line = Console.ReadLine();
Console.WriteLine("Самое большое число в строке {0} или {1}", FindMaxNumber(line), FindMaxNumberWithRegex(line));
Console.ReadKey();
}
private static int FindMaxNumberWithRegex(string line)
{
var matches = Regex.Matches(line, @"[0-9]+"); //находим все вхождения цифр в строку, не зависимо от того часть это слова или нет
if (matches.Count < 1) return -1;
var max = -1; //предполагаем что ищем лишь положительные числа
foreach (Match match in matches)
{
var num = int.Parse(match.Value); //переводим строку в число, то что это число мы уже знаем
max = Math.Max(max, num);
}
return max;
}
private static int FindMaxNumber(string line)
{
var words = line.Split(new[] { ' ', ',', '.', '-', ':' }, StringSplitOptions.RemoveEmptyEntries);//разбивает строку на массив строк
var max = -1; //предполагаем что ищем лишь положительные числа
foreach (var word in words)
{
if (int.TryParse(word, out var num) && num > max) //если слово есть число и оно больше максимума
{
max = num;
}
}
return max;
}
}