Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2012, 16:08   #1
Металлистка
Пользователь
 
Аватар для Металлистка
 
Регистрация: 26.05.2012
Сообщений: 26
По умолчанию Двумерный массив в Делфи

Помогите пожалуйста написать программу в Делфи:

Дана целочисленная прямоугольная матрица. Определить количество столбцов, не содержащих ни одного нулевого элемента (оформить в виде функции). Характеристикой строки целочисленной матрицы назовем сумму ее положительных четных элементов. Переставляя строки заданной матрицы, расположить их в соответствии с ростом характеристик (оформить в виде процедуры).
и как вывести преобразованную матрицу в TabSheet подскажите пожалуйста.
Металлистка вне форума Ответить с цитированием
Старый 05.12.2012, 16:29   #2
MihalNik
МегаМодератор
СуперМодератор
 
Регистрация: 27.11.2012
Сообщений: 5,711
По умолчанию

В StringGrid.
StringGrid1.Cells[i, k]
И вот потом приведите полученный код с вводом и/или выводом
Благими намерениями устлана дорога на programmersforum.ru
MihalNik вне форума Ответить с цитированием
Старый 07.12.2012, 20:19   #3
Металлистка
Пользователь
 
Аватар для Металлистка
 
Регистрация: 26.05.2012
Сообщений: 26
По умолчанию Рисование графика в Делфи

Здравствуйте помогите пожалуйста нарисовать график функции y=e^(-x) в Делфи по принципу этого примера графика y=-ln|2sin(x/2)| :

Код:
const k=15; 
var 
 x0,y0:integer;
 dx,dy:integer;
 x,y:integer; 
 xp,yp:real; 
 x1,x2:real; 
 y1,y2:real; 
 lx,ly:byte; 
 dlx,dly:byte;
 st:string; 
 ddx:real; 
 xm,ym:integer;
   begin 
     form1.Repaint;// стирание 
    x0:=form1.ClientWidth div 2; 
    y0:=form1.ClientHeight div 2; 
    dlx:=1; //шаг меток 1,2,3... 
    dly:=1; lx:=0; //подписи засечек 
    ly:=0; with form1.Canvas do begin moveto(x0,y0+y0-3); 
    Lineto(x0,3); //ось X
    moveto(3,y0); //осьY
    Lineto(x0+x0-3,y0);
   font.Color:=clteal; 
   font.Size:=12; 
   TextOut(x0-20,3,'Y');
   TextOut(x0+x0-20,y0+10,'X');
   {стрелочки осей}
   moveto(x0,3);
   Lineto(x0-4,7);
   moveto(x0,3);
   Lineto(x0+4,7);
   moveto(x0+x0-3,y0);
   Lineto(x0+x0-7,y0+4);
   moveto(x0+x0-3,y0);
   Lineto(x0+x0-7,y0-4);
   {вертикальная штриховка, разметка и подпись оси X}
   x:=x0; 
  dx:=form1.ClientWidth div 20 ;
  Str(lx,st); 
  TextOut(x-12,y0+5,st); 
  lx:=lx+dlx;
  x:=x+dx; 
repeat moveto(x,y0-3);
   lineto(x,y0+3);
   Str(lx,st);
   TextOut(x-8,y0+5,st);
   lx:=lx+dlx; 
   pen.Style:=psdot; 
   moveto(x,y0-3); 
   Lineto(x,3);
   pen.Style:=pssolid;
   x:=x+dx;
until (x>x0+x0-10);
 {горизонтальная штриховка, разметка и подпись оси Y}
  y:=y0; 
  dy:=form1.ClientHeight div k ; 
  ly:=ly+dly;
  y:=y-dy;
repeat moveto(x0-3,y);
   lineto(x0+3,y);
   Str(ly,st);
   TextOut(x0-20,y,st);
   ly:=ly+dly;
   pen.Style:=psdot;
   moveto(x0+3,y);
   Lineto(x0+x0-10,y);
   pen.Style:=pssolid;
   y:=y-dy; 
until (y<10);
 {построение графика}
  pen.Color:=$006c00D9;
  x1:=0.05;
  x2:=form1.ClientWidth div k ;
  ddx:=1/20;
  y1:=-ln(abs(2*sin(x1/2)));
  y2:=-ln(abs(2*sin(x1/2)));
  xp:=x1;
repeat yp:=-ln(abs(2*sin(xp/2)));
    if yp<y1 then y1:=yp;
    if yp>y2 then y2:=yp;
    xp:=xp+ddx;
until (xp>=x2);
  xm:=ClientWidth div k;
  ym:=ClientHeight div k;
  xp:=x1;
  moveto(x0,y0);
repeat yp:=-ln(abs(2*sin(xp/2)));
    lineto(x0+Round(xp*xm),y0-Round(yp*ym));
    xp:=xp+ddx;
until (xp>=x2);
  xp:=-x1;
  moveto(x0,y0);
repeat yp:=-ln(abs(2*sin(xp/2)));
    lineto(x0+Round(xp*xm),y0-Round(yp*ym));
    xp:=xp-ddx;
until (xp<=-x2);
  pen.Color:=clblack;
  font.Color:=clteal;
  font.Size:=14;
  font.Style:=[fsitalic];
  textout(20,20,'График функции y = -ln|2sin(x/2)|') ;
  font.Name:='Ms Sans Serif';
  end end;
Изображения
Тип файла: jpg Безымянный.jpg (168.4 Кб, 130 просмотров)

Последний раз редактировалось Металлистка; 07.12.2012 в 20:50.
Металлистка вне форума Ответить с цитированием
Старый 07.12.2012, 20:32   #4
MihalNik
МегаМодератор
СуперМодератор
 
Регистрация: 27.11.2012
Сообщений: 5,711
По умолчанию

Чтобы код был читаем - оформите его тегами - нажмите Правка, выделите текст кода и потом кнопочка '#'
Код:
Строки м/у 
repeat 
  ... 
  и
until - сдвиньте на два пробела
Благими намерениями устлана дорога на programmersforum.ru

Последний раз редактировалось MihalNik; 07.12.2012 в 20:37.
MihalNik вне форума Ответить с цитированием
Старый 07.12.2012, 21:23   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
в Делфи
Раз уж в Делфи то используй его технологии. Вот пример графика:
http://www.programmersforum.ru/showp...3&postcount=13
Только подставь свою формулу.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.12.2012, 12:16   #6
Металлистка
Пользователь
 
Аватар для Металлистка
 
Регистрация: 26.05.2012
Сообщений: 26
По умолчанию

я бы с радостью,но именно тем способом нужно сделать...
Металлистка вне форума Ответить с цитированием
Старый 08.12.2012, 15:44   #7
MihalNik
МегаМодератор
СуперМодератор
 
Регистрация: 27.11.2012
Сообщений: 5,711
По умолчанию

Задается масштаб (координаты уже есть). График вашей функции слева от OY уходит вверх справа - стремится к абсциссе. Находите пересечение с верхней или левой боковой (что вряд ли) границей области окна в соотв. системе координат. А дальше рисуете с каким-то шагом dx до правого края.
Благими намерениями устлана дорога на programmersforum.ru
MihalNik вне форума Ответить с цитированием
Старый 08.12.2012, 19:51   #8
Металлистка
Пользователь
 
Аватар для Металлистка
 
Регистрация: 26.05.2012
Сообщений: 26
По умолчанию

не подскажите как штрихи по Х и У переместить влево и по оси Х цифры тоже влево?
Металлистка вне форума Ответить с цитированием
Старый 08.12.2012, 20:07   #9
MihalNik
МегаМодератор
СуперМодератор
 
Регистрация: 27.11.2012
Сообщений: 5,711
По умолчанию

Скорее всего, они просто слились с пунктирной линией. Там где код штриховки можно чуть сместить границы линий, смотрите параметры moveto, lineto (первый параметр - координата x)
Благими намерениями устлана дорога на programmersforum.ru
MihalNik вне форума Ответить с цитированием
Старый 08.12.2012, 23:18   #10
Металлистка
Пользователь
 
Аватар для Металлистка
 
Регистрация: 26.05.2012
Сообщений: 26
По умолчанию

помогите с рисованием графика функ-ии y=e^(-x) пожалуйста
вот например для у=лн(х) :
Код:
x1:=0.05;
    x2:=form3.ClientWidth div 15 ;
    ddx:=1/20;
    y1:=exp(-x);
    y2:=exp(-x);
    xp:=x1;
    repeat
    yp:=exp(-xp);
    if yp<y1 then y1:=yp;
    if yp>y2 then y2:=yp;
    xp:=xp+ddx;
    until (xp>=x2);
    xm:=ClientWidth div 15;
    ym:=ClientHeight div 15;
    xp:=x1;
    moveto(x0+2,y0+150);
    repeat
    yp:=exp(-xp);
    lineto(x0+Round(xp*xm),y0-Round(yp*ym));
    xp:=xp+ddx;
    until (xp>=x2);
Металлистка вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
двумерный массив делфи VinDiz Помощь студентам 6 19.01.2012 20:49
на зачет решить в делфи двумерный массив. bajge Помощь студентам 9 15.06.2011 10:47
Одномерный массив и Двумерный массив eugene1437 Общие вопросы C/C++ 15 25.05.2011 19:17
Двумерный массив Делфи приехали MrMorozko Помощь студентам 19 18.12.2010 14:21
Двумерный массив, одномерный массив. Branbal Помощь студентам 14 18.11.2009 12:40