Помогите исправить задачу
В условии сказано: Составьте программу, позволяющую определить, есть ли в школе в 8-х классах однофамильцы. Данные об учениках должны идти в следующем порядке: имя, фамилия, год обучения, буква.
Когда вводишь например фамилию Иванов в 8 класс и в 9 классе, на выходе выдает, что есть однофамильцы... и Например еще когда вводишь Иванов 8 класс и Иванова 8 класс, пишет что нет однофамильцев. Язык программирования Pascal. Помогите исправить задачку, на обработку записей. Код:
program z6; |
А почему вы сравниваете только две соседних записи?
I-тую и I+1-ую? И можно уточнить диалект языка? |
Pascal ABC
|
Цитата:
Цитата:
Лена, значит, так. 1. Смысл поля Letter я, извините, не понял. Вас интересуют однофамильцы или ученики, фамилии которых начинаются на одну и ту же букву? 2. С разнополыми однофамильцами (если иметь в виду русский язык, а не, скажем, английский) — сложно. Предлагаемая ниже программка сработает для фамилий типа Петренко, Кацман, Черемных, Ревич, а вот для "Иванов" и "Иванова", "Савицкий" и "Савицкая" увы, нет, только для однополых. Научить её такому можно, но очень трудно: нужно перебрать все варианты окончания фамилий и т.д. 3. В программе сообщения замены английскими потому, что мне так удобнее (связано с кодировками кириллицы). Не принципиально, можете заменить обратно. Код:
type |
Цитата:
Можете последний Readln выкинуть. Мне в моём Free Pascal он нужен для останова. |
Цитата:
Хотя возможно это у меня блуждающие токи от ЕС-1035, там были два компилятора Паскаля с очень разным программированием, приходилось их автоматически различать средствами REXX :)) |
Скажите, пожалуйста что перебирать j- элементом?
|
Цитата:
Допустим, количество учеников в восьмых классах — 10. Цикл работает следующим образом. Берём первого (i=1). Пусть его фамилия Глушко. Начинаем перебирать ОСТАЛЬНЫХ со 2 по 10, т.е. j=2, 3, 4 и т.д. до 10. Если мы снова увидим фамилию Глушко, например, у четвёртого, то фамилия[1]=фамилия[4], и мы нашли однофамильца! Потом берём второго ученика (i=2), пусть его фамилия — Иванов. Перебираем по j остальных с 3 по 10 и ищем фамилию Иванов (с "Иванова", увы, не сработает: отбор однофамильцев с фамилиями на -ов, -ин, -ский, -цкий, -цкой осуществляется только среди однополых). И т.д. Вот так. Если всё-таки нужно, чтобы срабатывало по разнополым, напишите, подумаем. Но это очень непросто. |
Часовой пояс GMT +4, время: 07:02. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.