Dim Matrix(1 ... 10) As Integer [COLOR=green]'может быть я неправильно объявила массив[/COLOR]
Private Sub SortMatrix()
Dim I, J, Temp As Integer
For I = 1 To 9 [COLOR=green]'size array - 1 = 9[/COLOR]
For J = 9 To (I+1) Step (-1)
If Matrix(J) > Matrix(J-1) Then
Temp = Matrix(J)
Matrix(J) = Matrix(J-1)
Matrix(J-1) = Temp
End If
Next J
Next I
Задачи с массивами
1) Переписать в массив А положительные элементы массива В, расположив их в порядке убывания.
2)Для целочисленной матрицы с положительными элементами найти среднегеометрическое каждой четной строки и каждого нечетного столбца. Результат вывести на печать вместе с исходной матрицей справа от соответсвующих строк и снизу соответствующих столбцов.
Я впринципе первую решил но че то не сраслось, а вторую ВООБЩЕ незнаю как решать - мне нужен код програмный и все... ПОЖАЛУЙСТА помогите :confused: :confused: :confused:
а на чём писать собрался?
Procedure Sort(Var arr:array of integer; n:integer);
Var
j,k,m:integer;
Begin
for i:=1 to n do
begin
m:=arr[i-1];
k:=i;
for j:=i to n do
begin
if m<arr[j-1] then
begin
m:=arr[j-1];
k:=j;
end;
end;
arr[k-1]:=arr[i-1];
arr[i-1]:=m;
end;
end;
Procedure Sort(Var arr:array of integer; n:integer);
Var
j,k,m:integer;
Begin
for i:=1 to n do
begin
m:=arr[i-1];
k:=i;
for j:=i to n do
begin
if m<arr[j-1] then
begin
m:=arr[j-1];
k:=j;
end;
end;
arr[k-1]:=arr[i-1];
arr[i-1]:=m;
end;
end;[/QUOTE]
Это для Visual Basic ? Помойму там немного другие операторы .... ну подскажите плиз как задачи сделать ?
А так сделать могу на С++ подойдет?
А так все сделать могу[/QUOTE]Корень n-вой степени из произведения этих n чисел.
Пойдет, попробую потом сам в VB6 перевести! Ради бога помогите с этими задачами !!!
[COLOR=blue]Q1[/COLOR]
[COLOR=red]Пиши в следущий раз язык, а то буду тему закрывать[/COLOR]
Код:
/******************************************************************************/
#include <iostream>
#include <cstdlib>
#include <conio.h>
/******************************************************************************/
const int SIZE = 10;
/******************************************************************************/
using namespace std;
/******************************************************************************/
int* Sort(int *ar, int size)
{
int tmp;
for(int i = 0; i < size; i++)
{
for(int j = 0; j < size; j++)
{
if(ar > ar[j])
{
tmp = ar;
ar = ar[j];
ar[j] = tmp;
}
}
}
return ar;
}
int* CreateArray(int* ar1, int* size)
{
int * ar2 = 0;
int iCount = 0;
*size = 0;
for(int i = 0; i < SIZE; i++)
{
if(ar1 > 0)
{
(*size)++;
ar2 = (int*)realloc(ar2, (*size) * sizeof(int));
ar2[(iCount++)] = ar1;
}
}
return ar2;
}
/******************************************************************************/
int main()
{
int ar1[SIZE];
int size, *ar2;
for(int i = 0; i < SIZE; i++)
{
cout << "ar1[" << i << "] -> "; cin >> ar1;
}
ar2 = CreateArray(ar1, &size);
ar2 = Sort(ar2, size);
for(int i = 0; i < size; i++)
cout << "\nar2[" << i << "] = "<< ar2 << endl;
char cQuit;
while (cQuit != char(27))
{
cout << "\nPress <ESC> to exit...";
cQuit = (char)getche();
}
return 0;
}
#include <iostream>
#include <cstdlib>
#include <conio.h>
/******************************************************************************/
const int SIZE = 10;
/******************************************************************************/
using namespace std;
/******************************************************************************/
int* Sort(int *ar, int size)
{
int tmp;
for(int i = 0; i < size; i++)
{
for(int j = 0; j < size; j++)
{
if(ar > ar[j])
{
tmp = ar;
ar = ar[j];
ar[j] = tmp;
}
}
}
return ar;
}
int* CreateArray(int* ar1, int* size)
{
int * ar2 = 0;
int iCount = 0;
*size = 0;
for(int i = 0; i < SIZE; i++)
{
if(ar1 > 0)
{
(*size)++;
ar2 = (int*)realloc(ar2, (*size) * sizeof(int));
ar2[(iCount++)] = ar1;
}
}
return ar2;
}
/******************************************************************************/
int main()
{
int ar1[SIZE];
int size, *ar2;
for(int i = 0; i < SIZE; i++)
{
cout << "ar1[" << i << "] -> "; cin >> ar1;
}
ar2 = CreateArray(ar1, &size);
ar2 = Sort(ar2, size);
for(int i = 0; i < size; i++)
cout << "\nar2[" << i << "] = "<< ar2 << endl;
char cQuit;
while (cQuit != char(27))
{
cout << "\nPress <ESC> to exit...";
cQuit = (char)getche();
}
return 0;
}
четр не успел...
Незнаю почему но в VB6 код ПОЛНОСТЬЮ отличается .... ничего понять немогу
но допустим первую задачу я тебе на VB написала (смотри мое сообщение на первой странице), а синтаксис VB и Си действительно отличается, и ничего удивительного здесь нет.
Я вам по гроб жизни буду благодарен, пожалуйста можно вторую задачу ??? :o :confused:
ПОЖАЛУЙСТА
постарайся сам что то написать, что могу подскажу.
Вопрос к автору - на ВБ писать - это требование злого препода, или ты его сам лучше знаешь? просто мне кажется, по С++ или с# тебе бы больше народу помогло.
Не вопрос, с преподом договорился - можно и не на VB ! Помогите дорешать задачи
Цитата:
1) Переписать в массив А положительные элементы массива В, расположив их в порядке убывания.
Код:
program Pr2q;
var
A: array [1..16] of Integer;
B: array [1..16] of Integer;
i, j, cntB, ndx: Integer;
begin
// Заполняем массив A случайными элементами
// с диапозона [-100..100]
Randomize;
for i := 1 to 16 do
A := Random(200) - 100;
cntB := 0; // Количество элементов массива B
for i := 1 to 16 do begin
if A > 0 then begin
if cntB = 0 then begin // B пока еще пуст
B[1] := A;
cntB := 1; end
else begin
ndx := 0; // Индекс первого элемента B меньшего от A
for j := 1 to cntB do
if B[j] < A then begin
ndx := j;
Break;
end;
Inc(cntB);
if ndx = 0 then // Текущий A минимальный в B
B[cntB] := A
else begin
// Сдвигаем элементы вправо
for j := cntB downto ndx + 1 do
B[j] := B[j-1];
B[ndx] := A;
end;
end;
end;
end;
// Вывод массива A
WriteLn('Массив A:');
for i := 1 to 16 do
Write(A:4);
WriteLn('');
// Массив B
if cntB = 0 then begin
WriteLn('Массив А не содержит положительных элементов,');
WriteLn('поэтому массив В пуст'); end
else begin
WriteLn('Массив B:');
for i := 1 to cntB do
Write(B:4);
end;
ReadLn;
end.
var
A: array [1..16] of Integer;
B: array [1..16] of Integer;
i, j, cntB, ndx: Integer;
begin
// Заполняем массив A случайными элементами
// с диапозона [-100..100]
Randomize;
for i := 1 to 16 do
A := Random(200) - 100;
cntB := 0; // Количество элементов массива B
for i := 1 to 16 do begin
if A > 0 then begin
if cntB = 0 then begin // B пока еще пуст
B[1] := A;
cntB := 1; end
else begin
ndx := 0; // Индекс первого элемента B меньшего от A
for j := 1 to cntB do
if B[j] < A then begin
ndx := j;
Break;
end;
Inc(cntB);
if ndx = 0 then // Текущий A минимальный в B
B[cntB] := A
else begin
// Сдвигаем элементы вправо
for j := cntB downto ndx + 1 do
B[j] := B[j-1];
B[ndx] := A;
end;
end;
end;
end;
// Вывод массива A
WriteLn('Массив A:');
for i := 1 to 16 do
Write(A:4);
WriteLn('');
// Массив B
if cntB = 0 then begin
WriteLn('Массив А не содержит положительных элементов,');
WriteLn('поэтому массив В пуст'); end
else begin
WriteLn('Массив B:');
for i := 1 to cntB do
Write(B:4);
end;
ReadLn;
end.
Цитата:
2)Для целочисленной матрицы с положительными элементами найти среднегеометрическое каждой четной строки и каждого нечетного столбца. Результат вывести на печать вместе с исходной матрицей справа от соответсвующих строк и снизу соответствующих столбцов.
Код:
program Pr1q;
uses
Math;
var
A: array[1..10, 1..10] of Integer;
avgGeomCols: array[1..5] of double;
avgGeomRows: array[1..5] of double;
i, j, ndx: Integer;
avgC, avgR: double;
begin
// Заполнение матрицы A
Randomize;
for i := 1 to 10 do
for j := 1 to 10 do
A[i, j] := Random(20) + 1;
// Расчет
for ndx := 1 to 5 do begin
avgC := 1.0; // СреднеГеом по столбцам
avgR := 1.0; // СреднеГеом по строкам
for j := 1 to 10 do begin
avgR := avgR * A[2*ndx, j];
avgC := avgC * A[j, 2*ndx-1];
end;
avgGeomRows[ndx] := Power(avgR, 0.1);
avgGeomCols[ndx] := Power(avgC, 0.1);
end;
// Вывод результата
for i := 1 to 10 do begin
for j := 1 to 10 do
Write(A[i, j]:6);
if i mod 2 = 0 then
Write(' ', avgGeomRows[i div 2]:6:3);
WriteLn('');
end;
for i := 1 to 5 do
Write(avgGeomCols:6:3, ' ');
ReadLn;
end.
uses
Math;
var
A: array[1..10, 1..10] of Integer;
avgGeomCols: array[1..5] of double;
avgGeomRows: array[1..5] of double;
i, j, ndx: Integer;
avgC, avgR: double;
begin
// Заполнение матрицы A
Randomize;
for i := 1 to 10 do
for j := 1 to 10 do
A[i, j] := Random(20) + 1;
// Расчет
for ndx := 1 to 5 do begin
avgC := 1.0; // СреднеГеом по столбцам
avgR := 1.0; // СреднеГеом по строкам
for j := 1 to 10 do begin
avgR := avgR * A[2*ndx, j];
avgC := avgC * A[j, 2*ndx-1];
end;
avgGeomRows[ndx] := Power(avgR, 0.1);
avgGeomCols[ndx] := Power(avgC, 0.1);
end;
// Вывод результата
for i := 1 to 10 do begin
for j := 1 to 10 do
Write(A[i, j]:6);
if i mod 2 = 0 then
Write(' ', avgGeomRows[i div 2]:6:3);
WriteLn('');
end;
for i := 1 to 5 do
Write(avgGeomCols:6:3, ' ');
ReadLn;
end.