IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> 3 несложные задачи
azi
сообщение 17.05.2005 19:14
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской

Репутация: -  0  +


Всем привет! Признаюсь сразу - с Паскалем я не в ладах, а для вас это раз плюнуть smile.gif Бьюсь над этими задачами уже не первую неделю - чё-то никак.
Помогите, кому не лень. Заранее благодарен
1.Два отрезка на плоскости заданы координатами своих концов. Определить, имеют ли эти отрезки общие точки.
Замечание. Необходимо рассмотреть различные случаи взаимной ориентации отрезков: на одной прямой, на параллельных или пересекающихся прямых.
2.Просуммировать элементы матрицы A(n,n) по каждой из линий, параллельных главной диагонали. Напечатать полученные суммы.(читал в FAQ'е - не выходит...)
3.Натуральное число в p-ичной системе счисления задано своими цифрами, хранящимися в массиве K(n). Проверить корректность такого представления и перевести число в q-ичную систему (возможно, число слишком велико, чтобы получить его внутреннее представление; кроме того, p 10, q 10).
и может быть ещё одну:Заданный список русских фамилий (вместе с именами и отчествами) упорядочить по алфавиту. Проверить (и исправить, если нужно) написание собственных имен с прописных букв: Заданный список русских фамилий (вместе с именами и отчествами) упорядочить по алфавиту. Проверить (и исправить, если нужно) написание собственных имен с прописных букв.
Хотя бы намекните как делать, плиз-з-з-з!!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ozzя
сообщение 18.05.2005 6:18
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


1. http://algolist.manual.ru/maths/geom/inter.../lineline2d.php
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
azi
сообщение 18.05.2005 9:17
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской

Репутация: -  0  +


[quote=Ozzя,18.05.05 7:18]
Спасибо вам огромное. Не могли бы с остальными помочь?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ozzя
сообщение 18.05.2005 10:35
Сообщение #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я - 18.05.2005 10:37
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
azi
сообщение 18.05.2005 11:44
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской

Репутация: -  0  +


Спасибо!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 18.05.2005 11:47
Сообщение #6


Гость






Цитата(Ozzя @ 18.05.05 10:35)
Функция upcase (с поддержкой русского языка) есть в книге Фаронова

:p2: Здесь тоже есть...
 К началу страницы 
+ Ответить 
azi
сообщение 18.05.2005 12:32
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской

Репутация: -  0  +


Благодарю за помощь. 1-ую задачу решил (не решить после этого было тяжело<_< ) А есть ли какие-то варианты насчёт матриц. FAQ не помогает!!! там с индексами матрицы какая-то путаница. Помогите, пожалуйста.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
azi
сообщение 18.05.2005 12:50
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской

Репутация: -  0  +


и ещё пожалуйста подскажите - как сортировать по алфавиту (есть ли в Паскале встроенная сортировка?), т.е. по какому критерию выбирать следующее значение - это же не числа больше-меньше?.. huh.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ozzя
сообщение 18.05.2005 13:38
Сообщение #9


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Цитата(azi @ 18.05.05 12:50)
и ещё пожалуйста подскажите - как сортировать по алфавиту (есть ли в Паскале встроенная сортировка?), т.е. по какому критерию выбирать следующее значение - это же не числа больше-меньше?.. huh.gif

для строк и символов допустимы операции сравнения < > и т.д, так как
сравнение идет по коду символа, и можно смело писать:
if 'a' < 'b' ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
azi
сообщение 18.05.2005 13:56
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской

Репутация: -  0  +


ни фига себе! никогда бы не подумал... huh.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ozzя
сообщение 18.05.2005 14:00
Сообщение #11


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Цитата
Операции отношения =, о, >, <, >=, <= выполняются над двумя строками посимвольно, слева направо с учетом внутренней кодировки символов (см. табл.4.1 и прил.2). Если одна строка меньше другой по длине, недостающие символы короткой строки заменяются значением СНR(0) .

Следующие операции отношения дадут значение TRUE:

'''' < ' . '

'А' > '1'

'Turbo' <' Turbo Pascal'

'Паскаль' >'Turbo Pascal'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 18.05.2005 14:39
Сообщение #12


Гость






Цитата(azi @ 18.05.05 12:32)
FAQ не помогает!!! там с индексами матрицы какая-то путаница.

А вот с этого места я попрошу поподробнее. В каких именно местах в FAQ-е есть путаница с индексами матрицы? Я все-таки проверяю КАЖДУЮ программу на нескольких примерах перед занесением ее в FAQ... Так что я жду ссылку...
 К началу страницы 
+ Ответить 
azi
сообщение 18.05.2005 14:53
Сообщение #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?!! Я же говорю, что в Паскале не совсем соображаю, но тут явно не получается. И ещё: как заносить суммы по линиям, параллельным диагонали в отдельные массивы?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Бродяжник
сообщение 18.05.2005 15:58
Сообщение #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;

и сразу увидите, какие элементы суммируются. Глядишь, и разберетесь. Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 18.05.2005 16:07
Сообщение #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
сообщение 28.05.2005 10:23
Сообщение #16


Гость






Цитата(azi @ 17.05.05 19:14)
3.Натуральное число в p-ичной системе счисления задано своими цифрами, хранящимися в массиве K(n). Проверить корректность такого представления и перевести число в q-ичную систему (возможно, число слишком велико, чтобы получить его внутреннее представление; кроме того, p<10, q<10).

Все просто...
вначале проверяем корректность представления:
i := 1; isCorrect := true;
while (i <= n) and isCorrect do begin
isCorrect := (K[i] <= p);
inc(i)
end;
{ если здесь isCorrect = True то число корректно, иначе - нет }


далее, с помощью процедур из FAQ: Общие вопросы по математике преобразуем число из p-ичной системы в q-ичную:
var
s: string;
...
if isCorrect then begin
s := '';
for i := 1 to n do s := s + chr(K[i] + 48);
writeln('q-th system: ', FromDec(ToDec(s, p), q))
end
else writeln('invalid data');


Ну, а проверить не слишком ли велико число, я предоставляю тебе...
 К началу страницы 
+ Ответить 
azi
сообщение 30.05.2005 9:35
Сообщение #17


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской

Репутация: -  0  +


Volvo, спасибо тебе огромное. Буду за тебя молиться!!! :D
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.06.2025 14:49
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"