Форум
» Назад на решение задач по физике и термеху
Регистрация | Профиль | Войти | Забытый пароль | Присутствующие | Справка | Поиск

» Добро пожаловать, Гость: Войти | Регистрация
    Форум
    Информационные технологии
        Решение задач на Pascal. Форум 3.
Отметить все сообщения как прочитанные   [ Помощь ]
» Добро пожаловать на форум "Информационные технологии" «

Переход к теме
<< Назад Вперед >>
Несколько страниц [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 ]
Модераторы: paradise, KMA
  

BloodLyoha


Новичок

3 и 4 задачу решил, буду очень блогодарен если поможете еще первые две решить

Всего сообщений: 4 | Присоединился: декабрь 2009 | Отправлено: 10 дек. 2009 11:13 | IP
VF



Administrator

BloodLyoha
№1
Первый проход по массиву - находишь и запоминаешь в какой позиции максимум. Второй проход - делаешь все элементы кроме элемента с максимумом нулем, а элемент с максимумом умножаешь в 2 раза. Что выводить на экран я не понял - измененный массив (тогда выводишь значения при первом проходе после обработки каждой ячейки) или действительно исходный, то есть не измененный (тогда на втором проходе надо копировать в другой массив того же размера).

№2 Тут можно по мере заполнения запоминать максимальный для каждой строки. И при переходе к следующей записывать его в одномерный массив. Все же просто

Всего сообщений: 3110 | Присоединился: май 2002 | Отправлено: 11 дек. 2009 6:09 | IP
BloodLyoha


Новичок

просто для тех кто изучал нормаьно а я не шарю ваще ))

Всего сообщений: 4 | Присоединился: декабрь 2009 | Отправлено: 11 дек. 2009 12:01 | IP
VF



Administrator

BloodLyoha
Прочитай про циклы, массивы и условный оператор. Этого хватит для обоих задач, если ты 3 и 4 решить сумел

Всего сообщений: 3110 | Присоединился: май 2002 | Отправлено: 11 дек. 2009 12:56 | IP
BloodLyoha


Новичок

можешь дать ссылучку где поясней написано про них?

Всего сообщений: 4 | Присоединился: декабрь 2009 | Отправлено: 11 дек. 2009 12:58 | IP
Fantom7916


Новичок

люди добрые, помогите кто чем может! через 3 дня зачет по програмированию а я вообще ни в какую не понимаю зачетные задачи =(((
Буду очень очень преочень благодарен тому, кто хоть чем то поможет!

1)  По заданным координатам (x1, y1), (x2, y2), (x3, y3) вершин треугольника найти точку пересечения биссектрис его углов (центр вписаннойй в него окружности).

2) Может ли шар радиуса r пройти через ромбообразное отверстие диагоналями p и q?

3) Дан текст. Группы символов.ю разделенные пробелами (одним или несколькими) и не содержащие пробелов внутри себя, будем называть словами. Найти все слова, содержащие наибольщее количество гласных латинских букв (a, e, i, o, u).

Заранее ОГРОМНОЕ СПАСИБО Вам!!!! =)

Всего сообщений: 2 | Присоединился: декабрь 2009 | Отправлено: 14 дек. 2009 19:50 | IP
KMA



Долгожитель


можешь дать ссылучку где поясней написано про них?


Почему у людей когда возникает потребность решить задачу они лезут в google, а когда нужно найти учебник или уроки напрочь о поисковиках забывают??? Наверное это психологический блок такой, чтобы не учиться.

Гугл выдал мне вот эту ссылку внешняя ссылка удалена там вроде хорошо все и просто написано, думаю -- разберешься.

Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 17 дек. 2009 16:26 | IP
ulala


Новичок

Доброго времени суток
Программа - исходник:
program MDP;
uses crt;
var
G,F1,F2,F3,F4,F5,F6,F7,F8,F9: set of byte;
R,M: array [1..10]  of array [1..10] of integer;
Y: array [1..10] of integer;
i,j,k,n,C:integer;
begin
clrscr;
G:=[1,2,3,4,5,6,7,8,9];
F1:=[2,3,4];
F2:=[3,6];
F3:=[4,5];
F4:=[5,7];
F5:=[6,8];
F6:=[9];
F7:=[8,9];
F8:=[9];
F9:=[];

for j:=1 to 9 do begin
if j in F1 then R[1,j]:=1
 else R[1,j]:=0;
if j in F2 then R[2,j]:=1
 else R[2,j]:=0;
if j in F3 then R[3,j]:=1
 else R[3,j]:=0;
if j in F4 then R[4,j]:=1
 else R[4,j]:=0;
if j in F5 then R[5,j]:=1
 else R[5,j]:=0;
if j in F6 then R[6,j]:=1
 else R[6,j]:=0;
 if j in F7 then R[7,j]:=1
 else R[7,j]:=0;
if j in F8 then R[8,j]:=1
 else R[8,j]:=0;
  if j in F9 then R[9,j]:=1
 else R[9,j]:=0;
end;

for i :=1 to 9 do begin
for j:=1 to 9 do
 write(R[i,j],' ');
 writeln;
end;

for j:=1 to 9 do
M[j,1]:=0;
for i:=2 to 9 do
for j:=1 to 9 do
M[j,i]:=100;

j:=1;
repeat j:=j+1;

k:=0;
for i:=1 to 9 do
if R[i,j]=1 then begin
k:=k+1;
Y[k]:=M[j-1,i]+1;
end;

C:=100;
for n:=1 to k do
if Y[n]<C then C:=Y[n];

for i:=j to 9 do
M[i,j]:=C;
until j=9;

writeln;

for j:=1 to 9 do begin
for i:=1 to 9 do
 write(M[j,i],'   ');
 writeln;
 end;
readln;

End.
Эта программа нахождения минимального пути из истока в сток на графе.
Теперь требуется: Определить длину максимального пути для графа, заданного матрицей расстояний (как сказал преподаватель это та же самая R, только вместо нулей вводить другие числа, это я сделала). Вот код:
program MDP;
uses crt;
var
G,F1,F2,F3,F4,F5,F6,F7,F8,F9: set of byte;
R,M,S: array [1..20]  of array [1..20] of integer;
Y: array [1..10] of integer;
i,j,k,n,C,h,p,V: integer;
begin
clrscr;
G:=[1,2,3,4,5,6,7,8,9];
F1:=[2,3,4];
F2:=[3,6];
F3:=[4,5];
F4:=[5,7];
F5:=[6,8];
F6:=[9];
F7:=[8,9];
F8:=[9];
F9:=[];

for i:=1 to 9 do
for j:=1 to 9 do begin
if j in F1 then R[1,j]:=1
 else R[1,j]:=0;
if j in F2 then R[2,j]:=1
 else R[2,j]:=0;
if j in F3 then R[3,j]:=1
 else R[3,j]:=0;
if j in F4 then R[4,j]:=1
 else R[4,j]:=0;
if j in F5 then R[5,j]:=1
 else R[5,j]:=0;
if j in F6 then R[6,j]:=1
 else R[6,j]:=0;
 if j in F7 then R[7,j]:=1
 else R[7,j]:=0;
if j in F8 then R[8,j]:=1
 else R[8,j]:=0;
  if j in F9 then R[9,j]:=1
 else R[9,j]:=0;
end;

for i :=1 to 9 do begin
for j:=1 to 9 do
 write(R[i,j],' ');
 writeln;
end;

for i:=1 to 9 do
for j:=1 to 9 do begin
if R[i,j]=1 then  begin
write('Vvedite ves dugi-> ');
readln(V);
S[i,j]:=V;
end;
end;

for i :=1 to 9 do begin
for j:=1 to 9 do
 write(S[i,j],' ');
 writeln;
end;

for j:=1 to 9 do
M[j,1]:=0;
for i:=2 to 9 do
for j:=1 to 9 do
M[j,i]:=-100;

j:=1;
repeat j:=j+1;

k:=0;
for i:=1 to 9 do
if S[i,j]>0 then begin
k:=k+1;
Y[k]:=M[j-1,i]+M[i,j];
end;

C:=-100;
for n:=1 to k do
if Y[n]>C then C:=Y[n];

for i:=j to 9 do
M[i,j]:=C;
until j=9;

writeln;

for j:=1 to 9 do begin
for i:=1 to 9 do
 write(M[j,i],'   ');
 writeln;
 end;
readln;

End.

Всего сообщений: 2 | Присоединился: декабрь 2009 | Отправлено: 17 дек. 2009 16:49 | IP
ulala


Новичок

Но этот код естественно работает неправильно... А кроме этого ещё надо найти вершины, лежащие на максимальном пути... Помогите хотя бы только исправить код чтобы он правильно находил максимальный путь..

Всего сообщений: 2 | Присоединился: декабрь 2009 | Отправлено: 17 дек. 2009 16:50 | IP
KMA



Долгожитель

Задачи на графах...

Ты знаешь подобное решение точно есть в интернете, потому как задача каноническая. Однако если честно я не совсем понял смысла задачи (что значат исток и сток?).

Тебе заданы две вершины графа, нужно найти максимальный путь к ним?

Зачем использовать множества, если ты итак знаешь свой граф не проще ли сразу объявить его в константы? Может стоит задуматься о весе дуги, скажем не 1, а 14 и т.д. может преподаватель именно это имел ввиду?

Можно задачу полностью с ее формулировкой.

Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 17 дек. 2009 22:52 | IP

Отправка ответа:
Имя пользователя   Вы зарегистрировались?
Пароль   Забыли пароль?
Сообщение

Использование HTML запрещено

Использование IkonCode разрешено

Смайлики разрешены

Опции отправки

Добавить подпись?
Получать ответы по e-mail?
Разрешить смайлики в этом сообщении?
Просмотреть сообщение перед отправкой? Да   Нет
 

Переход к теме
<< Назад Вперед >>
Несколько страниц [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 ]

Форум работает на скрипте © Ikonboard.com