Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.11.2012, 00:04
Guneska Guneska вне форума
Прохожий
 
Регистрация: 15.11.2012
Сообщения: 24
Репутация: 10
Печаль Массивы

Ребята, понимаю, что для вас это смешно до слёз, но мне не очень. Сессия на носу, я только перевелась в этот коллежд, и попала (не было мест на другие направления) на программирование, хотя хотела немного на другое направление. В общем, есть три маленьких лабораторных работы по программированию. Если вы мне поможете, то надеюсь с помощью гугла я смогу разобрать в вашем коде каждую буковку, каждую функцию и наконец-то пойму что к чему!
Вот первая лаба: дано: n, a[n]. Найти: S= n-1(это над знаком эпсилон), епсилон, i=0 (это под эпсилон), "a" с индексом i. Надеюсь понятно описала формулу. Стыдно до ужаса, но совершенно не понимаю, ЧТО здесь нужно сделать.
Вторая лаба - дано: n. Получить квадратную матрицу a[n,n]. n=5. Как объяснила преподаватель, чтобы было:
50000
04000
00300
00020
00001
И третья: дано: n,m,p a[n][m], b[m][p] Получить: c=a*b. Преподаватель сказала: для умножения матриц будет три цикла.
Помогите, пожалуйста
Ответить с цитированием
  #2  
Старый 16.11.2012, 05:27
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Guneska
Вот первая лаба: дано: n, a[n]. Найти: S= n-1(это над знаком эпсилон), епсилон, i=0 (это под эпсилон), "a" с индексом i. Надеюсь понятно описала формулу.
Вообще то не очень. Под "эпсилон" здесь имеется ввиду эта буква? Может всё же не эпсилон, а сигма?
Такая формула?:
Цитата:
Сообщение от Guneska
Стыдно до ужаса, но совершенно не понимаю, ЧТО здесь нужно сделать.
Если я правильно понял, то нужно найти сумму элементов массива:
Код:
const
  n = ???;
var
  a: array[0..n - 1] of Integer;
  S, i: Integer;
begin
.....
  S := 0;
  for i := 0 to n - 1 do
  begin
    S := S + a[i];
  end;
.....
end;
Цитата:
Сообщение от Guneska
Вторая лаба - дано: n. Получить квадратную матрицу a[n,n]. n=5. Как объяснила преподаватель, чтобы было:
50000
04000
00300
00020
00001
Ну это тоже простенькая задача:
Код:
const
  n = 5;
var
  a: array[1..n, 1..n] of Integer;
  i, j: Integer;
begin
.....
  for i := 1 to n do
  begin
    for j := 1 to n do
    begin
      if i = j then a[i, j] := n - i + 1 else a[i, j] := 0;
    end;
  end;
.....
end;
Цитата:
Сообщение от Guneska
И третья: дано: n,m,p a[n][m], b[m][p] Получить: c=a*b. Преподаватель сказала: для умножения матриц будет три цикла.
Это я так понимаю Умножение матриц? Здесь я не помню как это делается.
Ответить с цитированием
  #3  
Старый 16.11.2012, 10:43
nixel nixel вне форума
Начинающий
 
Регистрация: 12.12.2011
Адрес: Москва
Сообщения: 150
Версия Delphi: XE2-U4
Репутация: 131
По умолчанию

Вот моя старая реализация умножений матриц на VB. Отрыл в архивах. По идее рабочая, но на всякий случай 1 раз стоит пересчитать на бумажке.

Код:
For p = 1 To mA
  For k = 1 To nB
    For j = 1 To nA
      C(p, k) = C(p, k) + A(p, j) * B(j, k)
    Next j
  Next k
Next p

Ну, поменять имена переменных надо будет. nA - количество строк в матрице А, mA - количество столбцов.
Ответить с цитированием
  #4  
Старый 17.11.2012, 18:26
Guneska Guneska вне форума
Прохожий
 
Регистрация: 15.11.2012
Сообщения: 24
Репутация: 10
По умолчанию

Полисмен, я переписала первую задачу, но Делфи выдаёт ошибку. Простите, я пока ничего толком не понимаю, но разбираться с этим приходится, не сочтите за наглость :стыдно:
Изображения
Тип файла: jpg Безымянный.jpg (91.4 Кбайт, 13 просмотров)
Ответить с цитированием
  #5  
Старый 17.11.2012, 18:33
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Guneska
Полисмен, я переписала первую задачу, но Делфи выдаёт ошибку. Простите, я пока ничего толком не понимаю, но разбираться с этим приходится, не сочтите за наглость :стыдно:
Вместо знаков вопроса нужно указать реальное (численное) значение n (то которое дано в задании).
Ответить с цитированием
  #6  
Старый 17.11.2012, 19:41
Guneska Guneska вне форума
Прохожий
 
Регистрация: 15.11.2012
Сообщения: 24
Репутация: 10
По умолчанию

Цитата:
Сообщение от poli-smen
Вместо знаков вопроса нужно указать реальное (численное) значение n (то которое дано в задании).
Какое бы я число не ставила в значение константы n, получается 0. Это правильно?
По второй задаче не получается вывести матрицу, получается просто число "66"
Изображения
Тип файла: jpg глюк.jpg (83.8 Кбайт, 9 просмотров)

Последний раз редактировалось Guneska, 18.11.2012 в 00:58.
Ответить с цитированием
  #7  
Старый 19.11.2012, 10:17
nixel nixel вне форума
Начинающий
 
Регистрация: 12.12.2011
Адрес: Москва
Сообщения: 150
Версия Delphi: XE2-U4
Репутация: 131
По умолчанию

Цитата:
Сообщение от Guneska
По второй задаче не получается вывести матрицу, получается просто число "66"

поставь write после if'а и writeln после end от цикла по j.

Последний раз редактировалось nixel, 19.11.2012 в 11:02.
Ответить с цитированием
  #8  
Старый 19.11.2012, 10:38
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Guneska
Какое бы я число не ставила в значение константы n, получается 0. Это правильно?
По второй задаче не получается вывести матрицу, получается просто число "66"
Нужно делать как-то так:
Код:
  for i := 1 to n do
  begin
    for j := 1 to n do
    begin
      if i = j then a[i, j] := n - i + 1 else a[i, j] := 0;
      Write(a[i, j]);
    end;
    Writeln;
  end;
Ответить с цитированием
  #9  
Старый 22.11.2012, 16:04
Guneska Guneska вне форума
Прохожий
 
Регистрация: 15.11.2012
Сообщения: 24
Репутация: 10
По умолчанию

такая мелочь, и такое значение имеет! Спасибо, ребята!
Ответить с цитированием
  #10  
Старый 27.11.2012, 15:18
Guneska Guneska вне форума
Прохожий
 
Регистрация: 15.11.2012
Сообщения: 24
Репутация: 10
Печаль

Цитата:
Сообщение от nixel
Вот моя старая реализация умножений матриц на VB. Отрыл в архивах. По идее рабочая, но на всякий случай 1 раз стоит пересчитать на бумажке.

Код:
For p = 1 To mA
  For k = 1 To nB
    For j = 1 To nA
      C(p, k) = C(p, k) + A(p, j) * B(j, k)
    Next j
  Next k
Next p

Ну, поменять имена переменных надо будет. nA - количество строк в матрице А, mA - количество столбцов.

Так как Вы предлаете не получается, видимо я полная идиотка, но разбираться с этим приходится, и я вышла до дакого кода, но почему выводятся только нули и только по нажатию Enter?
program Project2;

Код:
{$APPTYPE CONSOLE}

uses
  SysUtils;
const
n=2;
m=2;
p=2;
var
//Matrica А(n,m)
//Matrica B(m,p)
//Matrica C(n,p)
A : array [1..n, 1..m] of Integer;
B : array [1..m, 1..p] of Integer;
C : array [1..n, 1..p] of Integer;
k,j,v : Integer;
begin
  for k := 1 to n do
begin
  for j := 1 to m do
begin
  for v := 1 to p do
begin
  C[k,j] := A[k,v]*B[v,j];
  write (C[k,j]);
end;
writeln;
readln;
end;
end;
end.

Последний раз редактировалось lmikle, 27.11.2012 в 18:32.
Ответить с цитированием
  #11  
Старый 27.11.2012, 15:55
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

А откуда берутся исходные данные? То есть что именно находится в массивах ДО Вашего умножения?
Ответить с цитированием
  #12  
Старый 27.11.2012, 18:10
robt robt вне форума
Активный
 
Регистрация: 17.02.2011
Сообщения: 297
Репутация: -1806
По умолчанию

Цитата:
Сообщение от icWasya
что именно находится в массивах ДО Вашего умножения?
нули
видимо полная
readln; перед end. должно быть
Ответить с цитированием
  #13  
Старый 27.11.2012, 21:22
Guneska Guneska вне форума
Прохожий
 
Регистрация: 15.11.2012
Сообщения: 24
Репутация: 10
По умолчанию

..........

Последний раз редактировалось Guneska, 27.11.2012 в 22:31.
Ответить с цитированием
  #14  
Старый 27.11.2012, 21:23
Guneska Guneska вне форума
Прохожий
 
Регистрация: 15.11.2012
Сообщения: 24
Репутация: 10
По умолчанию

Цитата:
Сообщение от icWasya
А откуда берутся исходные данные? То есть что именно находится в массивах ДО Вашего умножения?

Условия задачи:
дано: n,m,p ; a[n][m], b[m][p] Получить: c=a*b
Ответить с цитированием
  #15  
Старый 27.11.2012, 22:37
Guneska Guneska вне форума
Прохожий
 
Регистрация: 15.11.2012
Сообщения: 24
Репутация: 10
По умолчанию

Цитата:
Сообщение от robt

видимо полная

Неужели Вы только родились и сразу начали программировать? Гений!

Последний раз редактировалось Guneska, 27.11.2012 в 23:00.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:02.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025