3 несложные задачи |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
3 несложные задачи |
azi |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: 0 |
Всем привет! Признаюсь сразу - с Паскалем я не в ладах, а для вас это раз плюнуть Бьюсь над этими задачами уже не первую неделю - чё-то никак.
Помогите, кому не лень. Заранее благодарен 1.Два отрезка на плоскости заданы координатами своих концов. Определить, имеют ли эти отрезки общие точки. Замечание. Необходимо рассмотреть различные случаи взаимной ориентации отрезков: на одной прямой, на параллельных или пересекающихся прямых. 2.Просуммировать элементы матрицы A(n,n) по каждой из линий, параллельных главной диагонали. Напечатать полученные суммы.(читал в FAQ'е - не выходит...) 3.Натуральное число в p-ичной системе счисления задано своими цифрами, хранящимися в массиве K(n). Проверить корректность такого представления и перевести число в q-ичную систему (возможно, число слишком велико, чтобы получить его внутреннее представление; кроме того, p 10, q 10). и может быть ещё одну:Заданный список русских фамилий (вместе с именами и отчествами) упорядочить по алфавиту. Проверить (и исправить, если нужно) написание собственных имен с прописных букв: Заданный список русских фамилий (вместе с именами и отчествами) упорядочить по алфавиту. Проверить (и исправить, если нужно) написание собственных имен с прописных букв. Хотя бы намекните как делать, плиз-з-з-з!!!! |
Ozzя |
Сообщение
#2
|
Гуру Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: 16 |
|
azi |
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: 0 |
[quote=Ozzя,18.05.05 7:18]
Спасибо вам огромное. Не могли бы с остальными помочь? |
Ozzя |
Сообщение
#4
|
Гуру Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: 16 |
№ 4
Вот похожая программка: Сортирует список студентов по ФИО. Лишнее можно убрать. Проверка фамилии If not Upcase(Imia[1]) then Upcase(Imia[1]); имени: следующий символ после пробела и опять If not Upcase(Imia[k]) then Upcase(Imia[k]); Функция upcase (с поддержкой русского языка) есть в книге Фаронова Сообщение отредактировано: Ozzя - |
azi |
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: 0 |
Спасибо!
|
volvo |
Сообщение
#6
|
Гость |
Цитата(Ozzя @ 18.05.05 10:35) Функция upcase (с поддержкой русского языка) есть в книге Фаронова :p2: Здесь тоже есть... |
azi |
Сообщение
#7
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: 0 |
Благодарю за помощь. 1-ую задачу решил (не решить после этого было тяжело<_< ) А есть ли какие-то варианты насчёт матриц. FAQ не помогает!!! там с индексами матрицы какая-то путаница. Помогите, пожалуйста.
|
azi |
Сообщение
#8
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: 0 |
и ещё пожалуйста подскажите - как сортировать по алфавиту (есть ли в Паскале встроенная сортировка?), т.е. по какому критерию выбирать следующее значение - это же не числа больше-меньше?..
|
Ozzя |
Сообщение
#9
|
Гуру Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: 16 |
Цитата(azi @ 18.05.05 12:50) и ещё пожалуйста подскажите - как сортировать по алфавиту (есть ли в Паскале встроенная сортировка?), т.е. по какому критерию выбирать следующее значение - это же не числа больше-меньше?.. для строк и символов допустимы операции сравнения < > и т.д, так как сравнение идет по коду символа, и можно смело писать: if 'a' < 'b' ... |
azi |
Сообщение
#10
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: 0 |
ни фига себе! никогда бы не подумал...
|
Ozzя |
Сообщение
#11
|
Гуру Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: 16 |
Цитата Операции отношения =, о, >, <, >=, <= выполняются над двумя строками посимвольно, слева направо с учетом внутренней кодировки символов (см. табл.4.1 и прил.2). Если одна строка меньше другой по длине, недостающие символы короткой строки заменяются значением СНR(0) . Следующие операции отношения дадут значение TRUE: '''' < ' . ' 'А' > '1' 'Turbo' <' Turbo Pascal' 'Паскаль' >'Turbo Pascal' |
volvo |
Сообщение
#12
|
Гость |
Цитата(azi @ 18.05.05 12:32) FAQ не помогает!!! там с индексами матрицы какая-то путаница. А вот с этого места я попрошу поподробнее. В каких именно местах в FAQ-е есть путаница с индексами матрицы? Я все-таки проверяю КАЖДУЮ программу на нескольких примерах перед занесением ее в FAQ... Так что я жду ссылку... |
azi |
Сообщение
#13
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: 0 |
ну не то, чтобы путаница...
Сумма элементов, стоящих выше главной диагонали: CODEs:=0; for i:=1 to n do for j:=i to n do s:=s+a[i,j]; Сумма элементов, стоящих ниже побочной диагонали: CODEs:=0; for i:=1 to n do for i:=n-i+1 to n do s:=s+a[i,j]; тут что-то не то со счётчиками - суммируются не те элементы... может быть надо to n-i?!! Я же говорю, что в Паскале не совсем соображаю, но тут явно не получается. И ещё: как заносить суммы по линиям, параллельным диагонали в отдельные массивы? |
Бродяжник |
Сообщение
#14
|
Бывалый Группа: Пользователи Сообщений: 206 Пол: Мужской Репутация: 3 |
Со счетчиками все как будто в порядке, если не считать, что есть опечатка в строке
Код for i:=n-i+1 to n do s:=s+a[i,j]; Вместо "for i" должно быть "for j". Но это, видимо, опечатка Azi. Возможно, проблема в ориентации матрицы? Данные циклы предполагают, чтоа) первый индекс - это номер строки, а второй - номер столбца, и что б) выражение "элементы выше главной диагонали" надо читать, как "элементы выше главной диагонали и элементы самой главной диагонали". Т.е. Цитата 1111 1110 1100 1000 Если же имелось в виду Цитата 1110 1100 1000 0000 т.е. НЕ ВКЛЮЧАЯ саму диагональ, тогда надо циклы переделывать. А ввобще пользуйтесь старым добрым способом: Код s:=0; for i:=1 to n do for j:=i to n do begin s:=s+a[i,j]; writeln('i=',i,' j=',j,' s=',s,' a=',a[i,j]); end; и сразу увидите, какие элементы суммируются. Глядишь, и разберетесь. Удачи! |
volvo |
Сообщение
#15
|
Гость |
azi,
"учите матчасть" (С) Проверка. Матрица задана так Цитата 11 12 13 21 22 23 31 32 33 1. Выше главной диагонали (включая главную диагональ !!!): i = 1; j = 1, 2, 3 i = 2; j = 1, 2 i = 3; j = 3 Все работает 2. Ниже побочной диагонали (включая и саму диагональ !!!) i = 1; j = 3 i = 2; j = 2, 3 i = 3; j = 1, 2, 3 Тоже не вижу ошибки. Я надеюсь не нужно напоминать, что есть главная диагональ, а что - побочная? Так что давайте оставим FAQ в покое. Еще раз повторяю - ничего просто так туда не добавляется... |
volvo |
Сообщение
#16
|
Гость |
Цитата(azi @ 17.05.05 19:14) 3.Натуральное число в p-ичной системе счисления задано своими цифрами, хранящимися в массиве K(n). Проверить корректность такого представления и перевести число в q-ичную систему (возможно, число слишком велико, чтобы получить его внутреннее представление; кроме того, p<10, q<10). Все просто... вначале проверяем корректность представления: i := 1; isCorrect := true; далее, с помощью процедур из FAQ: Общие вопросы по математике преобразуем число из p-ичной системы в q-ичную: var Ну, а проверить не слишком ли велико число, я предоставляю тебе... |
azi |
Сообщение
#17
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: 0 |
Volvo, спасибо тебе огромное. Буду за тебя молиться!!! :D
|
Текстовая версия | 11.01.2025 5:37 |