2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 помогите решить задачки
Сообщение16.11.2010, 20:23 


16/11/10
5
1.Напечатайте заданный текст из 100 литер,удалив из него повторные вхождения каждой литеры.
2.прямая на плоскости может быть задана уравнением ax+by=c,где a,b Одновременно не равны нулю и a,b,c -целые.Пусть даны коэффициенты нескольких прямых a1,b1,c1,a2,b2,c2,....,an,bn,cn.Определить имеются ли среди этих прямых совпадающие или паралельные.

 Профиль  
                  
 
 Re: помогите решить задачки
Сообщение16.11.2010, 23:31 


30/06/06
313
1. Вводите 2 символьных массива длины $n=100$: $a[n], b[n].$ Заполняете их.
for (int i = 0; i < n; i++)
for (int j = i + 1; j < n; j++)
if (a[j]==a[i]) b[j]='пробел';

for (i = 0; i < n; i++)
if (b[i] != ' ') печать b[i]



2. Тут можно ввести двумерный массив $a[n][m],$ где $m=3, n - $ количество прямых. Этот массив заполняется согласно условию. А потом просто в цикле (аналогично первой задаче) проверить условия совпадения и параллельности прямых.

 Профиль  
                  
 
 Re: помогите решить задачки
Сообщение17.11.2010, 17:53 


16/11/10
5
код: [ скачать ] [ спрятать ]
Используется синтаксис Pascal
  1. uses crt;
  2. var s:string[100];
  3.     i:integer;
  4. begin
  5. clrscr;
  6. repeat
  7. writeln('s: ');readln(s);
  8. until length(s)>=100;
  9. i:=1;
  10. while i<100 do
  11.    begin
  12.      while pos(s[i],copy(s,i+1,100-i))>0 do{пока очередной симол есть дальше по строке}
  13.      delete(s,pos(s[i],copy(s,i+1,100-i))+i,1);{удаляем его}
  14.      inc(i);
  15.    end;
  16. writeln(s);
  17. readln;
  18. end.
  19.  



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

 Профиль  
                  
 
 Re: помогите решить задачки
Сообщение17.11.2010, 18:16 
Админ форума
Аватара пользователя


19/03/10
8952
 !  Тема перемещена в Карантин.

Чтобы оттуда выбраться, приведите свои попытки решения задач.

После того как исправите сообщение, сообщите об этом в теме Сообщение в карантине исправлено.


-- Ср ноя 17, 2010 18:42:37 --

 i  Вернул.
Обратите внимание на оформление кода с помощью тега syntax.

 Профиль  
                  
 
 Re: помогите решить задачки
Сообщение17.11.2010, 18:48 


16/11/10
5
uses crt;
const max=19;
var m:array[1..max,1..3] of integer;
n,i,j,k,p:integer;
begin
clrscr;
repeat
write('Количество точек от 3 до ',max,' n=');
readln(n);
until n in [3..max];
writeln('Введите коэффициенты уравнений прямых a,b,c');
writeln('a,b одновременно не равны 0');
for i:=1 to n do
begin
writeln('Прямая ',i);
repeat
readln(m[i,1],m[i,2],m[i,3]);
until(m[i,1]<>0)or(m[i,2]<>0);
end;
clrscr;
writeln('Коэффициенты уравнений:');
for i:=1 to 3 do
begin
write(chr(i+64));
for j:=1 to n do
write(m[j,1]:4);
writeln;
end;
writeln;
k:=0;
for i:=1 to n-2 do
for j:=i+1 to n-1 do
for p:=j+1 to n do
{если прямые не параллельны}
if (m[i,1]*m[j,2]-m[j,1]*m[i,2]<>0)and(m[i,1]*m[p,2]-m[p,1]*m[i,2]<>0)
{вычисляем точку пересечения}
and((m[i,2]*m[j,3]-m[j,2]*m[i,3])/(m[i,1]*m[j,2]-m[j,1]*m[i,2])=
(m[i,2]*m[p,3]-m[p,2]*m[i,3])/(m[i,1]*m[p,2]-m[p,1]*m[i,2]))
then
begin
k:=1;
writeln('Прямые ',i,' (',m[i,1],',',m[i,2],',',m[i,3],') ',
j,' (',m[j,1],',',m[j,2],',',m[j,3],') ',
p,' (',m[p,1],',',m[p,2],',',m[p,3],');');
end;
if k=0 then write('Таких прямых нет!');
readln
end.


и решение второй задачи
надеюсь тут особых ошибок нет
проверьте пожалуйста

 Профиль  
                  
 
 Re: помогите решить задачки
Сообщение17.11.2010, 19:05 
Заслуженный участник


04/05/09
4582
Bulka_s_molokom в сообщении #376559 писал(а):
вот так я примерно представляю решение первой задачи.
Почти правильно. Единственное - длина строки s уменьшается, поэтому проверка i < 100 неправильная.

-- Ср ноя 17, 2010 11:09:53 --

Во второй задаче, почему Вы сравниваете по 3 прямые?
Вам надо каждую пару прямых проверить на параллельность и совпадение.

 Профиль  
                  
 
 Re: помогите решить задачки
Сообщение17.11.2010, 19:24 
Заслуженный участник
Аватара пользователя


13/08/08
14456
А я так понял, что по условию второй задачи надо детектировать - есть ли в массиве совпадающие или параллельные линии. То есть находить точки пересечения и указывать пары параллельных не нужно. То есть при нахождении первой же пары пропорциональных штук выбрасываем белый флаг и выходим из задачи. Тогда третий столбец вообще не нужен. И вообще всё проще.
Или нет?

 Профиль  
                  
 
 Re: помогите решить задачки
Сообщение17.11.2010, 19:28 
Заслуженный участник


04/05/09
4582
gris в сообщении #376621 писал(а):
А я так понял, что по условию второй задачи надо детектировать - есть ли в массиве совпадающие или параллельные линии. То есть находить точки пересечения и указывать пары параллельных не нужно. То есть при нахождении первой же пары пропорциональных штук выбрасываем белый флаг и выходим из задачи. Тогда третий столбец вообще не нужен. И вообще всё проще.
Или нет?
Я так понял, что надо отдельно детектировать совпадающие, и просто параллельные. Так что третий столбец нужен.
Но вышеприведённая программа ищет совсем другое - тройки несовпадающих прямых, пересекающихся в одной точке.

 Профиль  
                  
 
 Re: помогите решить задачки
Сообщение17.11.2010, 19:30 


16/11/10
5
venco в сообщении #376613 писал(а):
Bulka_s_molokom в сообщении #376559 писал(а):
вот так я примерно представляю решение первой задачи.
Почти правильно. Единственное - длина строки s уменьшается, поэтому проверка i < 100 неправильная.


подскажите как переделать?




а по поводу второй.надо просто определить имеються или нет такие прямые.

 Профиль  
                  
 
 Re: помогите решить задачки
Сообщение17.11.2010, 19:42 
Заслуженный участник
Аватара пользователя


13/08/08
14456
По первой задаче я бы сделал так: начиная со второго символа делал проверку на совпадение литеры с предыдущими несовпавшими, в случае наличия совпадения литеру игнорировал, переходил к следующей. В случае несовпадения переписывал букву в конец несовпадающих. Нужно два индекса - конец очереди несовпавших и начало очереди проверяемых. Второй индекс меняется от 2 до 100. первый от 1 докуда получится. Потом можно забить пробелами.

-- Ср ноя 17, 2010 19:46:01 --

Вторая задача похожа на первую. Можно даже отделить все пересекающиеся линии. Или выскочить сразу при первой же паре совпавших или параллельных.

 Профиль  
                  
 
 Re: помогите решить задачки
Сообщение17.11.2010, 19:54 
Заслуженный участник


04/05/09
4582
В первой задаче условие можно понять двояко. То ли надо удалить второй символ из двух соседних одинаковых, то ли надо удалить повторяющиеся символы везде в строке. ТС решил(а) второй вариант.

-- Ср ноя 17, 2010 11:56:21 --

Bulka_s_molokom в сообщении #376625 писал(а):
а по поводу второй.надо просто определить имеються или нет такие прямые.
Bulka_s_molokom, сложные выражения в тройном цикле Вы сами писали? Понимаете, что они делают?

-- Ср ноя 17, 2010 12:03:15 --

Bulka_s_molokom в сообщении #376625 писал(а):
venco в сообщении #376613 писал(а):
Bulka_s_molokom в сообщении #376559 писал(а):
вот так я примерно представляю решение первой задачи.
Почти правильно. Единственное - длина строки s уменьшается, поэтому проверка i < 100 неправильная.


подскажите как переделать?
Старайтесь цитировать правильно.

Скажите сначала, что означает выражение i < 100 и для чего оно там стоит.

 Профиль  
                  
 
 Re: помогите решить задачки
Сообщение17.11.2010, 20:15 
Заслуженный участник
Аватара пользователя


13/08/08
14456
Оффтопическое: любому молодому программисту (и не только) приходилось с раскрытым ртом и с потерянными надеждами на гонорар выслушивать гневные слова заказчика, что на самом деле он имел в виду не общепринятые вот в этой вашей среде умолчания, а то, чему ему его учили и что нормальному человеку и так понятно, а вашу программку моя секретарша левой рукой, понимаешь, а вот теперь план годовой летит. А стирать не надо, может быть Светочка вечерком сумеет поправить. Ну это, конечно, утрированно, но бывает.
Так что нужно приучаться даже с учебных задач как бэ ТЗ согласовывать, где всё прописывать и оговаривать.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group