Тогда это скорее задача по математике, а не по программированию )Собственно, брутом я и предлагал. Но ресурсов и правда пожрётся нехило. Может, всё-таки сделать надо в голове, а накодить простым выводом матрицы, как Андариэль сделала?Тогда уж брутфорс, однако проверка пятизначного числа на простоту задача довольно ресурсоёмкая
Программирование
#26
Отправлено 05 March 2009 - 09:52
#27
Отправлено 05 March 2009 - 11:01
Можно вручную задать числа, а в проге просто дать проверку. Геммороя и вероятности зацикливания меньше.
#28
Отправлено 05 March 2009 - 14:06
Да вы все правильно поняли...оу, я тут тоже малость проглядел условие...
1)Заполнить матрицу размера 5 на 5 цифрами (не числами) таким образом, чтобы цифры
в строках и столбцах не повторялись, совпадали суммы цифр по столбцам и по
строкам, а также были бы простыми все пятизначные числа, изображенные строками и
столбцами матрицы
итак, если можно, несколько уточнений:
1) в пределах каждой строки и каждого столбца содержатся пять разных цифр
2) суммы цифр каждого из столбцов и каждой из строк одинаковые
3) каждая стока и каждый столбец образуют простое число
что-то я пока с большим трудом могу себе представить как это можно сделать
"не содержащего вхождений идентификаторов" означает, что выражение не содержит агрументов (x, y, etc)?2)Задана обратная польская запись (например, "1 2 +" для выражения "1 + 2", "X 3 Y
* +" для "X + 3 * Y", "X 3 + Y *" для "( X + 3 ) * Y") некоторого простого
выражения, не содержащего вхождений идентификаторов. Вычислить значение этого
выражения.
Небольшое уточнение я учусь на 1 курсе математического факультета.И затрудняюсь сказать больше эти задачи на математику или программирование.
#29
Отправлено 05 March 2009 - 15:09
Ну если матфак, то значит можно вручную задать числа в матрице.
#30
Отправлено 05 March 2009 - 16:51
ну вообще алгоритм не трудный. последовательно просматривается строка символов. если число - кладём его в стек, если знак операции - извлекаем из стека 2 значения, выполняем над ними операцию и возвращаем результат в стек. по завершении строки благополучно извлекаем результат из стека.Andariel прости а где у тебя условие что сумма по строкам и столбцам совпадает?и что цифры не повторялись?
а насчет простоты имееться ввиду чтобы в строке 5 значное число было простым.я находил эту ссылку,но честно не очень понял как ее применить к данной конкретной задаче...
http://trubetskoy1.narod.ru/ppn.html третий пункт вот прям как раз что надо. как же хорошо сейчас лентяям живётся...
самое сложное в этой задаче это выделять из исходной строки числа и знаки операций - здесь легко можно ориентироваться по разделительным пробелам. это раз. нужно реализовать собственную логику работы стека, если использовать существующую реализацию не представляется возможным. это два.
Iron, что именно вызывает затруднения?
#31
Отправлено 07 March 2009 - 15:34
#32
Отправлено 07 March 2009 - 15:48
http://ru.wikipedia....a.org/wiki/Стек
стек
Чаще всего принцип работы стека сравнивают со стопкой тарелок: чтобы взять вторую сверху, нужно взять верхнюю.
Теперь знаешь?
Сообщение изменено: TheBest (07 March 2009 - 15:49)
#33
Отправлено 12 March 2009 - 14:10
#34
Отправлено 11 April 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
Отправлено 18 May 2010 - 18:13
Напишите программу, которая при заданном натуральном числе 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
#36
Отправлено 18 May 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 May 2010 - 21:45)
Другой из горьких трав добудет мёд
Дай хлеба одному - навек запомнит
Другому жизнь пожертвуй - не поймёт
#37
Отправлено 18 May 2010 - 22:46
#38
Отправлено 19 May 2010 - 08:26
собственно, замечания у меня два:
1) Задача, я так понимаю по теме массивы, а значит массив всё же необходимо использовать - сначала заполнить значениями, а потом уже вывести готовый
2) Процедуры обычно проходят после массивов, поэтому вполне вероятен резонный вопрос: а как это вы сами узнали? ))) Ну и даже если использовать процедуры, то логичнее было бы разделить заполнение массива и вывод массива на экран
ну и собственно по мелочи:
1) вместо ReadLn(s); можно использовать просто ReadLn;
2) вместо Write(i); Write(' '); можно использовать Write(i:2);
3) begin-end;-ов половину убрать можно
4) условия заполнения таблиц можно выразить без модулей и циклов задом наперед )))
#39
Отправлено 19 May 2010 - 14:25
1)-4) - согласна. можно. но я сделала так, за ээ... 5 10 минут.
твой вариант?
Другой из горьких трав добудет мёд
Дай хлеба одному - навек запомнит
Другому жизнь пожертвуй - не поймёт
#40
Отправлено 19 May 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
Отправлено 19 May 2010 - 15:22
а вообще имхо, оба варианта простые.
долго писал?
Другой из горьких трав добудет мёд
Дай хлеба одному - навек запомнит
Другому жизнь пожертвуй - не поймёт
#42
Отправлено 19 May 2010 - 16:03
#43
Отправлено 19 May 2010 - 16:33
ну с begin-end'ами я просто не был уверен в том как будет восприниматься if, на всякий случай оставил )у тебя begin/end"ов столько же )) (на первый мимолетный взгляд).
а вообще имхо, оба варианта простые.
долго писал?
писал недолго, долше матюкался от того, как же неудобно что-то делать в досовском окошке ))) да и паскаль я порядком подзабыл )))
это не недостаток, а ограничение ))) можно создавать массив динамически, через указатель и выделение памяти, но, думаю, в школе этому не учат.Robert Langdon, у тебя в проге один большой недостаток: если n будет больше 100, то она будет матюкаться
#44
Отправлено 19 May 2010 - 16:39
я пошла писать диплом
Другой из горьких трав добудет мёд
Дай хлеба одному - навек запомнит
Другому жизнь пожертвуй - не поймёт
#45
Отправлено 19 May 2010 - 18:05
#46
Отправлено 12 October 2010 - 18:14
Условие: Треугольник задан величинами своих углов и радиусом описанной окружности. Найти стороны треугольника.
буду очень благодарен, если что
Сообщение изменено: Tomb_and_Jerry (12 October 2010 - 18:15)
#47
Отправлено 12 October 2010 - 18:58
Дай формулу, а я напишу код.
#48
Отправлено 12 October 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 October 2010 - 19:17)
#49
Отправлено 12 October 2010 - 19:17
Тольк я что-то не поняла формул
#50
Отправлено 12 October 2010 - 19:20
0 посетителей читают эту тему
0 пользователей, 0 гостей, 0 скрытых



Наверх








