Перейти к содержимому


Фото

Программирование


  • Please log in to reply
81 ответов в этой теме

#26 Robert Langdon

Robert Langdon

    Археолог

  • Members2
  • PipPipPip
  • 918 сообщений

Отправлено 05 Март 2009 - 09:52

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

Собственно, брутом я и предлагал. Но ресурсов и правда пожрётся нехило. Может, всё-таки сделать надо в голове, а накодить простым выводом матрицы, как Андариэль сделала?

Тогда это скорее задача по математике, а не по программированию )

#27 Andariel

Andariel

    Расхититель

  • Members2
  • PipPipPipPipPip
  • 6 450 сообщений

Отправлено 05 Март 2009 - 11:01

У нас такое прокатывало на первом курсе. Это потом уже говорили, что мы не математику тут учим :)

Можно вручную задать числа, а в проге просто дать проверку. Геммороя и вероятности зацикливания меньше.

#28 Iron

Iron

    Искатель приключений

  • Members
  • 12 сообщений

Отправлено 05 Март 2009 - 14:06


1)Заполнить матрицу размера 5 на 5 цифрами (не числами) таким образом, чтобы цифры
в строках и столбцах не повторялись, совпадали суммы цифр по столбцам и по
строкам, а также были бы простыми все пятизначные числа, изображенные строками и
столбцами матрицы

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

что-то я пока с большим трудом могу себе представить как это можно сделать :blink:

2)Задана обратная польская запись (например, "1 2 +" для выражения "1 + 2", "X 3 Y
* +" для "X + 3 * Y", "X 3 + Y *" для "( X + 3 ) * Y") некоторого простого
выражения, не содержащего вхождений идентификаторов. Вычислить значение этого
выражения.

"не содержащего вхождений идентификаторов" означает, что выражение не содержит агрументов (x, y, etc)?

Да вы все правильно поняли...
Небольшое уточнение я учусь на 1 курсе математического факультета.И затрудняюсь сказать больше эти задачи на математику или программирование.

#29 Andariel

Andariel

    Расхититель

  • Members2
  • PipPipPipPipPip
  • 6 450 сообщений

Отправлено 05 Март 2009 - 15:09

Ээээ.... А предмет хоть программирование ;)
Ну если матфак, то значит можно вручную задать числа в матрице.

#30 Robert Langdon

Robert Langdon

    Археолог

  • Members2
  • PipPipPip
  • 918 сообщений

Отправлено 05 Март 2009 - 16:51

Andariel прости а где у тебя условие что сумма по строкам и столбцам совпадает?и что цифры не повторялись?
а насчет простоты имееться ввиду чтобы в строке 5 значное число было простым.


http://trubetskoy1.narod.ru/ppn.html третий пункт вот прям как раз что надо. как же хорошо сейчас лентяям живётся...

я находил эту ссылку,но честно не очень понял как ее применить к данной конкретной задаче...

ну вообще алгоритм не трудный. последовательно просматривается строка символов. если число - кладём его в стек, если знак операции - извлекаем из стека 2 значения, выполняем над ними операцию и возвращаем результат в стек. по завершении строки благополучно извлекаем результат из стека.

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

Iron, что именно вызывает затруднения?

#31 Iron

Iron

    Искатель приключений

  • Members
  • 12 сообщений

Отправлено 07 Март 2009 - 15:34

Затреднение вызывает реализовать собственную логику.И вообще нам не давали понятия стека и я не знаю как с ним работать...

#32 TheBest

TheBest

    Профессор

  • Members2
  • PipPipPipPip
  • 1 115 сообщений

Отправлено 07 Март 2009 - 15:48

Iron

http://ru.wikipedia....a.org/wiki/Стек
стек

Чаще всего принцип работы стека сравнивают со стопкой тарелок: чтобы взять вторую сверху, нужно взять верхнюю.


Теперь знаешь?

Сообщение изменено: TheBest (07 Март 2009 - 15:49)


#33 Iron

Iron

    Искатель приключений

  • Members
  • 12 сообщений

Отправлено 12 Март 2009 - 14:10

Нам задачу дали неверно в первой задаче проверять строки и столбцы на простоту не надо.

#34 D-лемма

D-лемма

    Путешественник

  • Members2
  • Pip
  • 174 сообщений

Отправлено 11 Апрель 2009 - 20:17

Извините что вклиниваюсь не в свою тему но может кто-нибудь переписать задачу без структур,а с массивами?

#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <math.h>
#include <stdlib.h>

// объявим структуру "точка"
struct Scoord
{
 double x;
 double y;
};
//------------------

int main()
{
const int N = 10;   // количество точек
const double LMAX=-10, RMAX=10;  // левая и правая границы для генерации координат
const double TMAX=-10, BMAX=10;  // верхняя и нижняя

Scoord mas[N];  // массив точек
int i,j,K;
double S,Smin;
srand(time(NULL));

for(i=0;i<N;i++)
 {
  //  разбрасываем точки
  pixels[i][0] = rand()*(RMAX-LMAX)/(double)RAND_MAX+LMAX; // тут x
  pixels[i][1] = rand()*(BMAX-TMAX)/(double)RAND_MAX+TMAX; // тут у
  printf("To4ka %d: %5.3lf  %5.3lf\n",i,pixels[i][0].pixels[i][1]);
 }
printf("\n"); 
//==================

K = 0; // считаем, что вершина K - то, что нам нужно
Smin = -1;
for(i=0;i<N;i++)   // перебираем все возможные "корни куста"
 {
  S = 0; // изначально сумма равна 0
  for(j=0;j<N;j++)  // перебираем вершины куста
   {
	if(j==i) continue;  // если текущая вершина - корень, пропускаем
	S += pow( pow(mas[j].x-mas[i].x,2) + pow(mas[j].y-mas[i].y,2),0.5);	
   }
  if(Smin==-1)  // если мы еще пока ничего не запомнили...
   {
	Smin = S;  // то запоминаем эту сумму
	K = i;	// и номер вершины-корня
   }
  else
   {
	if(S<Smin)  // иначе, если текущая сумма меньше
	 {
	  Smin = S;  // запоминаем ее
	  K = i;
	 }
   } 
 }
//=======
printf("Vershina kusta: %5.3lf %5.3lf\n", mas[K].x,mas[K].y);
printf("Summa reber = %5.3lf\n", Smin);
//---------
getch();
return 0;
}


#35 Dokuhabi

Dokuhabi

    the sweetest biting irony

  • Members2
  • PipPipPipPipPip
  • 5 101 сообщений

Отправлено 18 Май 2010 - 18:13

да, давайте, сюда кину задачку)) помогающим как минимум 10 благодарностей :D

Напишите программу, которая при заданном натуральном числе n, составляет и выводит на экран матрицу A(n,n) вида:

а)

1 0 0 ... 0
0 2 0 ... 0
... ... ... ... 0
0 0 0 ... n

б)

n n-1 n-2 ... 1
1 n n-1 ... 2
... ... ... ... ...
1 1 1 ... n

в)

0 0 ... 0 1
0 0 ... 1 2
... ... ... ... ...
1 2 ... n-1 n
Hello, mother. I come bearing a gift. I'll give you a hint. It's in my diaper and it's not a toaster. © Stewie Griffin

#36 Miss Trent

Miss Trent

    Оракул

  • Members2
  • PipPipPipPipPip
  • 2 312 сообщений

Отправлено 18 Май 2010 - 22:44

program pischpischpopyachsaololo;
var
 n: Integer;
 s: String;

procedure matrixA(n: Integer);
var i, j: Integer;
begin
 	writeln('a)');
 	for i := 1 to n do begin
 	for j := 1 to n do begin
 	if i = j then begin
 	write(i);
 	write(' ');
 	end else begin
 	write('0 ');
 	end;
 	end;
 	writeln;
 	end;
 	writeln;
end;

procedure matrixB(n: Integer);
var i, j: Integer;
begin
 	writeln('<img src='http://tombraider.ru/forum/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' />');
 	for i := 1 to n do begin
 	for j := 1 to n do begin
 	if j >= i then
 	write(n - abs(i - j))
 	else
 	write(1);
 	write(' ');
 	end;
 	writeln;
 	end;
 	writeln;
end;

procedure matrixC(n: Integer);
var i, j: Integer;
begin
 	writeln('c)');
 	for i := n downto 1 do begin
 	for j := 1 to n do begin
 	if j < i then
 	write(0)
 	else
 	write(abs(i - j) + 1);

 	write(' ');
 	end;
 	writeln;
 	end;
 	writeln;
end;

begin
 	write('n = ');
 	readln(n);
 	if n > 0 then begin
 	matrixA(n);
 	readln(s);
 	matrixB(n);
 	readln(s);
 	matrixC(n);
 	end else begin
 	writeln('Not a natural number!');
 	end;
 	readln(s);
end.
правда все табы покоцались(если нужны, выложу файлик), будут вопросы, пиши. тут по сути, все на циклах построено

забыла - работа проги - вводим н, на ентер выводятся остальные матрицы.

Сообщение изменено: Miss Trent (18 Май 2010 - 21:45)

Один не разберёт, чем пахнут розы
Другой из горьких трав добудет мёд
Дай хлеба одному - навек запомнит
Другому жизнь пожертвуй - не поймёт


#37 Dokuhabi

Dokuhabi

    the sweetest biting irony

  • Members2
  • PipPipPipPipPip
  • 5 101 сообщений

Отправлено 18 Май 2010 - 22:46

Miss Trent, вах, спасибище тебе огромное :kiss: я проверю на паскалике, и обязательно передам тебе результаты "сдачи" ^___^
Hello, mother. I come bearing a gift. I'll give you a hint. It's in my diaper and it's not a toaster. © Stewie Griffin

#38 Robert Langdon

Robert Langdon

    Археолог

  • Members2
  • PipPipPip
  • 918 сообщений

Отправлено 19 Май 2010 - 08:26

я пришёл с критикой)))

собственно, замечания у меня два:

1) Задача, я так понимаю по теме массивы, а значит массив всё же необходимо использовать - сначала заполнить значениями, а потом уже вывести готовый

2) Процедуры обычно проходят после массивов, поэтому вполне вероятен резонный вопрос: а как это вы сами узнали? ))) Ну и даже если использовать процедуры, то логичнее было бы разделить заполнение массива и вывод массива на экран

ну и собственно по мелочи:

1) вместо ReadLn(s); можно использовать просто ReadLn;
2) вместо Write(i); Write(' '); можно использовать Write(i:2);
3) begin-end;-ов половину убрать можно
4) условия заполнения таблиц можно выразить без модулей и циклов задом наперед )))

#39 Miss Trent

Miss Trent

    Оракул

  • Members2
  • PipPipPipPipPip
  • 2 312 сообщений

Отправлено 19 Май 2010 - 14:25

за массивы никто не говорил (а я просила точную формулировку). B)

1)-4) - согласна. можно. но я сделала так, за ээ... 5 10 минут.
твой вариант?:)
Один не разберёт, чем пахнут розы
Другой из горьких трав добудет мёд
Дай хлеба одному - навек запомнит
Другому жизнь пожертвуй - не поймёт


#40 Robert Langdon

Robert Langdon

    Археолог

  • Members2
  • PipPipPip
  • 918 сообщений

Отправлено 19 Май 2010 - 14:58

мой вариант прост до безобразия )))

program prog111;
var
a: array[1..100, 1..100] of integer;
i, j, n: integer;
begin
write('Vvedite n: ');
readln(n);

writeln('Variant a');
for j:=1 to n do
begin
for i:=1 to n do
begin
if(i = j)
then
a[j,i]:=i
else
a[j,i]:=0;
end;
end;

for j:=1 to n do
begin
for i:=1 to n do
begin
write(a[j,i]:3);
end;
writeln;
end;
readln;

writeln('Variant b');
for j:=1 to n do
begin
for i:=1 to n do
begin
if(i >= j)
then
a[j,i]:=n-i+j
else
a[j,i]:=1;
end;
end;

for j:=1 to n do
begin
for i:=1 to n do
begin
write(a[j,i]:3);
end;
writeln;
end;
readln;

writeln('Variant c');
for j:=1 to n do
begin
for i:=1 to n do
begin
if(i + j > n)
then
a[j,i]:=i+j-n
else
a[j,i]:=0;
end;
end;

for j:=1 to n do
begin
for i:=1 to n do
begin
write(a[j,i]:3);
end;
writeln;
end;
readln;
end.


#41 Miss Trent

Miss Trent

    Оракул

  • Members2
  • PipPipPipPipPip
  • 2 312 сообщений

Отправлено 19 Май 2010 - 15:22

у тебя begin/end"ов столько же )) (на первый мимолетный взгляд).
а вообще имхо, оба варианта простые.:P
долго писал?

Один не разберёт, чем пахнут розы
Другой из горьких трав добудет мёд
Дай хлеба одному - навек запомнит
Другому жизнь пожертвуй - не поймёт


#42 Andariel

Andariel

    Расхититель

  • Members2
  • PipPipPipPipPip
  • 6 450 сообщений

Отправлено 19 Май 2010 - 16:03

Robert Langdon, у тебя в проге один большой недостаток: если n будет больше 100, то она будет матюкаться :P

#43 Robert Langdon

Robert Langdon

    Археолог

  • Members2
  • PipPipPip
  • 918 сообщений

Отправлено 19 Май 2010 - 16:33

у тебя begin/end"ов столько же )) (на первый мимолетный взгляд).
а вообще имхо, оба варианта простые.:P
долго писал?

ну с begin-end'ами я просто не был уверен в том как будет восприниматься if, на всякий случай оставил )
писал недолго, долше матюкался от того, как же неудобно что-то делать в досовском окошке ))) да и паскаль я порядком подзабыл )))

Robert Langdon, у тебя в проге один большой недостаток: если n будет больше 100, то она будет матюкаться :P

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

#44 Miss Trent

Miss Trent

    Оракул

  • Members2
  • PipPipPipPipPip
  • 2 312 сообщений

Отправлено 19 Май 2010 - 16:39

все молодцы, Катьке удачи на сдаче. :acute:
я пошла писать диплом

Один не разберёт, чем пахнут розы
Другой из горьких трав добудет мёд
Дай хлеба одному - навек запомнит
Другому жизнь пожертвуй - не поймёт


#45 Dokuhabi

Dokuhabi

    the sweetest biting irony

  • Members2
  • PipPipPipPipPip
  • 5 101 сообщений

Отправлено 19 Май 2010 - 18:05

спасибо огромное, приятного написания, что-ли ^_^
Hello, mother. I come bearing a gift. I'll give you a hint. It's in my diaper and it's not a toaster. © Stewie Griffin

#46 NyK2104

NyK2104

    Профессор

  • Members2
  • PipPipPipPip
  • 1 080 сообщений

Отправлено 12 Октябрь 2010 - 18:14

Помогите написать задачу на Паскале. Я в нём полный ноль, а со второго дали задачу расписать.
Условие: Треугольник задан величинами своих углов и радиусом описанной окружности. Найти стороны треугольника.
буду очень благодарен, если что :)

Сообщение изменено: Tomb_and_Jerry (12 Октябрь 2010 - 18:15)

Better to be hated than loved for what you're not

#47 Andariel

Andariel

    Расхититель

  • Members2
  • PipPipPipPipPip
  • 6 450 сообщений

Отправлено 12 Октябрь 2010 - 18:58

Саму программулинку писать - раз плюнуть...Про отношение углов и сторон помню... А вот как относится радиус окружности к треугольнику - не помню (((
Дай формулу, а я напишу код.

#48 Robert Langdon

Robert Langdon

    Археолог

  • Members2
  • PipPipPip
  • 918 сообщений

Отправлено 12 Октябрь 2010 - 19:14

R = A / (2 * sin(a)), значит, если имеем R, a, b, то



A = 2 * R * sin(a)

B = 2 * R * sin( b )

C = 2 * R * sin(pi - a - b )

Сообщение изменено: Robert Langdon (12 Октябрь 2010 - 19:17)


#49 Andariel

Andariel

    Расхититель

  • Members2
  • PipPipPipPipPip
  • 6 450 сообщений

Отправлено 12 Октябрь 2010 - 19:17

Смайлики - жЭЭЭЭЭсть!
Тольк я что-то не поняла формул :blink: Пора назад в школу...

#50 Robert Langdon

Robert Langdon

    Археолог

  • Members2
  • PipPipPip
  • 918 сообщений

Отправлено 12 Октябрь 2010 - 19:20

A, B, C - стороны; a, b, c - углы в радианах; R - радиус




1 посетителей читают эту тему

0 пользователей, 1 гостей, 0 скрытых