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

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

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2015, 12:10   #1
jamesmcfly
Новичок
Джуниор
 
Регистрация: 16.09.2015
Сообщений: 4
По умолчанию Переписать код с Delphi на C# (Дана действительная квадратная матрица размера n*n...)

Задание было такое. Я на делфи сделал сам а на c# неполучается:
Цитата:
Дана действительная квадратная матрица размера n*n. Получить x1xn + x2xn-1 + ... + xnx1, где xk - наибольшее значение элементов k-го столбца данной матрицы. Размерность матрицы может превышать (100х100).
Мне конечно желательно свой код но если реализовать это не возможно то хотя бы задание и несколько вопросов которые ниже.
Прошу помочь перевести код с delphi в С# а также ответить на несколько моих проблем очень прошу!

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

Если не можете то дайте сайты подсказки о переводе и ответьте на вопросы выше

вот код:

Последний раз редактировалось Stilet; 16.09.2015 в 12:16.
jamesmcfly вне форума Ответить с цитированием
Старый 16.09.2015, 12:12   #2
jamesmcfly
Новичок
Джуниор
 
Регистрация: 16.09.2015
Сообщений: 4
По умолчанию

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Menus, Spin, Grids,comobj;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Button2: TButton;
    StringGrid1: TStringGrid;
    SpinEdit1: TSpinEdit;
    Button1: TButton;
    Label3: TLabel;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    N10: TMenuItem;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    N2: TMenuItem;
    N3: TMenuItem;
    Button3: TButton;
    SaveDialog1: TSaveDialog;
    Memo1: TMemo;
    Memo2: TMemo;
    Memo3: TMemo;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure SpinEdit1Change(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure N8Click(Sender: TObject);
    procedure N10Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject;var key:char);
    procedure N3Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure N9Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Math,Unit8;

{$R *.dfm}
var
   A: array of array of extended;
   MAX: array of extended;
   min:array of integer;
procedure TForm1.Edit1KeyPress(Sender: TObject; var key:char);
begin
if not(key in['0'..'9']) then
key:=#8;
//ограничиваем пользователя от ввода лишнего, давая ему вводить только то
//что нужно при этом в компоненте spinedit1 удаляет цифры если вводишь символы
end;




procedure TForm1.Button1Click(Sender: TObject);
var
   k1, k2, S: extended;
   i,j,n,m:integer;
   str: String;
begin
memo1.Clear;
memo2.Clear;
memo3.Clear;
if StringGrid1.Cells[j,i]='' then
// проверка условия
Button2Click(sender);
SetLength(MAX, SpinEdit1.Value);
//Процедура SetLength изменяет размер строки, одномерного динамического массива
//или многомерного динамического массива
for j := 0 to SpinEdit1.Value-1  do
       // В значение SpinEdit1.value отображается число введённное с клавиатуры
       begin
           MAX[j] := A[1, j];
           for i := 0 to SpinEdit1.Value-1 do
           // Цикл для результата c помощью переменных i и j
             if (A[i, j] > MAX[j]) then
               MAX[j] := A[i, j];
               memo1.lines.add(FloatToStr(max[j]));
               memo1.Lines[0]:=''
         end;
       S := 0;
       n := SpinEdit1.Value - 1;
       i := 1;
       while (i <= n) and (n >= 1) do
         begin
         memo2.Lines.Add(FloatTOStr(max[i]));
           memo3.Lines.Add(FloatTostr(max[n]));
           S := S + MAX[i] * MAX[n];
           i := i + 1;
           n := n - 1;
end;
       Edit1.Text := FloatToStr(S);
       //Вывод результата
end;
procedure TForm1.SpinEdit1Change(Sender: TObject);
var i,j:integer;
//Spinedit1change подстраивает компонент Spinedit1 под программу
begin
try
     StringGrid1.ColCount := SpinEdit1.Value;
     StringGrid1.RowCount := SpinEdit1.Value;
     StringGrid1.FixedCols:=1;
     //Это означает что в компоненте StringGrid1 будет выводиться столько строк
     // и столбцов сколько введено в Spinedit1 с клавиатуры
except
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
   i,j,k: integer;
begin
if SpinEdit1.Text='' then
Spinedit1.Text:=IntToStr(3);
//проверка условия
SetLength(A, SpinEdit1.Value, SpinEdit1.Value);
     for i := 0 to SpinEdit1.Value-1 do
       for j := 0 to SpinEdit1.Value-1 do
       // Цикл для матрицы с помощью переменных i и j
         begin
          A[i, j] := RandomRange(-10, 10);
          //RandomRange Функция. Генерирует произвольное число в пределах
          //введённого  Она обеспечивает более удобную версию функции Random
          //модуля System.
         StringGrid1.Cells[j, i] := FloatToStr(A[i, j]);
         for k := 0 to 5999 do
         StringGrid1.Cells[0,k]:=IntToStr(k+1);
//Вывод матрицы
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var List: TStringList;
  i, j: Integer;
begin
List :=TStringList.Create;
with StringGrid1 do
  for i :=0 to RowCount-1 do
  for j :=0 to ColCount-1 do
    List.Add(Cells[j, i]);
with SaveDialog1 do
    begin
  DefaultExt :='txt';
if not Execute then Exit;
List.SaveToFile(FileName);
//сохранения матрицы
end;

Последний раз редактировалось Stilet; 16.09.2015 в 12:15.
jamesmcfly вне форума Ответить с цитированием
Старый 16.09.2015, 12:12   #3
jamesmcfly
Новичок
Джуниор
 
Регистрация: 16.09.2015
Сообщений: 4
По умолчанию

Код:
List.Free;
saveDialog1.Execute;
saveDialog1.Files.Add(edit1.text);
SaveDialog1.Files.SaveToFile(saveDialog1.FileName+'.txt');
//сохранение результата
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
Form1.Close;
//Закрытие формы
application.Terminate;
//Application.Terminate - отправляет сообщение о закрытии в очередь.
//Т.е форма закроется после обработки всех сообщений. В 99% случае разницы между
//немедленным закрытием и отложенным - нет.
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
Form8.ShowModal;
//Форма в которой ничего нельзя сделать она отоброжается только визуально
end;
procedure TForm1.Button7Click(Sender: TObject);
var wrd:olevariant;
begin
wrd:=Createoleobject('word.application');
wrd.visible:=true;
wrd.documents.open('C:\Мой курсовой проект\Проект\Справка.doc');
//Выводит справку с помощью компонентов comobj
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
ShowMessage('Дана действительная квадратная матрица размера n*n. 
 Получить x1xn + x2xn-1 + ... + xnx1,  где xk - наибольшее значение элементов k-го столбца данной матрицы. 
  Размерность матрицы может превышать (100х100)');
//Сообщение в котором заложен смысл чего-либо
end;
procedure TForm1.N10Click(Sender: TObject);
begin
Button8Click(sender);
end;
procedure TForm1.N3Click(Sender: TObject);
begin
Button5Click(sender);
end;
procedure TForm1.N6Click(Sender: TObject);
begin
Button3Click(sender);
end;
procedure TForm1.N8Click(Sender: TObject);
begin
Button6Click(sender);
end;
procedure TForm1.N9Click(Sender: TObject);
begin
Button7Click(sender);
end;
//Сверху как мы видим есть кнопки главного меню так вот они работают посредством
//обращения к опредленной кнопке а это кнопка делает то что в ней написано
end.

Последний раз редактировалось Stilet; 16.09.2015 в 12:15.
jamesmcfly вне форума Ответить с цитированием
Старый 16.09.2015, 12:17   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

А тебе обязательно приложение с формами?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.09.2015, 12:22   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
а на c# неполучается
Чтобы получилось надо хотя бы попробовать, а вы просите, чтоб кто-то просто сделал за вас.

Вы в Button7, Form8 и N9 не путаетесь? Контролам надо нормальные имена давать.
И не вызывать обработчик клика кнопки самому, а создать процедуру и вызывать ее и в обработчике клика, и в других местах.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 16.09.2015 в 12:24.
Alex11223 вне форума Ответить с цитированием
Старый 17.09.2015, 06:50   #6
jamesmcfly
Новичок
Джуниор
 
Регистрация: 16.09.2015
Сообщений: 4
По умолчанию

лучше конечно с формами но можно чисто код очень прошу помощи
jamesmcfly вне форума Ответить с цитированием
Старый 17.09.2015, 08:10   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Пробуйте делать сами, показывайте код, задавайте конкретные вопросы по нему, а не просите полностью сделать за вас. Если надо полностью и платно, то есть раздел Фриланс http://www.programmersforum.ru/forumdisplay.php?f=29
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 17.09.2015, 08:40   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Дана действительная квадратная матрица размера n*n. Получить x1xn + x2xn-1 + ... + xnx1, где xk - наибольшее значение элементов k-го столбца данной матрицы. Размерность матрицы может превышать (100х100).
Условие не до конца понял, но как понял так и написал:
Код:
 int n=100;
 int[,] a=new int[n+1,n];
 int i,j,s=0; Random r = new Random(1000);
 for(i=0;i<a.GetLength(0)-1;i++){
  for(j=0;j<a.GetLength(1);j++){
   a[i, j] = r.Next()/1000000; Console.Write("{0}\t",a[i, j]);
   if(a[a.GetLength(0)-1,j]<a[i, j]) a[a.GetLength(0)-1,j]=a[i, j];
  }
 }
 for(j=0;j<a.GetLength(1);j++) 
   s+=a[a.GetLength(0)-1,j]*a[a.GetLength(0)-i,a.GetLength(0)- j];
 Console.Write("{0}\t",s);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача на C# (я чайник): Дана действительная квадратная матрица порядка N. Найти сумму элементов... ReKeT15 Помощь студентам 8 14.04.2014 05:50
Действительная квадратная матрица порядка n minimesqa Паскаль, Turbo Pascal, PascalABC.NET 5 12.04.2013 22:56
Дана действительная матрица А размера m x n. dizel9876 Помощь студентам 3 09.09.2011 12:36
Дана действительная квадратная матрица порядка n. Найти наибольшее из значений элементов, расположенных в Хутор Паскаль, Turbo Pascal, PascalABC.NET 2 18.12.2010 12:41
Действительная квадратная матрица Брутальный М. Паскаль, Turbo Pascal, PascalABC.NET 2 30.12.2008 12:42