Модераторы: Alx, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Pascal, Задачки 
:(
    Опции темы
volvo877
Дата 31.1.2007, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2072
Регистрация: 15.11.2004

Репутация: нет
Всего: 116



Цитата(Strannik @  28.1.2007,  18:58 Найти цитируемый пост)
Вот чуть более эффективная реализация:

Вполне возможно, только ничего, что она результат неправильный выдавать будет?

Цитата(Strannik @  28.1.2007,  18:58 Найти цитируемый пост)
П.С. Не компилировал и не тестировал, так что за описки не пинать а идея и так понятна...
Интересная позиция... Только вот идея - она и так понятна, тебе не показалось? А ты почему-то очевидного не заметил... Условие еще раз перечитай, и посмотри, есть ли в матрице отдельно стоящие единицы. Так вот их учитывать не надо (судя по тому, что автор выделил только единицы, стоящие ГРУППОЙ), а твоя программа это будет делать...
PM MAIL   Вверх
Strannik
Дата 31.1.2007, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.1.2007

Репутация: нет
Всего: 2



Цитата

Дана матрица из нулей и единиц, найти количество областей состоящих из единиц ("пятна")


Одна единица - область состоящая из единиц.

Я решил эту задачу и не несу ответственность за несоответствие примеров или некорректную постановку задачи. 
PM MAIL   Вверх
WTF4XZ
Дата 22.7.2007, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 16.4.2007
Где: 63 Самара

Репутация: нет
Всего: 5



Ещё пример тупенькой задачки:

На вход программе подаются строчные английскме буквы. Ввод этих символов заканчивается точкой. Требуется написать программу, которая будет печатать буквы, встречающиеся во входной последовательности, в порядке уменьшения частоты их встречаемости. Каждая буква должна быть распечатана один раз. Точка при этом не учитывается.
Если какие-то буквы встречаются одинаковое количество раз, то они выводятся в алфавитном порядке.
Пример входных данных:
batat.
Вывод:
atb
--------------------
Я создание эмоций, создание способные чувствовать не только эмоции людей но и машин.Я EMO_CODER != FALSE;Никто не знает о нас, но мы есть, мы живём, мы кодим и мы... чувствуем, ипспытываем такие эмоции.. сильнее любого бинарника, мощнее любого ассемблера.
PM MAIL ICQ GTalk Jabber   Вверх
sentry
Дата 24.7.2007, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Code Monkey
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 29.1.2007
Где: Москва

Репутация: нет
Всего: 10



Цитата(SoWa @  12.9.2005,  16:15 Найти цитируемый пост)
Дано N, на выход дать матрицу, представляющую из себя магический квадрат со стороной N или выдать, что решений нет.

А это разве для любого N можно сделать?

Цитата(AlexST @  3.8.2006,  18:35 Найти цитируемый пост)
Есть множество точек плоскости, соединить две из них отрезком так, чтобы с обоих сторон отрезка было равное количество точек.

Скорее провести прямую, а не отрезок. Решается через знак отклонения точки от прямой.

Почти задача из той же серии чуть-чуть сложнее:
Вводятся центры окружностей и их радиус, а также точки. Провести через точки прямую, пересекающую максимальное количество окружностей.
PM MAIL   Вверх
Aristarh_Dark
Дата 25.7.2007, 05:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 13.7.2007

Репутация: нет
Всего: нет



Цитата(Berd @ 5.8.2006,  06:16)
Для разнообразия тренирующихся.
Где-то когда-то вычитал:
...
"Составить программу, которая печатает сама себя. 
Программа должна иметь как можно меньший размер."
...

Бейсик smile
Код

10 List

PM MAIL   Вверх
zusichka
Дата 10.12.2007, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 10.12.2007

Репутация: нет
Всего: нет



Квадратная матрица, симметричная относительно главной диагонали, заданная верхним треугольником в виде одномерного масива. Возобновить начальную матрицу и напечатать по строкам.

как вам? .решите
PM MAIL   Вверх
mr.Anderson
Дата 16.12.2007, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 1
Всего: 128



Цитата
На вход программе подаются строчные английскме буквы. Ввод этих символов заканчивается точкой. Требуется написать программу, которая будет печатать буквы, встречающиеся во входной последовательности, в порядке уменьшения частоты их встречаемости. Каждая буква должна быть распечатана один раз. Точка при этом не учитывается.
Если какие-то буквы встречаются одинаковое количество раз, то они выводятся в алфавитном порядке.
Пример входных данных:
batat.
Вывод:
atb 

Заинтересовался. Сча попробую сделать...

Это сообщение отредактировал(а) mr.Anderson - 16.12.2007, 17:02


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
mr.Anderson
Дата 16.12.2007, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 1
Всего: 128



Гм. Решил. Но вряд ли решение оптимально, прошу подсказать более правильный вариант.
Код

program engLetters;

{$APPTYPE CONSOLE}

var
 l : array [1..130] of Word;
 i : Word;
 s : String;
 c : Word;
 m : Word;
begin
 fillchar( l, sizeof(l), 0 );

 c := 0;

 readln( s );

 for i:=1 to Length(s) do
 begin
  if( s[i] = '.' ) then
   break;

  inc( l[ ord(s[i]) ] );
  inc( c );
 end;

 m := 0;

 while( c > 0 ) do
 begin
  for i:=1 to 130 do
  begin
   if( l[i] > m ) then
    m := l[i]
   else
    m := m;
  end;

  for i:=1 to 130 do
   if( l[i] = m ) then
   begin
    write( chr(i) );
    l[i] := 0;
   end;

  dec( c );
 end;
end.



--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
klubnichka13
Дата 14.4.2009, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 14.4.2009

Репутация: нет
Всего: нет



привет!кто-нибудь помогите пожалста!решить задачу:
Описать процедуру StringFileToText(Name) / TextFileToString(Name), преобразующую двоичный строковый в текстовый файл с именем Name, и текстовый в двоичный строковый файл с тем же именем. Используя эту процедуру, преобразовать два данных строковых/текстовых файла с именами Name1 и Name2 в текстовыйе/строковые.
PM MAIL   Вверх
Semmi
Дата 20.7.2009, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 20.7.2009

Репутация: нет
Всего: нет



Цитата(sgentstuff @ 17.7.2006,  18:47)
Вобщем решил я эту задачку решение ниже.

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

Составить  алгоритм  заполнения  прямоугольной таблицы размером N*N целыми числами от 1 до N*N  по  спирали.
Пример для N=5.
1    2    3    4    5
16    17    18    19    6
15    24    25    20    7
14    23    22    21    8
13    12    11    10    9

Ршение
Код

procedure TForm1.Button1Click(Sender: TObject);
const n=4;
var
ur,g,i,s:integer;
a:array[1..n,1..n] of integer;
str:string;
begin
//
g:=1;
s:=0;
while s<>n*n do
begin
        for i:=g to n-g+1 do
        begin
        inc(s);
        a[g,i]:=s;
        end;
        for i:=g to n-g do
        begin
        inc(s);
        a[i+1,n-g+1]:=s;
        end;
        for i:=n-g downto g do
        begin
        inc(s);
        a[n-g+1,i]:=s;
        end;
        for i:=n-g downto g+1 do
        begin
        inc(s);
        a[i,n-(n-g)]:=s;
        end;

inc(g);

end;
for i:=1 to n do
begin
str:='';
for g:=1 to n do
str:=str+IntToStr(a[i,g])+'  ';
memo1.Lines.add(str);
end;
end;

Кто может предложить более изящное решение, чем с 5- циклами?

создаем массив из (n+2)*(n+2) элементов заполненый след образом:
пример для n=3 
00000
0***0
0***0
0***0
00000   и начиная с элемета [2,2] заполняем массив числами 1 до n^2. как только встретили 0 или НЕ *, то меняем направление заполнения.
в итоге один цикл от 1 до n^2
PM MAIL   Вверх
fukusu
Дата 29.1.2010, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 29.1.2010

Репутация: нет
Всего: нет



Цитата(sgentstuff @ 17.7.2006,  18:47)
Вобщем решил я эту задачку решение ниже.

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

Составить  алгоритм  заполнения  прямоугольной таблицы размером N*N целыми числами от 1 до N*N  по  спирали.
Пример для N=5.
1    2    3    4    5
16    17    18    19    6
15    24    25    20    7
14    23    22    21    8
13    12    11    10    9

Ршение
Код

procedure TForm1.Button1Click(Sender: TObject);
const n=4;
var
ur,g,i,s:integer;
a:array[1..n,1..n] of integer;
str:string;
begin
//
g:=1;
s:=0;
while s<>n*n do
begin
        for i:=g to n-g+1 do
        begin
        inc(s);
        a[g,i]:=s;
        end;
        for i:=g to n-g do
        begin
        inc(s);
        a[i+1,n-g+1]:=s;
        end;
        for i:=n-g downto g do
        begin
        inc(s);
        a[n-g+1,i]:=s;
        end;
        for i:=n-g downto g+1 do
        begin
        inc(s);
        a[i,n-(n-g)]:=s;
        end;

inc(g);

end;
for i:=1 to n do
begin
str:='';
for g:=1 to n do
str:=str+IntToStr(a[i,g])+'  ';
memo1.Lines.add(str);
end;
end;

Кто может предложить более изящное решение, чем с 5- циклами?

Собственно не совсем паскаль, но сути это не меняет.
Вот решение с одним циклом, причем для случая, когда не квадрат, а прямоугольник (но для квадрата тоже работает smile )
Код

    Dim Arr(20, 20) As Integer
    Dim Orient As Integer
    Dim Col As Integer
    Dim Row As Integer
    Dim Col2 As Integer
    Dim Row2 As Integer
    Dim Sign As Integer
    Dim MoveX As Integer
    Dim MoveY As Integer
    Dim I As Integer, J As Integer
    Dim bChangeDirct As Boolean
    Dim N As Integer
    Dim M As Integer

    N = Range("inputN").Value
    M = Range("inputM").Value
    Orient = 1
    Col = 1
    Row = 0
    I = 0
    bChangeDirct = False
    
    While I < N * M
        Sign = IIf(2 - Orient >= 0, 1, -1)
        MoveX = Orient Mod 2
        MoveY = 1 - MoveX
       
        I = I + 1
        Row = Row + Sign * MoveX
        Col = Col + Sign * MoveY
        Arr(Col, Row) = I
        
        Row2 = Row + Sign * MoveX
        Col2 = Col + Sign * MoveY
        If Row2 > N Or Col2 > M Or Row2 < 1 Or Col2 < 1 Then
            bChangeDirct = True
        Else
            If Arr(Col2, Row2) <> 0 Then bChangeDirct = True
        End If
        
        If bChangeDirct Then
            bChangeDirct = False
            If Orient < 4 Then Orient = Orient + 1 Else Orient = 1
        End If
    Wend

Собственно, считаю решение более изящным
PM MAIL   Вверх
Uliya20
Дата 1.6.2010, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 1.6.2010

Репутация: нет
Всего: нет




Модератор: Сообщение скрыто.

PM MAIL   Вверх
LoveMeCozImBLONDE
Дата 1.6.2010, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 27.5.2009

Репутация: нет
Всего: нет




Модератор: Сообщение скрыто.

PM MAIL   Вверх
jtxstyle
Дата 13.11.2010, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 12.11.2010

Репутация: нет
Всего: нет



 smile 

PM MAIL   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Интересные и занимательные задачи по программированию | Следующая тема »


 




[ Время генерации скрипта: 0.1825 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.