Тогда это скорее задача по математике, а не по программированию )Собственно, брутом я и предлагал. Но ресурсов и правда пожрётся нехило. Может, всё-таки сделать надо в голове, а накодить простым выводом матрицы, как Андариэль сделала?Тогда уж брутфорс, однако проверка пятизначного числа на простоту задача довольно ресурсоёмкая
Программирование
#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
3 посетителей читают эту тему
0 пользователей, 3 гостей, 0 скрытых