Сап, Двачик,нужна твоя помощь. Есть данная задача. Дайте хотя бы подсказочкц че делать то ебана в рот. Язык си Формат входного файла В первой строке входного файла input.txt находится одно натуральное число n (1 ≤ n ≤ 10) — количество команд, участвовавших в чемпионате. В следующих n строках перечислены названия этих команд. Каждое название команды находится в отдельной строке и является словом, состоящим только из строчных и заглавных букв латинского алфавита. Длина названия команды не превосходит 10, все названия команд различны. В следующей строке входного файла находится одно целое число m (1 ≤ m ≤ 100) — количество матчей, которые команды сыграли за время чемпионата. Следующие m строк содержат результаты матчей. Каждое описание матча содержится в отдельной строке. Описание матча состоит из названия первой команды, после которого через пробел следует счет матча. Счет матча — два числа, не превышающих 10, разделенные двоеточием. После счета матча через пробел дано название второй команды. Гарантируется, что в матчах участвовали только команды, перечисленные в списке участников, и то, что команды, участвовавшие в матче, всегда различны. Формат выходного файла Выведите в выходной файл output.txt m строк, каждая из которых содержит название команды и количество выигранных и проигранных этой командой матчей. Между названием команды и количеством выигранных матчей должен стоять ровно один пробел, а между количеством выигранных игр и количеством проигранных — ровно одно двоеточие. Команды перечислите в том же порядке, в котором они перечислены во входном файле.
>>148041853 Ну так же некрасиво, и я же не знаю сколько команд, может быть их 20, мне что 20 переменных для каждой команды ебошить, а потом ещё и для их счета?
>>148041774 Строшь список таких структур, потом обходишь их, чтобы определить победителя и проигравшего, инкриментируя соотвествующие счетчики, первые 5 строк вообще не нужны в таком случае.
>>148041257 (OP) select t from ts left join select t, sum(w), sum(l) from (select t1 as t, d1>d2 as w, d2>d1 as l from ms union all select t2, d2>d1 as w, d1>d2 as l from ms) group by t using(t)
>>148042381 Хорошо, допустим могу, я просто не сразу понял, что значит распарсить, но вроде как теперь дошло. Это типа значит разбить строку на переменные и считать их? Если вы про это, то я могу
>>148042316 Я давно уже заметил. У 99% пидарах, которые освоили на среднем уровне хоть что-то, дико расчёт ЧСВ. Особенно это заметно на всяких помойках типа cyberforum. Вместо того чтобы помочь человеку, они начинают рассказывать какой он тупой дебил. Даже в этот тред уже набежала кучка погромистов.
>>148043211 Ну вот смотри. Для начала тебе нужен список команд. Попробую объяснить самую тупую реализацию.
Создаёшь два статических массива размером в 10 можно обойтись статическим потому что по условию задачи максимум 10. Один для названий команд, другой для их очков. Читаешь из файла инт. Потом читаешь из файла n строк, где n – тот инт, что ты прочитал до этого. Забиваешь всё это в первый массив.
>>148043603 >Один для названий команд, другой для их очков. Исправление --- придётся городить три массива. Имена команд, количество побед и количество поражений. Не надо ему про стракты рассказывать, он же и так нихуя не понимает.
>>148043760 Так. Затем ты читаешь ещё один инт n из файла.
Потом идёт цикл (псевдокод): for(i = 0; i < n; i++){ team1 = readString(); r1 = readInt(); readChar(); // Прочитать : из файла и выбросить его к хуям r2 = readInt(); team2 = readString();
if(r1 > r2) { // Прибавляешь единицу к победам команды team1 } else { // Прибавляешь единицу к победам команды team2 } // Ситуация, когда r1 === r2, условием не покрыта. }
Остаётся только вывести, пробегаясь по трём массивам одновременно.
>>148045003 >как прекратить считывание после того, как он уткнётся в количество игр? Тебе в начале даётся число n, количество имён. Считывай ровно n имён и всё.
>>148046197 Ну у меня есть число команд, как написано в инете, fgets считывает либо 1 строку, либо пока не закончится объём заданного количества символов на чтение. Вот я задал 1 символ на чтение, создав массив из 1 элемента, использовал функция fgets, что-то не так?
>>148041257 (OP) Единственная проблема, которая может возникнуть, это связать строку с числом. Это можно сделать через список(раз уж тут такие ограничения халявные), либо через деревья, что сложнее. Ебашь списки ОПыч.
>>148046573 Блин, как бы попроще, не вдоваясь в детали. Ну давай так. На самом деле результат будет положен туда, куда УКАЗЫВАЕТ str, однако если все прошло успешно, то n будет равно str. Но самое интересно то, что в n == str == "3" по твоей пикче. А вот "3" != 3. Смекаешь?
>>148047968 Ты в курсе, что плюсы компилят программы на си, а еще у них есть std::string, std::map, с которыми твоя задача в пару строк решается? Честно, ты аутист?
>>148057786 Здесь - каждой команде из изначального списка сопоставляет число побед и поражений для этой команды. Затем финальным джойном склеивает все в строку. Вообще - проходит по массиву.
>>148041257 (OP) Хуяришь структуру с Name(char[10]), Wins(int), Loses(int). Хуяришь массив, а лучше Dictionary, состоящий из объектов данной структуры. В массиве, до обработки матчей, у тебя быть должны быть все команды с именами и нулевыми значениями статистики. А теперь мякотка. Из последующих строк ты должен узнать кто из этих пидоров выйграл, а кто проиграл. Как узнаешь, найди их в массиве и повысь им соот. статистику на единицу. А после выведи всё на экран.
Тут же просто сравниваешь значения строк в строках , где играют команды друг против друга и делаешь счётчик на каждую команду в котором учитывается количество побед в зависимости от сравнения. Потом просто выводишь эти названия всех участвующих команд и выводишь количество их побед в аутпут... Но вот вопрос, считается ли ничья победой или поражением. Если умеешь работать с тхт файлами на си, проблем составить не должно, алгоритмы все стандартные и умений особых не требуют, все предельно просто!
>>148090260 > Каждое название команды находится в отдельной строке и является словом, состоящим только из строчных и заглавных букв латинского алфавита. Длина названия команды не превосходит 10, все названия команд различны. > СЛОВОМ Так что пошёл нахуй, умник. В таких задачах ясно сказано, какие входные.
Формат входного файла
В первой строке входного файла input.txt находится одно натуральное число n (1 ≤ n ≤ 10) — количество команд, участвовавших в чемпионате. В следующих n строках перечислены названия этих команд. Каждое название команды находится в отдельной строке и является словом, состоящим только из строчных и заглавных букв латинского алфавита. Длина названия команды не превосходит 10, все названия команд различны.
В следующей строке входного файла находится одно целое число m (1 ≤ m ≤ 100) — количество матчей, которые команды сыграли за время чемпионата. Следующие m строк содержат результаты матчей.
Каждое описание матча содержится в отдельной строке. Описание матча состоит из названия первой команды, после которого через пробел следует счет матча. Счет матча — два числа, не превышающих 10, разделенные двоеточием. После счета матча через пробел дано название второй команды.
Гарантируется, что в матчах участвовали только команды, перечисленные в списке участников, и то, что команды, участвовавшие в матче, всегда различны.
Формат выходного файла
Выведите в выходной файл output.txt m строк, каждая из которых содержит название команды и количество выигранных и проигранных этой командой матчей. Между названием команды и количеством выигранных матчей должен стоять ровно один пробел, а между количеством выигранных игр и количеством проигранных — ровно одно двоеточие. Команды перечислите в том же порядке, в котором они перечислены во входном файле.