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

» Добро пожаловать, Гость: Войти | Регистрация
    Форум
    Информационные технологии
        Решение задач на 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
  

Guest



Новичок

Удалите с углов доски 2nх2n по одной клеточке с противоположных углов. Покажите, что невозможно полностью покрыть эту доску фишками 1х2, так чтоб они не высовывались за края доски и не накрывали друг друга.


Мне кажется, что наилучше рассматривать шахматную доску 8х8.При этом при удалении противоположных клеточек останется клеточек одного цвета на две меньше. Фишку можно рассматривать, как одну белую и одну черную клеточку. Так как количество белых и черных клеточек на доске не ровно, то данными фишками покрыть искаженную доску невозможно. В общем-то понимаю логику задачи, но программно как ее реализовать - не знаю. Помогите, пожалуйста, обратится больше не к кому.

Всего сообщений: Нет | Присоединился: Never | Отправлено: 25 нояб. 2007 14:41 | IP
Guest



Новичок

1) Дано уравнение sin(ln(x)) – cos(ln(x)) + 2*ln(x) = 0. Решить методом половинного деления на отрезке [1; 3] с точностью 0,001.

В принципе мне понятно как её решать математически, но не получается организовать цикл.

2)Написать все предложения, которые можно составить из слов: “ваши прекрасные глаза”, “прекрасная маркиза”, “от любви”, “сулят”, “мне”, “смерть” путем их всевозможных перестановок.

как решить понятно, но мне надо вывести все варианты, как это сделать поэкранно ума не приложу

Спасибо за внимание.

Всего сообщений: Нет | Присоединился: Never | Отправлено: 25 нояб. 2007 17:18 | IP
KMA



Долгожитель


Удалите с углов доски 2nх2n по одной клеточке с противоположных углов. Покажите, что невозможно полностью покрыть эту доску фишками 1х2, так чтоб они не высовывались за края доски и не накрывали друг друга.


Принципиально математически ты ее доказал... В чем же собственно проблема? А проблема в одном единственном слове "покажите". Как показать? Что показать? Вообще, давайте начнем с самого главного в решении задачи, не с ее алгоритма, а с ее построения.

Итак, для того, чтобы приступить к программному коду необходимо пройти первые два этапа:
1) определится с выходными и входными данными.
2) разработать алгоритм.
От вас требуется пока только одно - скажите как вы себе представляете эту задачу. Лично, когда я ее прочитал, я понял как это доказывается математически, но ни слова не увидел для задачи по программированию ( с точки зрения теории алгоритмов точно должны быть определены входные и выходные параметры ). Объясните каким методом мы должны показать не решаемость этой задачи?

Нарисовать все в графическом режиме? В смысле все варианты. Показать все возможные варианты в виде строк, и сказать что таких нет... или как?

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



Долгожитель


как решить понятно, но мне надо вывести все варианты, как это сделать поэкранно ума не приложу


Организуй массив строк, т. е.

Code Sample:
const  
   messages= array [1..6] of string = ('ваши прекрасные глаза',
                                                 'прекрасная маркиза',
                                                 'сулят',
                                                 'мне',
                                                 'смреть',
                                                 'от любви');



Ну а далее перебор по индексам массива.

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



Новичок

мне бы как сделать чтоб выводило по экранно, т е нажимаешь кнопку первые 24 комбинации, нажал ещё раз следующие 24....

Всего сообщений: Нет | Присоединился: Never | Отправлено: 26 нояб. 2007 13:59 | IP
KMA



Долгожитель


мне бы как сделать чтоб выводило по экранно, т е нажимаешь кнопку первые 24 комбинации, нажал ещё раз следующие 24....


Выставляешь счетчик, после каждого написанного предложения прибавляешь к нему единицу, когда он равен скажем 21, то ставишь readLn, а счетчик обнуляешь.

Code Sample:
 
   ..
    {здесь выводишь строку}
     _stringsCount:=_stringsCount+1;
    if _stringsCount=21
      then
        begin
          readLn;
          _stringsCount:=0
        end;
   ..



что-то вроде этого.


(Сообщение отредактировал KMA 26 нояб. 2007 14:04)

Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 26 нояб. 2007 14:03 | IP
nia



Новичок

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

uses crt;
type sap=record
naim,firm:array[1..20] of char;
srok,stoim:real;
kolvo:integer;
end;
mas=array[1..500] of sap;
var
fil1:file of sap;
per:sap;
zap,zap2:mas;
i,k,s,otvet,j,d,y,x,m:integer;

begin
assign(fil1,'d:\d.dat');
clrscr;
repeat
writeln;
writeln('введите 1- просмотр исходных данных;');
writeln('введите 2- просмотр исходных данных;');
writeln('введите 3- просмотр исходных данных;');
readln(otvet);

---а вот дальше я затрудняюсь...но мне кажется,далее должны использовать case,т.е. три режима:
1.открытие и запись данных;
2.просмотр файла;
3.обработка,т.е. сортировка и вывод.

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



Долгожитель

Такого плана задачи уже решались на форуме, и не один раз. Суть такого решения всегда одна:

1 - организуем записи (у вас это сделано)
2 - организуем меню и интерфейс програмы (то, что вы сейчас делаете)
3 - переходите к частному решению мини-задач.

В программировании, переход от постановки задач как большой, затем разбитие ее на более маленькие называется UP to DOWN (сверху вниз). Что радует, то, что вы правильно начали ее решать. Итак я покажу как организовать меню, а затем уже будем постепенно дописывать отдельный задачи:

Code Sample:
 
BEGIN
       assign (fil1, 'd:\d.dat');
       
       repeat
         clrScr;
         writeLn ('Введите 1- Создать файл и записать;');
         writeLn ('Введите 2- Открыть созданный файл и просмотреть;');
         writeLn ('Введите 3- Обработать файл и вывести;');
         writeLn ('Любое другое число- Выйти из программы.');
         goToXY (1, 24);
         write ('Ваш выбор ->')
         readLn(otvet);
         
         case otvet of
                 1: begin
                       {создаем файл и добавляем записи}
                     end;
                  2: begin
                       {открываем файл и выводим все на экран}
                     end;
                  3: begin
                       {обрабатываем файл, сортируем и выводим}
                     end;
                 else otvet:=4;
         end;      
       until otvet=4;
END.



Теперь дело осталось только за заполнением этого файла... Для этого нужно написать пару процедурок и функций.

Я, пожалуй подскажу которые необходимо написать.

Процедура добавления записей файл.
Процедура создания файла.
Функция попытки открыть файл, должна вернуть истину, если успешно все открыли, или ложь, если произошла ошибка открытия.
Процедура вывода данных на экран из файла.
Процедура сортировки файла по полю.

Лучше делать в том, порядке в котором я указал. Начните, а я присоединюсь.

Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 27 нояб. 2007 0:20 | IP
Guest



Новичок

Задача: вывести фразу "Мы нашли k грибов в лесу", согласовав окончание слова "Гриб" с введённым числом k.
Всё вроде знаю, интересен только синтаксис внутри case, а то нигде информации по подобной задаче найти не могу.

Всего сообщений: Нет | Присоединился: Never | Отправлено: 28 нояб. 2007 9:36 | IP
KMA



Долгожитель


Задача: вывести фразу "Мы нашли k грибов в лесу", согласовав окончание слова "Гриб" с введённым числом k.
Всё вроде знаю, интересен только синтаксис внутри case, а то нигде информации по подобной задаче найти не могу.



Code Sample:
 
case k of
       1..4: begin
                 {группа операторов, которая выполниться,
                 если значение k принадлежит интервалу от 1 до 4}
               end;
      5, 9, 10: begin
                    {группа операторов, которая выполниться,
                     если значение k есть или 5, или 9, или 10}
                    end;
      else {else не обязателен}
        begin
          {этот элемент не обязателен.
            выполниться группа операторов
           если среди перечисленных k не нашлось }
        end;
end; {end of case}



Если у тебя выполняется всего один оператор, то логические (операторные) скобки (begin .. end) ставить не надо.

Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 28 нояб. 2007 10:30 | 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