BaPeHbE Опубликовано 5 мая, 2009 Жалоба Поделиться Опубликовано 5 мая, 2009 Задача для турбо Паскаля 7.0: По исходным строкам а$ и b$ вывести слова, входящие в строку a$, но не входящие в строку b$ и наоборот. Вывести их. буду очень благодарен если сможете помочь=) Ссылка на комментарий Поделиться на другие сайты Поделиться
Ф@РТОВЫЙ Опубликовано 6 мая, 2009 Жалоба Поделиться Опубликовано 6 мая, 2009 Построение трех-мерной поверхности, на C# Дано уравнение цилиндрической поверхности: Нужно построить данную поверхность на экране. Я с 3D графикой раньше не работал, и задачка поставила меня в тупик, но решить надо. Сделал функцию которая находит множество корней данного уравнения, ее результаты можно взять из массива this.korni (тип свой: coord размер изначально не задан) Описание типа coord: public struct coord{ float x; float y; float z;} Нужно построить трехмерную модель данной поверхности на экране в стандартном математическом положении осей (x - под углом 45, направлен на смотрящего, y - направлен вправо, z - направлен вверх) нужно учесть, что корни найдены с точностью до тысячных, а также могут быть найдены не все корни Язык для реализации: C# Желательно обойтись библиотеками .net но впринципе можно использовать и DirectX Была идея просто вычислить проекцию поверхности на одну из координатных плоскостей, но пока не пробовал реализовывать, так как есть подозрения, что потеряется видимость объема. Зарание спасибо! Ссылка на комментарий Поделиться на другие сайты Поделиться
koketka15 Опубликовано 6 мая, 2009 Жалоба Поделиться Опубликовано 6 мая, 2009 На Паскале: построение окружности состоящую из заданного числа дуг случайных цветов :) Срочно надо!!!!!! HELP!!!!!! Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 6 мая, 2009 Жалоба Поделиться Опубликовано 6 мая, 2009 BaPeHbE: const t=' '; var c,s:string; a:array[1..2]of string; i,k:integer;beginfor i:=1 to 2 do begin write('string',i:2,' ? '); readln(a[i]); a[i]:=concat(t,a[i],t) end; for i:=1 to 2 do begin writeln; s:=a[i]; while length(s)>1 do begin k:=pos(t,s); c:=copy(s,1,k); if pos(c,a[3-i])=0 then write(c,t); delete(s,1,k) end end;writeln; readlnend. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 6 мая, 2009 Жалоба Поделиться Опубликовано 6 мая, 2009 (изменено) koketka15: uses Graph,CRT;var i,m,GrDriver,GrMode:integer;beginWrite('m ? '); Readln(m); GrDriver:=VGA; GrMode:=VGAHi; InitGraph(GrDriver,GrMode,'\TP\BGI');if GraphResult<>GrOk then begin WriteLn('Graphic driver?'); i:=Ord(ReadKey); Halt end;SetBkColor(White); SetLineStyle(0,0,ThickWidth); Randomize;for i:=1 to m do begin SetColor(Random(14)+1); Arc(320,240,Round(360/m*(i-1)),Round(360/m*i),200) end;i:=Ord(ReadKey)end. Изменено 6 мая, 2009 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
koketka15 Опубликовано 6 мая, 2009 Жалоба Поделиться Опубликовано 6 мая, 2009 в паскале: построить совокупность n окружностей радиуса r,центрыы которых равномерно распределены по окружности радиусом r1/ Ссылка на комментарий Поделиться на другие сайты Поделиться
vovka8888 Опубликовано 6 мая, 2009 Жалоба Поделиться Опубликовано 6 мая, 2009 в паскале: изобразить на экране шахматную доску nxn клеток заданного размера Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 6 мая, 2009 Жалоба Поделиться Опубликовано 6 мая, 2009 (изменено) vovka8888: uses Graph,CRT;var i,j,m,n,k,GrDriver,GrMode:integer;beginWrite('n ? '); Readln(n); Write('Size of the field (0 - automatic)? '); Readln(m); GrDriver:=VGA; GrMode:=VGAHi; InitGraph(GrDriver,GrMode,'\TP\BGI');if GraphResult<>GrOk then begin WriteLn('Graphic driver?'); i:=Ord(ReadKey); Halt end;SetBkColor(LightGray); k:=0; if m=0 then m:=Round(400/(n+1));for i:=1 to n do begin if not Odd(n) then k:=14-k; for j:=1 to n do begin k:=14-k; SetFillStyle(1,k+1); Bar(i*m,j*m,(i+1)*m,(j+1)*m) end end;i:=Ord(ReadKey)end. P.S. Подправил раскраску для досок с нечетным размером доски. Изменено 6 мая, 2009 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
vovka8888 Опубликовано 6 мая, 2009 Жалоба Поделиться Опубликовано 6 мая, 2009 vovka8888: uses Graph,CRT;var i,j,m,n,k,GrDriver,GrMode:integer;beginWrite('n ? '); Readln(n); Write('Size of the field (0 - automatic)? '); Readln(m); GrDriver:=VGA; GrMode:=VGAHi; InitGraph(GrDriver,GrMode,'\TP\BGI');if GraphResult<>GrOk then begin WriteLn('Graphic driver?'); i:=Ord(ReadKey); Halt end;SetBkColor(LightGray); k:=0; if m=0 then m:=Round(400/(n+1));for i:=1 to n do begin k:=14-k; for j:=1 to n do begin k:=14-k; SetFillStyle(1,k+1); Bar(i*m,j*m,(i+1)*m,(j+1)*m) end end;i:=Ord(ReadKey)end. просят чтобы крупнее все было(((можно исправить плиз) Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 6 мая, 2009 Жалоба Поделиться Опубликовано 6 мая, 2009 uses Graph,CRT;var i,j,m,n,k,GrDriver,GrMode:integer;beginWrite('n ? '); Readln(n); Write('Size of the field (0 - automatic)? '); Readln(m); GrDriver:=VGA; GrMode:=VGAHi; InitGraph(GrDriver,GrMode,'\TP\BGI');if GraphResult<>GrOk then begin WriteLn('Graphic driver?'); i:=Ord(ReadKey); Halt end;SetBkColor(LightGray); k:=0; if m=0 then m:=Round(480/n);for i:=1 to n do begin if not Odd(n) then k:=14-k; for j:=1 to n do begin k:=14-k; SetFillStyle(1,k+1); Bar((i-1)*m+50,(j-1)*m,i*m+50,j*m) end end;i:=Ord(ReadKey)end. Сделал рисование от верхнего края экрана. А вообще размер клетки доски и количество клеток по условию задачи задается пользователем, крупнее (хоть километр, правда, дисплей для такого размера еще поискать надо ) или мельче - выбирает он. А автоматический подбор размера клеток - мой бонус. Ссылка на комментарий Поделиться на другие сайты Поделиться
BaPeHbE Опубликовано 6 мая, 2009 Жалоба Поделиться Опубликовано 6 мая, 2009 троль, очень вам благодарен=) мм..а можете еще посмотрель одну задучу про шахматную доску?( турбо паскаль 7.0) Дана шахматная доска 8X8 клеток. С клавиатуры вводим № вертикали и № горизонтали (целые числа). Определить место положения ферзя на доске и показать другим цветом поля, находящеся под угрозой ферзя. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 6 мая, 2009 Жалоба Поделиться Опубликовано 6 мая, 2009 BaPeHbE: Я уже программку рисования шахматной доски парой постов выше привел. Начертить поверх доски поля, бьющиеся ферзем, можно и самому - по образу и подобию... И вообще я срочно разучиваюсь играть в шахматы :dontgetit: uses Graph,CRT;var i,j,m,n,k,x,y,GrDriver,GrMode:integer;beginWrite('n ? '); Readln(n);Write('x ? '); Readln(x); Write('y ? '); Readln(y);GrDriver:=VGA; GrMode:=VGAHi; InitGraph(GrDriver,GrMode,'\TP\BGI');if GraphResult<>GrOk then begin WriteLn('Graphic driver?'); i:=Ord(ReadKey); Halt end;SetBkColor(LightGray); k:=0; m:=Round(400/(n+1));for i:=1 to n do begin if not Odd(n) then k:=14-k; for j:=1 to n do begin k:=14-k; SetFillStyle(1,k+1); Bar(i*m,j*m,(i+1)*m,(j+1)*m) end end;SetFillStyle(1,2);for i:=1 to n do for j:=1 to n do begin if(i=x)or(j=y)or(x+y=i+j)or(x-y=i-j) then Bar(i*m,j*m,(i+1)*m,(j+1)*m) end;SetFillStyle(1,14); Bar(x*m,y*m,(x+1)*m,(y+1)*m); i:=Ord(ReadKey)end. В качестве бонуса - размер доски может быть любым, вводится в начале программы. Если мешает, то заменить ввод n на оператор n:=8; Ссылка на комментарий Поделиться на другие сайты Поделиться
BaPeHbE Опубликовано 6 мая, 2009 Жалоба Поделиться Опубликовано 6 мая, 2009 ..к великому моему сожелению я в данной специфике....полный ноль =( допиши если не сильно сложно.. ну а если сложно...значит такова судьба-злодейка =) Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 6 мая, 2009 Жалоба Поделиться Опубликовано 6 мая, 2009 BaPeHbE: Да..а... А зачеты автоматом ставят за явку на зачет? uses Graph,CRT; var i,j,m,n,k,x,y,GrDriver,GrMode:integer; begin n:=8; Write('x ? '); Readln(x); Write('y ? '); Readln(y); GrDriver:=VGA; GrMode:=VGAHi; InitGraph(GrDriver,GrMode,'\TP\BGI'); if GraphResult<>GrOk then begin WriteLn('Graphic driver?'); i:=Ord(ReadKey); Halt end; SetBkColor(LightGray); k:=0; m:=Round(400/(n+1)); for i:=1 to n do begin if not Odd(n) then k:=14-k; for j:=1 to n do begin k:=14-k; SetFillStyle(1,k+1); Bar(i*m,j*m,(i+1)*m,(j+1)*m) end end; SetFillStyle(1,2); for i:=1 to n do for j:=1 to n do begin if(i=x)or(j=y)or(x+y=i+j)or(x-y=i-j) then Bar(i*m,j*m,(i+1)*m,(j+1)*m) end; SetFillStyle(1,14); Bar(x*m,y*m,(x+1)*m,(y+1)*m); i:=Ord(ReadKey) end. Ссылка на комментарий Поделиться на другие сайты Поделиться
BaPeHbE Опубликовано 6 мая, 2009 Жалоба Поделиться Опубликовано 6 мая, 2009 эх если бы зачет..а то экзамен забабахали..=( а я и правда в этом ничего не шарю...не посоветуешь какую-нидудь литературу что бы подоступнее объяснялось? (извините если не в тему..) Ссылка на комментарий Поделиться на другие сайты Поделиться
AutoGen Опубликовано 7 мая, 2009 Жалоба Поделиться Опубликовано 7 мая, 2009 Народ ищо раз потревожу если не трудно подскажите. вот задача: Получить все размещения из 10 элементов 1, 2,..., 10 по 3 в каждом. Размещением называется выборка из п указанных элементов три неповторяющихся элемента. unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;const Nums = 8; type TForm1 = class(TForm) Button1: TButton;Button2: TButton;Panel1: TPanel;ListBox1: TListBox;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject); private{ Private declarations } public{ Public declarations }Num: array [1..Nums] of integer;procedure PlaceNum(i: integer); end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.PlaceNum(i: integer);var j, x: integer; s: string;begin for j := 1 to Nums do beginNum[i] := j;x := 1; while (x < i) and (Num[x] <> Num[i]) do Inc(x); if x = i then begin if i = Nums then begin s := ''; for x := 1 to Nums do s := s + IntToStr(Num[x]) + ' '; ListBox1.Items.Add(s); end else PlaceNum(i + 1); end end;end;procedure TForm1.Button1Click(Sender: TObject);begin ListBox1.Clear; PlaceNum(1); end;procedure TForm1.Button2Click(Sender: TObject);begin Close();end;end. но у меня получается все ПЕРЕСТАНОВКИ из 8 чисел....а надо как в задаче...в условии.... Ссылка на комментарий Поделиться на другие сайты Поделиться
Ф@РТОВЫЙ Опубликовано 7 мая, 2009 Жалоба Поделиться Опубликовано 7 мая, 2009 (изменено) AutoGen: попробуйте заменить const Nums = 8; на const Nums = 10; Изменено 7 мая, 2009 пользователем Лорд Дмитрий Ссылка на комментарий Поделиться на другие сайты Поделиться
AutoGen Опубликовано 9 мая, 2009 Жалоба Поделиться Опубликовано 9 мая, 2009 AutoGen: попробуйте заменить const Nums = 8; на const Nums = 10; Да нет...я плохо описал смысл задачи....... у меня получается 1.2.3.4.5.6.7.8 потом 1.2.3.4.5.6.8.7 и так далее пока не будут выведены ВСЕ возможные варианты из 8 чисел. а по условию надо чтобы из 10 чисел были показаны все размещения из 3 элементов......т.е. массив 10 элементов, а в мемо рекурсивно выводятся например 1.2.3. потом 2.3.4. потом 3.4.5 потом 4.5.6 и так далее пока есть варианты размещений, пожалуйста поправте. И исче как прикреплять файлы я исходники кинул бы. Ссылка на комментарий Поделиться на другие сайты Поделиться
AutoGen Опубликовано 9 мая, 2009 Жалоба Поделиться Опубликовано 9 мая, 2009 Да нет...я плохо описал смысл задачи....... у меня получается 1.2.3.4.5.6.7.8 потом 1.2.3.4.5.6.8.7 и так далее пока не будут выведены ВСЕ возможные варианты из 8 чисел. а по условию надо чтобы из 10 чисел были показаны все размещения из 3 элементов......т.е. массив 10 элементов, а в мемо рекурсивно выводятся например 1.2.3. потом 2.3.4. потом 3.4.5 потом 4.5.6 и так далее пока есть варианты размещений, пожалуйста поправте. И исче как прикреплять файлы я исходники кинул бы. http://slil.ru/27521923 вот залил. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 9 мая, 2009 Жалоба Поделиться Опубликовано 9 мая, 2009 (изменено) AutoGen: Не надо изобретать велосипед, есть готовые библиотеки математических алгоритмов и исходников, реализующих эти алгоритмы. Вот слегка адаптированный под твою задачу алгоритм нахожения размещений, с тестовой программой const na=10; a:string[na]='1234567890';type ba=array[1..na]of byte;var b:ba; n,m,i,j,k:byte; procedure Output(var b:ba);begin for i:=1 to m do write(a[b[i]]:2); writeln end;procedure Perm(b:ba; n:byte);var i,k,j,x:byte;begin Output(b); repeati:=n; while(i>0)and(b[i]>=b[i+1])do dec(i); if i=0 then exit;for j:=i+1 to n do if b[j]>b[i] then k:=j;x:=b[i]; b[i]:=b[k]; b[k]:=x;for j:=i+1 to i+(n+1-i)div 2 do begin x:=b[j]; b[j]:=b[n+i+1-j]; b[n+i+1-j]:=x end;Output(b); until falseend;begin n:=na; m:=3; for i:=1 to m do b[i]:=i; Perm(b,m); repeati:=m; while(i>0)and(b[i]=n-m+i)do dec(i);if i=0 then begin readln; exit end;inc(b[i]); for j:=i+1 to m do b[j]:=b[j-1]+1; Perm(b,m); until falseend. Для ясности печати тут вместо 10 выводится цифра 0, чтобы все элементы занимали по одной позиции, можно прямо при выводе в процедуре Output заменять 0 на 10, если это надо. Delphi у меня не установлен, поэтому всё в консоли. P.S. Слегка изменил - оптимизировал. Изменено 9 мая, 2009 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
AutoGen Опубликовано 10 мая, 2009 Жалоба Поделиться Опубликовано 10 мая, 2009 Спасибо. А можно узнать где эти готовые алгоритмы можно посмотреть)))) на будущее))) Ссылка на комментарий Поделиться на другие сайты Поделиться
ketrin Опубликовано 10 мая, 2009 Жалоба Поделиться Опубликовано 10 мая, 2009 Помогите решить лабороторную на С++, я его практически незнаю, время поджимает 1.1)Сформировать одномерный массив целых чисел, используя датчик случайных чисел. 2)Распечатать полученный массив. 3)Удалить все элементы равные 0. 4)Добавить после первого четного элемента массива элемент со значением M[ I-1 ]+2. 5)Распечатать полученный массив. При выполнении работы используются статические массивы. Для организации статических массивов с псевдопеременными границами необходимо объявить массив достаточно большой длины, например, 100 элементов: int N=100; int a[N]; Затем пользователь вводит реальную длину массива (не больше N) и работает с массивом той длины, которую он сам указал. Остальные элементы (хотя память под них и будет выделена) не рассматриваются. 2) При уменьшении или увеличении длины массива необходимо изменять его реальную длину. 2. Написать процедуру для суммирования матриц. С ее помощью сложить исходную матрицу и транспонированную (т. е. полученную поворотом исходной на 90 ). Используя функции, решить указанную в варианте задачу. Массив должен передаваться в функцию как параметр. 3. Напечатать все слова, которые не содержат гласных букв. Задана строка, состоящая из символов. Символы объединяются в слова. Слова друг от друга отделяются одним или несколькими пробелами. В конце текста ставится точка. Текст содержит не более 255 символов. Выполнить ввод строки, используя функцию Gets(s) и обработку строки в соответствии со своим вариантом. 4. Написать перегруженные функции и основную программу, которая их вызывает. a) для умножения целых чисел; б) для умножения комплексных чисел. 5. Используя функции с переменным числом параметров. 6. Написать функцию sum с переменным числом параметров, которая находит сумму чисел типа int по формуле: S=a1*a2+a2*a3+a3*a4+. . . . . Написать вызывающую функцию main, которая обращается к функции sum не менее трех раз с количеством параметров 5, 10, 12 7. Сформировать двоичный файл из элементов, заданной в варианте структуры, распечатать его содержимое, выполнить удаление и добавление элементов в соответствии со своим вариантом, используя для поиска удаляемых или добавляемых элементов функцию. Формирование, печать, добавление и удаление элементов оформить в виде функций. Предусмотреть сообщения об ошибках при открытии файла и выполнении операций ввода/вывода. 1. Структура "Государство": - название; - столица; - численность населения; - занимаемая площадь. Удалить все элементы, у которых численность меньше заданной, добавить элемент после элемента с указанным номером. 8. Создать текстовый файл F1 не менее, чем из 10 строк и записать в него информацию. Выполнить задание. Скопировать в файл F2 только те строки из F1, которые начинаются и заканчиваются на одну и ту же букву. Подсчитать количество символов в F2. 9. Написать программу, в которой создаются динамические массивы и выполнить их обработку в соответствии со своим вариантом. 1. Ввести размер массива; 2.Сформировать массив с помощью операции new или библиотечных функций malloc (calloc); 3.Заполнить массив (можно с помощью датчика случайных чисел); 4.Выполнить задание варианта, сформировать новый массив(ы)-результат(ы); 5.Напечатать массив(ы)-результат(ы); 6.Удалить динамические массивы с помощью операции delete или библиотечной функции free. Сформировать одномерный массив. Удалить из него К элементов, начиная с заданного номера, добавить элемент с заданным ключом; 10. Написать функцию для создания списка. Функция может создавать пустой список, а затем добавлять в него элементы. Написать функцию для печати списка. Функция должна предусматривать вывод сообщения, если список пустой. Написать функции для удаления и добавления элементов списка в соответствии со своим вариантом. Выполнить изменения в списке и печать списка после каждого изменения. Написать функцию для записи списка в файл. Написать функцию для уничтожения списка. Записать список в файл, уничтожить его и выполнить печать (при печати должно быть выдано сообщение "Список пустой"). Написать функцию для восстановления списка из файла. Восстановить список и распечатать его. Уничтожить список. - Записи в линейном списке содержат ключевое поле типа int. Сформировать однонаправленный список. Удалить из него К элементов, начиная с заданного номера, добавить элемент перед элементом с заданным ключом; Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 10 мая, 2009 Жалоба Поделиться Опубликовано 10 мая, 2009 AutoGen: А можно узнать где эти готовые алгоритмы можно посмотреть)))) на будущее)))Это почти то же, что спросить, где найти учебник или справочник по формулам математики. По сути, алгоритмика - область математики. Таких книжек и сайтов не перечесть. Классикой считается трехтомник Дональда Кнута "Искусство программирования", если брать русскоязычных авторов, могу назвать еще, скажем, Станислава Окулова "Программирование в алгоритмах" или Михаила Долинского "Алгоритмизация и программирование на Turbo Pascal", из сайтов - ну, например, algolist.manual.ru Часто можно найти разные варианты алгоритмов. Например, если использовать рекурсию и множества, алгоритм решения твоей задачи можно укоротить до const na=10; var b:array[1..na]of byte; n,m:byte; s:set of 1..na;procedure Perm(t:byte);var i,j:byte;begin for i:=1 to n doif not(i in s) then begin s:=s+[i]; b[t]:=i; if t<m then Perm(t+1) else begin for j:=1 to m do write(b[j]-1:2); writeln end; s:=s-[i] endend;begin n:=na; m:=3; s:=[]; Perm(1); readln end. Вообще стандартные алгоритмы, как и, скажем, формулы тригонометрии или комбинаторики, надо стараться брать готовые. ketrin: Тут всё же не вычислительный центр, если что-то не получается, это одно, а приводить задачи десятками потому что не нашлось времени самому за них сесть - это другое. Времени нехватает у всех. Ссылка на комментарий Поделиться на другие сайты Поделиться
AutoGen Опубликовано 10 мая, 2009 Жалоба Поделиться Опубликовано 10 мая, 2009 Спасибо Троль, будем ответственней:1eye: прост конец года и моск реально не фурычит хочетца спать и речку..... Ссылка на комментарий Поделиться на другие сайты Поделиться
AutoGen Опубликовано 10 мая, 2009 Жалоба Поделиться Опубликовано 10 мая, 2009 Троль, посмари плиз че я не прально сделал..... ну плиииз. :1eye: :) :) unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;const Na = 10; //a:string[na]='1234567890'; type TForm1 = class(TForm) Button1: TButton;Button2: TButton;Panel1: TPanel;ListBox1: TListBox;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject); private{ Private declarations } public{ Public declarations }procedure Perm(t:byte); end;var Form1: TForm1; b:array[1..na]of byte; n,m:byte; s:set of 1..na;implementation{$R *.dfm}procedure Perm(t:byte);var i,j:byte;begin for i:=1 to n doif not(i in s) then begin s:=s+[i]; b[t]:=i; if t<m then Perm(t+1) else begin for j:=1 to m do s:=s-[i]; ListBox1.Items.Add(b[j]-1:2); end ;end;procedure TForm1.Button1Click(Sender: TObject);begin ListBox1.Clear;n:=na;m:=3;s:=[];perm(1);end;procedure TForm1.Button2Click(Sender: TObject);begin Close();end;end. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти