Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Алгоритм] Помогите пожалуйсто с заданиями по инфе, Очень прошу... 
V
    Опции темы
TruePozer
Дата 17.10.2008, 07:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

Примечание: Предпологается, что ввод данных в программы осуществляется из файла in.txt, а вывод в фаил out.txt. (Если сделать ввод с клавиатуры, а вывод на экран, училка бошку оторвёт, они типа хочет чтобы всё было как на олимпиаде).

Цитата
1) Напишите программу, которая по введёному целому числу, выводить разность между суммой его чётных цифр и суммой его нечётныз цифр.

2) Напишите программу, упорядочивыющую последовательность целых чисел в лексикографическом порядке по возрастанию. Лексикографическое упорядочивание состоит в том, что сначала числа упорядочиваются по самой старшей цифре, затем, если старшая цифра одинаковая, то по второй слева и т.д. Отсутствие цифры меньше любой цифры. На входе алгоритма первым указывается длинна последовательности, а затем сама последовательность. На выходе только упорядоченная последовательность. 

3) Напишите программу, которая в квадратной матрице 3х3 из целых чисел определяет количество пар одинаковых чисел, расположенных симметрично относительно главной диагонали. Главной диагональю называется цепочка чисел, у которых совпадают номер строки и номер столбца.

4)Напишите программу, определяющую для произвольного целого десятичного числа минимальное основание системы счисления, в котором данное число является двузначным.

5) Напишите программу, которая получает на входе две последовательности x[1]..x[n] и y[1]..y[k] целых чисел и выесняет, является ли вторая последовательность подпоследовательностью первой, т.е. можно ли из первой вычеркнуть некоторые числа члены так, что бы осталась вторая. На выходе должен быть ответ TRUE иди FALSE. 


Вот такие задания. Я буду очень признателен если вы поможите мне их решить. Заранее спасибо.
PM MAIL   Вверх
Avaj
Дата 17.10.2008, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



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


Новичок



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

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



Ёмаё, я конечно извеняюсь если не туда написал, но блин очень нада решить задачи...
PM MAIL   Вверх
mr.Anderson
Дата 17.10.2008, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



Язык не указан, форум - "Алгоритмы", так что пишу алгоритмы.

Задача первая.

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

Добавлено через 6 минут и 14 секунд
Задача третья.

Поскольку задан фиксированный размер матрицы (3х3), то достаточно просто проверить конкретные элементы на равенство. Элементы, которые нужно проверить, помечены буквами (одинаковые буквы - симметричные элементы):
Цитата

(0 x y)
(x 0 z)
(y z 0)

Симметрия получается для элементов x-x, y-y, z-z. То есть, если есть массив Matrix[3][3] (нумерация с нуля), то тебе нужно проверить следующие три условия:
Код

if (Matrix[1][0] == Matrix[0][1])
{
  ...
}
if (Matrix[2][0] == Matrix[0][2])
{
  ...
}
if (Matrix[2][1] == Matrix[1][2])
{
  ...
}

И вывести, какие из условий выполняются.

Добавлено через 8 минут и 20 секунд
Задача пятая.

Даны две последовательности, вторая из которых потенциально может входить в первую. Тогда делаем следующее. Пробегаемся по первой последовательности до тех пор, пока не встретим первый элемент второй последовательности. Как только встретили - смотрим, а не будет ли следующий элемент первой таким же, как следующий элемент второй. Если нет, снова пытаемся найти первый элемент, ну и так далее.

Это сообщение отредактировал(а) mr.Anderson - 17.10.2008, 15:51


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

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


Новичок



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

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



mr.Anderson, благодарю, с вашей помощью решить эти задачки не проблема. Ещё раз спасибо.
Эх, по развёрнутей бы((

А язык кстати, любой) Но лучше Делфи, Си, а то там училка та наша Хаскелл и J не знает...
mr.Anderson, я был бы ещё более признателен еси бы вы и с кодом мне помогли, если не сложно...

Это сообщение отредактировал(а) TruePozer - 18.10.2008, 06:59
PM MAIL   Вверх
mr.Anderson
Дата 18.10.2008, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



TruePozer, если не проблема, то попробуй все же сам. smile Я напишу тебе вторую из тех, что привел в алгоритмах.

Си:
Код

#include <stdio.h>

void main()
{
  int Matrix[3][3];
  for (int i = 0; i<3; i++)
    for (int j = 0; i<3; j++)
    {
      printf("Enter Matrix[%d][%d]", i, j);
      scanf("%d", &Matrix[i][j]);
    }

  if (Matrix[1][0] == Matrix[0][1]) 
    printf("Elements [1][0] and [0][1] are equal.");
  if (Matrix[2][0] == Matrix[0][2])
    printf("Elements [2][0] and [0][2] are equal.");
  if (Matrix[2][1] == Matrix[1][2])
    printf("Elements [2][1] and [1][2] are equal.");
}

Кажись, это все. Не проверял, надеюсь, не наврал.

Это сообщение отредактировал(а) mr.Anderson - 18.10.2008, 13:20


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

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


Новичок



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

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



Спасибо) Блин, 3ю задачу я сам сделал, на паскале:

Код

Var x, y, s : Integer;
      mass : array [1..3, 1..3] of Integer;
      i, o : TextFile;
    
Begin
AssignFile(i, 'In.txt');
Reset(i);

For x := 1 To 10 Do
  For y := 1 To 10 Do
    Read(i, mass[x,y]);

CloseFile(i);

if (mass[1][0] = mass[0][1]) then s:=s+1;

if (mass[2][0] = mass[0][2]) then s:=s+1;

if (mass[2][1] = mass[1][2]) then s:=s+1;


For x := 1 To 10 Do
  Begin
    For y := 1 To 10 Do
      Write(mass[x,y], ' ');
    Writeln;
  End;

AssignFile(o, 'Out.txt');
Reset(o);
writeln(s, 'Out.txt');
CloseFile(o);


Readln;
End.



Вроде правильно.

А вот вторую задачу ваще хз как сделать(((

А первую вроде так:

Код

var k,n,s1,s2:longint;
begin
assign(input,'in.txt');
assign(output,'out.txt');
reset(input);
rewrite(output);
s1:=0;
s2:=0;
readln(n);
while n>0 do begin
k:=n mod 10;
n:=n div 10;
if k mod 2 = 0 then inc(s1) else inc(s2);
end;
write(abs(s1-s2));
close(input);
close(output);
end.

PM MAIL   Вверх
TruePozer
Дата 19.10.2008, 06:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Помогите пожалуйста с 4 и 5 заданием, а то уже завтра здавать, а я чёт не врюблюсь как их сделать!!! Особенно в 5ом как эти последовательности из файла в 2 массива вбить? 
PM MAIL   Вверх
mr.Anderson
Дата 19.10.2008, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



TruePozer, причем тут файл в пятой задаче? В условии про файлы ничего не сказано. Я попробую сделать, получится - выложу.


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

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


iOS Lead Developer
****


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

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



Угумсь. Вот пятая задача. Паскаль.
Код

program Project1;

const
  N = 5;
  K = 3;

var
  X: Array [1..N] Of Integer;
  Y: Array [1..K] Of Integer;
  I: Integer;
  J: Integer;
  F: Boolean;

begin
  Write('Enter the first sequence (', N, '): ');
  for I := 1 to N do
    Read(X[I]);
  Write('Enter the second sequence (', K, '): ');
  for I := 1 to K do
    Read(Y[I]);

  for I := 1 to N-1 do //подпоследовательность - min. 2 элемента, поэтому до N не надо идти
  begin
    F := True;

    if (X[I] = Y[1]) then
    begin
      for J := 1 to K do //а вот в этом массиве идем до конца
        if (X[I+J-1] <> Y[J]) then
        begin
          F := False;
          break;
        end;

      if (F) then
      begin
        WriteLn('The first sequence contains the second sequence.');
        break;
      end;
    end;

    F := False;
  end;

  if (not F) then
    WriteLn('The first sequence does not contain the second sequence.');

  ReadLn;
end.



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

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


Новичок



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

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



Код

Var
     b, n : Integer;
     i, o : TextFile;
begin
AssignFile(i, 'In.txt');
Reset(i);
Readln(i,n);

B:=0;
while B*B <= n do inc(B);

AssignFile(o, 'Out.txt');
rewrite(o);
writeln(o, b);
CloseFile(o);
end;


вот сделал 4ю, не знаю тока правильно нет)

Цитата

TruePozer, причем тут файл в пятой задаче? В условии про файлы ничего не сказано. Я попробую сделать, получится - выложу.


Дык вот же:
Цитата

Примечание: Предпологается, что ввод данных в программы осуществляется из файла in.txt, а вывод в фаил out.txt.


Как запонить эти 2 массива из файла? При этом длинна массива не задана, она может быть любой. 

Я все задания сделал, спасибо за помошь, осталось только это задание а как заполнить массивы из файла я не знаю(((
PM MAIL   Вверх
mr.Anderson
Дата 19.10.2008, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



Ааа. Точн. Ну смотри. Допустим, файл такого содержания:
Цитата

5
1 2 3 4 5
3
2 3 4

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


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

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


Новичок



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

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



Цитата

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


Дык раз 1 и 3 строка это длинны массивов на кой нам массив на 1000 элементов?

Иии... канечно спасибо за структуру фала, но как заполнить массивы из этого файла?
PM MAIL   Вверх
mr.Anderson
Дата 19.10.2008, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



TruePozer, ну, если сильно хочется возиться с динамическими массивами, можно и так, конечно... Только вот зачем. Массив из 1000 элементов мы зададим, т.к. мы не знаем, сколько элементов окажется в файле. Поэтому дадим с запасом 1000 символов. Считывание из файла можно построить, например, так:
Код

var
  X: Array [1..1000] Of Integer;
  Y: Array [1..1000] Of Integer;
  F: TextFile;
  A: Integer;
  I: Integer;
begin
  AssignFile(F, 'in.txt');
  Reset(F);
  ReadLn(F, A);
  for I := 1 to A do
    Read(F, X[I]);
  ReadLn(F, A);
  for I := 1 to A do
    Read(F, Y[I]);
end.

Должно работать, я думаю...

ЗЫ Угу. Работает, проверил.

Теперь можно ввести доп.переменные (скажем, те же N и K), в них после строчек
Код

ReadLn(F, A);

Последовательно записать это А сначала в N, потом в K. А потом уже обработку массивов делать от 1 и до N-1 или K соответственно, как в моем вышенаписанном коде.

Понятно?

Это сообщение отредактировал(а) mr.Anderson - 19.10.2008, 15:59


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

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


Новичок



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

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



Спасссиииибоо! Большое! Хотел тебе плюсик поставить, а он пишет тока со 100 постов( Но ни чо, полюбому тебе +100500!
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




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


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

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