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

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

Переход к теме
<< Назад Вперед >>
Несколько страниц [ 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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 ]
Модераторы: paradise, KMA
  

Zheka



Новичок

В первой задаче проблема остается лишь с выводимым результатом.  
Последовательность я ввожу собственноручно самую простую, чтобы можно было подсчитать в уме, но программа выдает другие результаты.
Например я беру такую последовательность: 1,4,-3...(дальше неважно).
Среднее геометрическое n чисел равно корню n-ной степени из произведения этих чисел.
Вычисляем: 1*4=4; корень квадратный из 4=2;
Программа же выдает: Sg=4.23...

Что касается второй задачи, так вот чего он ко мне пристал, я не ввел массивы. Я просто представил себе, что массив x- это ось ox с координатами от 1 до 100, и точно так же y. Т.е. я нахожу все точки для данного радиуса, а нужно найти только те, которые есть в массиве, я правильно понял?  

Всего сообщений: 19 | Присоединился: октябрь 2007 | Отправлено: 1 нояб. 2007 3:21 | IP
KMA



Долгожитель

Я же тебе сказал, уточни формулу, проверь лишний раз, то что ты там написал это немного не верно:
Code Sample:
 
function step (x, y: real): real;
begin
   step:=exp (y*ln(x));
end;



Вот функция нахождения степени числа х в y. Соответственно ее реализовать к тебе нужно следующим образом:

Code Sample:
 
Sg:=exp (1/(n-1) * ln(P) )



Должно работать.

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



Долгожитель


Что касается второй задачи, так вот чего он ко мне пристал, я не ввел массивы. Я просто представил себе, что массив x- это ось ox с координатами от 1 до 100, и точно так же y. Т.е. я нахожу все точки для данного радиуса, а нужно найти только те, которые есть в массиве, я правильно понял?


Я не знаю как ты представлял себе массивы Х и У, у тебя в программе они вообще не заданы. Я понял твою задачу так:

Даны сто точек, координаты которых записаны в массив так:
т. 1 (x[1], y[1]), т. 2 (x[2], y[2]) и т. д. Требуется найти те точки, которые принадлежат окружности.

Точки ты нашел верно, а как ты себе их представил я, к сожалению, никак не могу знать. :-(

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



Новичок

to KMA: Что касается первой задачи: спасибо, всё верно, опять я не заметил очевидной ошибки... но мой препод её тоже не заметил
А вот со второй задачей он снова ко мне пристал, заставил меня переделать ввод массивов рандомом, на ввод массивов вручную, только зачем? Я ему говорю там массив из 100 чисел зачем вручную, а он говорит уменьш массив. Логики никакой, в условии такого задания нет, так зачем изменять для решения конкретной задачи данное условие? Вобщем препод у нас немного туповат.
Спасибо большое за помощь, без тебя бы я наверное ещё б месяц эту работу здавал

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



Долгожитель

Ну я рад, что ты совсем справился. Еще вопросы будут, задавай не стесняйся. =)

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



Новичок

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

Всего сообщений: 7 | Присоединился: ноябрь 2007 | Отправлено: 5 нояб. 2007 11:05 | IP
KMA



Долгожитель

Этот способ в принципе имеет место быть... Можно пойти по другому, скопировать все элементы в одномерный массив, остортировать, а далее смотреть, есть ли у этого элемента ближайший сосед и равен ли он ему. Он немного пошустрее получиться, если ты будешь использовать сортировку скажем шейкер или quick (быстрая).

Можно еще один метод, но не знаю работать быстрее вряд ли  будет, но можешь попробовать:
Сравниваешь первый элемент с остальными, затем если видишь одинаковый затираешь его (тупо ставишь ноль, или число не равное ему). Затем, если натыкаешься на этот элемент, то его уже не прослеживаешь. Такой метод актуален, если одинаковых элементов довольно много, в худшем случае работает как тупой перебор.

Так что смотри как тебе удобнее.

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



Новичок

KMA: Спасибо, что откликнулся! :-)
Я сделал так: Изначалное значение различных эл-тов kol=0; Берем первый элемент (первая строка-первый столбец) и проверяем нет ли равных ему среди остальных, как только нашли равный - останавливаемся и смотрим следующий (т.е. первая строка - второй столбец) и т.д., как только нашли эл-т, который не повторяется, присваиваем переменной kol значение +1, и продолжаем смотреть перебирать эл-ты до конца.
По-моему, это самый оптимальный способ. Завтра посмотрим, что препод скажет ...

Всего сообщений: 7 | Присоединился: ноябрь 2007 | Отправлено: 5 нояб. 2007 18:02 | IP
KMA



Долгожитель

Это только по твоему самый оптимальный способ. А как на счет того, что тебе необходимо перебирать ВСЕ элементы по второму разу?

Если я так понял твой алгоритм то для матрицы

1 0 1
5 6 1
1 0 1

Он должен вернуть 4. Хотя реально их 2.

Вообще ты бы код привел, я бы тебе показал как его оптимизировать.  

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



Новичок

Помогите решить простенькую задачу:
Создать нетекстовый файл, содержащий инфу о машинах (модель, год выпуска, цвет, номер). Переписать в текстовый файл инфу о машинах черного цвета в порядке убывания года выпуска.

Никак не могу справиться с сортировкой =(

Program ProjectX;
uses crt;
type
   cars=record
   model,year,color,number:string[20];
   end;
   car=file of cars;
const n=3;
var
a: array [1..10] of cars;
r1:cars;
  g,i,v,m,j:integer;
  f:car;
  f2:text;
  k:char;
  clr:string[10];
  filename,filename2:string[15];


  procedure VVOD;
begin
clrscr;
    write('Введите имя файла');
    readln(filename);
    assign(f,filename);
    rewrite(f);
    for i:=1 to n do
    with r1 do
    begin
    writeln('Введите марку машины');
    readln(model);
    writeln('Введите год выпуска');
    readln(year);
    writeln('Введите цвет');
    readln(color);
    writeln('Введите номер');
    readln(number);
    write(f,r1);
    end;
    close(f);
    repeat until keypressed;
    clrscr;
end;

procedure VYVOD;
begin
    clrscr;
    writeln('Введите имя файла');
    readln(filename);
    assign(f,filename);
    writeln('Марка машинги':25,'Год выпуска':15,'Цвет':15,'Номер':8);
    reset(f);
    repeat
    read(f,r1);
    with r1 do
    writeln(model:25,year:15,color:15,number:8);
    until EOF(f);
    close(f);
    repeat until keypressed;
    clrscr;
end;

procedure Sort;
begin

{Здесь было много светлых мыслей, но заставить процедуру работать не удалось =( }

end;
procedure File2Text;
begin
clrscr;
write('Введите имя файла ');
readln(filename);
assign(f,filename);
reset(f);
write('Введите имя 2ого файла ');
readln(filename2);
assign(f2,filename2);
clr:='черный';
rewrite(f2);
repeat
read(f,r1);
with r1 do
if color=clr
then
write(f2,model:25,year:15,color:15,number:8);
until EoF(f);
close(f2);
end;


procedure Text;
begin
    clrscr;
    writeln('Введите имя файла');
    readln(filename2);
    assign(f2,filename2);
    writeln('Марка машинги':25,'Год выпуска':15,'Цвет':15,'Номер':8);
    reset(f2);
    repeat
    read(f2,k);
    write(k);
    until EOF(f2);
    close(f2);
    repeat until keypressed;
    clrscr;
end;

begin
clrscr;
while 1=1 do
begin
writeln('1.Cоздать записи..');
writeln('2.Вывести запись..');
writeln('3.Сортировать..')
writeln('4.Переписать в текстовый файл..');
writeln('5.Вывести текстовый файл');
writeln('6.Выход');
readln(v);
case v of
1:VVOD;
2:VYVOD;
3:sort;
4:File2Text;
5:Text;
6:Exit;
else exit;
end;
end;
end.

Всего сообщений: 2 | Присоединился: ноябрь 2007 | Отправлено: 7 нояб. 2007 20:48 | IP

Эта тема закрыта, новые ответы не принимаются

Переход к теме
<< Назад Вперед >>
Несколько страниц [ 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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 ]

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