Помощь с лабами |
Здравствуйте, гость ( Вход | Регистрация )
Помощь с лабами |
8.05.2009 - 00:55
Вставить ник | Быстрая цитата | Сообщение
#381
|
|
Это вам не это... Группа: Участник Сообщений: 4018 Регистрация: 17.03.2004 Пользователь №: 2796 |
А одномерные массивы не очень.я на словах понимаю немного,а как в программу вбить не очень понимаю.можешь мне этот кусок кода написать если не сложно. Код printf("Matrix C:\n"); int element[2]; //Временная матрица для сравнения элементов int C[6]; //Матрица для сбора максимальных элементов столбцов for(j=0;j<7;j++) { element[0]=A[0,j]; //Первый элемент и его координатa element[1]=0; for(i=1;i<4;i++) { if (element[0]<A[i,j]) //Если первый элемент меньше следующего { element[0]=A[i,j]; //Больший элемент и его координаты element[1]=i; } printf("%.1f\t", b[i][j]); } c[j]=A[element[1],j] printf("%d\t",c[j]); } printf("\n"); Для D всё так же. 1 задание См. выше KuT разобрался: http://forum.netall.ru/index.php?s=&sh...t&p=1935992Дано натуральное число, в котором все числа различны. Определить порядковый номер его минимальной цифры, считая номера от конца числа 2 задание Как-то так: Фирма имеет 3 магазина. Известен доход каждого магазина за каж-дый из 10 дней. Определить какой из магазинов получил максималь-ный общий доход за 10 дней, в какой каждая из дней фирма получила максимальный доход. Код printf("Магазин:\n"); int element[2]; int element0[3]; //Временная матрица для сравнения элементов int element1[10]; //Временная матрица для сравнения элементов int A[3,10]; //Матрица доходов в каждом магазине за каждый день for(i=0;i<3;i++) { for(j=1;j<10;j++) { element0[i]=element0[i]+A[i,j]; } printf("Сумма кажд. маг.: %d\n",element0[i]); } element[0]=element0[0]; element[1]=0 for(i=1;i<3;i++) { if (element[0]<element0[i]) //Если первый элемент меньше следующего { element[0]=element0[i]; //Меньший элемент и его координаты element[1]=i; } } printf("Макс. прибыль за 10 дн. у маг.N %d\n", element[1]+1); for(i=0;i<10;i++) { for(j=1;j<3;j++) { element1[i]=element1[i]+A[i,j]; } printf("Сумма кажд. дня: %d\n",element1[i]); } element[0]=element1[0]; element[1]=0 for(i=1;i<10;i++) { if (element[0]<element1[i]) //Если первый элемент меньше следующего { element[0]=element1[i]; //Меньший элемент и его координаты element[1]=i; } } printf("Макс. прибыль в день N %d\n", element[1]+1); AsmaDey цена: 4 литра сока на волейбольную площадку корп.1106. 3 задание Для передставления: B[x][y][z]. Подсчёт 6 периметров для проскостей в координатах XY Есть трехмерная матрица B[8][8][6].Найти максимальный периметр в этой матрице. Код int element[2]; Сравнить с суммой периметров других плоскостей.
int PeremSumma[6]; for(z=0;z<6;z++) { for(x=0;x<8;x++) { for(y=0;y<8;y++) { if ((x=0||x=7)||(y=0||y=7)) { PeremSumma[z]=PeremSumma[z]+B[x][y][z] } } } } element[0]=element0[0]; element[1]=0 for(z=1;z<6;z++) { if (element[0]<PeremSumma[z]) //Если первый элемент меньше следующего { element[0]=PeremSumma[z]; //Меньший элемент и его координаты element[1]=i; } } printf("Макс. сумма по периметру в проскости XY под N %d\n", element[1]+1); |
|
|
16.05.2009 - 21:51
Вставить ник | Быстрая цитата | Сообщение
#382
|
|
Новичок Группа: Участник Сообщений: 7 Регистрация: 4.05.2009 Пользователь №: 26293 |
[quote name='Holsten' date='8.05.2009 - 01:55' post='1936759']
Код printf("Matrix C:\n"); int element[2]; //Временная матрица для сравнения элементов int C[6]; //Матрица для сбора максимальных элементов столбцов for(j=0;j<7;j++) { element[0]=A[0,j]; //Первый элемент и его координатa element[1]=0; for(i=1;i<4;i++) { if (element[0]<A[i,j]) //Если первый элемент меньше следующего { element[0]=A[i,j]; //Больший элемент и его координаты element[1]=i; } printf("%.1f\t", b[i][j]); } c[j]=A[element[1],j] printf("%d\t",c[j]); } printf("\n"); Для D всё так же. Извините пожалуйста.только сегодня узнала,что всю мою лабу нужно было сделать с помощью функций.скажите пожалуйста где,что и как надо заменить. |
|
|
17.05.2009 - 00:12
Вставить ник | Быстрая цитата | Сообщение
#383
|
|
Это вам не это... Группа: Участник Сообщений: 4018 Регистрация: 17.03.2004 Пользователь №: 2796 |
Извините пожалуйста.только сегодня узнала,что всю мою лабу нужно было сделать с помощью функций.скажите пожалуйста где,что и как надо заменить. Как-то так для заполнения матриц:Код void main() { int c[3][7], d[3][7] c = newMatrix ('C') d = newMatrix ('D') } function newMatrix (char charNameMatrix) { int editMatrix[3][7] int i=0, j=0; srand( (unsigned)time( NULL ) ); printf("Matrix %s:\n", nameMatrix); for(i=0;i<7;i++) { for(j=0;j<3;j++) { editMatrix[i][j]=rand()%100; printf("%.1f\t", editMatrix[i][j]); } printf("\n"); } return editMatrix; } Тоже самое делается и для других блоков программы, которые делают одни и те же операции, например, для разных матриц. |
|
|
17.05.2009 - 11:52
Вставить ник | Быстрая цитата | Сообщение
#384
|
|
Частый гость Группа: Участник Сообщений: 296 Регистрация: 15.04.2005 Пользователь №: 7496 |
Помогите с Pascal. Надо решить 2 задачи, а я толком мало чего знаю по паскалю.... Пожалуйсто помогите!
Integer С начало суток прошло N секунд (N - целое). Найти количество секунд, прошедших с начала последней секунды. For Дано целое число N (>0). Используя один цикл. Найти сумму 1+1/(1!)+1/(2!)+1/(3!)+...1/(N!) Сообщение отредактировано KuT - 17.05.2009 - 20:58 |
|
|
18.05.2009 - 19:34
Вставить ник | Быстрая цитата | Сообщение
#385
|
|
Продвинутый новичок Группа: Участник Сообщений: 62 Регистрация: 14.02.2007 Пользователь №: 19081 |
Помогите с Pascal. Надо решить 2 задачи, а я толком мало чего знаю по паскалю.... Пожалуйсто помогите! Integer С начало суток прошло N секунд (N - целое). Найти количество секунд, прошедших с начала последней секунды. For Дано целое число N (>0). Используя один цикл. Найти сумму 1+1/(1!)+1/(2!)+1/(3!)+...1/(N!) Вот 2 задача, первой задачи я чуть условие не понял... For Дано целое число N (>0). Используя один цикл. Найти сумму 1+1/(1!)+1/(2!)+1/(3!)+...1/(N!) Код program pomow;
var n,i,buff:integer; rezz:real; function fact_f(a, b:integer):longint; var rez:longint; i:integer; begin rez:=1; for i:=a to b do rez:=rez*i; fact_f:=rez; end; begin rezz:=1; writeln('Введите n'); readln(n); for i:=1 to n do begin buff:=fact_f(1,i); rezz:=rezz+(1/buff); end; writeln('Ответ = ',rezz:8:5); end. |
|
|
18.05.2009 - 22:29
Вставить ник | Быстрая цитата | Сообщение
#386
|
|
Частый гость Группа: Участник Сообщений: 296 Регистрация: 15.04.2005 Пользователь №: 7496 |
2Reaiden - Огромное человеческое спасибо!
Меня попросил друг помочь с лабой тоже по Паскалю, ну точней задать тут вопрос (он не может зарегится на форуме), хелп плз!! For Дано вещественное число А или целое цисло N(>0). Используя один цикл, Найти значения выражения 1+A+A2+A3+...+(-1)N-AN Case Дано целое число в диапозоне 100-999. Вывести строку описания данного числа. Напиример 256 "двести пятьдесят шесть". Boolean Проверить истинность высказывания "Среди 3-ех данных целых чисел есть хотябы одна пара совпадающих" Сообщение отредактировано KuT - 18.05.2009 - 22:42 |
|
|
20.05.2009 - 05:56
Вставить ник | Быстрая цитата | Сообщение
#387
|
|
Продвинутый новичок Группа: Участник Сообщений: 62 Регистрация: 14.02.2007 Пользователь №: 19081 |
Boolean
Сделал как понял Код program Boolean; var a,b,c:integer; begin writeln('Введите 3 числа'); readln(a,b,c); if (a=b) or (a=c) or (b=c) then writeln('Среди 3-ех данных целых чисел есть хотя бы одна пара совпадающих = true') else writeln('Среди 3-ех данных целых чисел есть хотя бы одна пара совпадающих = false'); end. For Дано вещественное число А или целое цисло N(>0). Используя один цикл, Найти значения выражения 1+A+A2+A3+...+(-1)N-AN 1+A+A2+A3+...+(-1)N-AN - это как? Что означает A2,A3 ,типо А*2,А*3 или как? И сразу насчет этого (-1)N-AN. Объяснишь сделаю... |
|
|
23.05.2009 - 21:23
Вставить ник | Быстрая цитата | Сообщение
#388
|
|
Постоялец форума Группа: Участник Сообщений: 811 Регистрация: 6.05.2005 Пользователь №: 7929 |
Парни, помогите пожалуйста!
с бейсиком совсем туго. работал тока с делфи и лабвью. повозился и понял что одному мне точно не справиться. вот задача 3123123123.JPG ( 49.48 килобайт ) Кол-во скачиваний: 0 сама таблица ]]>http://zalil.ru/upload/27685978]]> сдавать уже скоро надо, а с программированием вот такая вот беда. Помогите!:) |
|
|
31.05.2009 - 19:28
Вставить ник | Быстрая цитата | Сообщение
#389
|
|
Частый гость Группа: Участник Сообщений: 296 Регистрация: 15.04.2005 Пользователь №: 7496 |
2Reiden - Огромное спасибо!
Помогите с С++. Задача: Есть трехмерная матрица B[8][8][6].Найти максимальный периметр в этой матрице. Код: int element[2]; int PeremSumma[6]; int z, x, y, i, B; for(z=0;z<6;z++) { for(x=0;x<8;x++) { for(y=0;y<8;y++) { if((x==0||x==7)||(y==0||y==7)) { PeremSumma[z]=PeremSumma[z]+B[x][y][z]; } } } } element[0]=element[0]; element[1]=0; for(z=1;z<6;z++); { if (element[0]<PeremSumma[z]) { element[0]=PeremSumma[z]; element[1]=i; } } printf("Max. summa po perimetru v ploskosti XY pod N %d\n", element[1]+1); return 0; } Она выдает следующие ошибк: Z:\Lab1_v1\Lab1_v1.cpp(265) : error C2109: subscript requires array or pointer type Z:\Lab1_v1\Lab1_v1.cpp(265) : error C2109: subscript requires array or pointer type Z:\Lab1_v1\Lab1_v1.cpp(265) : error C2109: subscript requires array or pointer type Error executing cl.exe. Lab1_v1.exe - 3 error(s), 0 warning(s) Сообщение отредактировано KuT - 31.05.2009 - 19:28 |
|
|
31.05.2009 - 21:43
Вставить ник | Быстрая цитата | Сообщение
#390
|
|
Это вам не это... Группа: Участник Сообщений: 4018 Регистрация: 17.03.2004 Пользователь №: 2796 |
Она выдает следующие ошибк: Не мудрено. Как объявлена переменная "B":Z:\Lab1_v1\Lab1_v1.cpp(265) : error C2109: subscript requires array or pointer type int z, x, y, i, B; И почему после такого объявления обращение к этой переменной идёт как к массиву:PeremSumma[z]=PeremSumma[z]+B[x][y][z];
|
|
|
22.09.2009 - 14:02
Вставить ник | Быстрая цитата | Сообщение
#391
|
|
Частый гость Группа: Участник Сообщений: 293 Регистрация: 27.09.2005 Пользователь №: 9901 |
Товарищи, помогите с заданием.
Динамические структуры. C++ В составе программы описать функцию, которая включает в упорядоченный по убыванию список новое значение, введенное с клавиатуры, таким образом, чтобы не нарушать упорядоченность. Заранее огромное спасибо. Сообщение отредактировано pokemonych - 22.09.2009 - 14:14 |
|
|
24.09.2009 - 15:48
Вставить ник | Быстрая цитата | Сообщение
#392
|
|
Любознательный Группа: Участник Сообщений: 1724 Регистрация: 7.04.2005 Пользователь №: 7382 |
Ищу помощи в написании на Delphi вот этого задания:
Задать значения вещественным элементам матриц F={fij | i=1,2,3,4; j=1,2,3} и T={tkl | k=1,2; l=1,2,…,5} и для каждой из матриц опpеделить количество положительных, отpицательных и нулевых элементов Сообщение отредактировано Mystmuse - 24.09.2009 - 15:48 |
|
|
24.09.2009 - 16:55
Вставить ник | Быстрая цитата | Сообщение
#393
|
|
Это вам не это... Группа: Участник Сообщений: 4018 Регистрация: 17.03.2004 Пользователь №: 2796 |
Ищу помощи в написании на Delphi вот этого задания: Возможно для вас это будет ново, но это будет примерно тоже самое, что например это: http://forum.netall.ru/index.php?s=&sh...t&p=1939862Для того, чтобы посчитать количество положительных элементов соответсвенно: Код int PologitelnCount; int NolevieCount; int OtricatelnCount; PologitelnCount=0; for(i=0;i<7;i++) { for(j=0;j<3;j++) { if matrix(i,j)>0 then PologitelnCount=PologitelnCount+1 if matrix(i,j)>0 then NolevieCount=NolevieCount+1 if matrix(i,j)>0 then OtricatelnCount=OtricatelnCount+1 } } ... //Тут выводим результат подсчёта в переменной ОбъктLaibel1.Text=PologitelnCount; ОбъктLaibel2.Text=NolevieCount; ОбъктLaibel3.Text=OtricatelnCount; Только в свой синтаксис вписать, который обычно прилагается к выполняемым лабораторным работам и подробным описание, что же вам делать для выполнения задания. Удачи! Сообщение отредактировано Holsten - 24.09.2009 - 17:02 |
|
|
25.09.2009 - 17:19
Вставить ник | Быстрая цитата | Сообщение
#394
|
|
Это вам не это... Группа: Участник Сообщений: 4018 Регистрация: 17.03.2004 Пользователь №: 2796 |
readln F[i,j]; {Хочу чтобы вывел на экран типа Вы хотите печатать, говоря программе ЧИТАЙ, вот вас машина и не понимает.F=(элементы матрицы), а он не понимает что такое F} А вообще для печати у вас введена процедура: WriteMatrix, задаёте все параметры и всё само само печатается согласно алгоритму заложенному в эту процедуру. Если же всё же хочется напечатать по отдельности, то необходимо: Код writeln(Name); {или} write ( Massiv [(i-1) * M + j] : w : d ); Что за названия Char, String и прочая лабуда.. Тип данных заложенных в переменную или константу. Например, Char - это символ занимает в памяти 8бит. String - некий набор символов. и т.п.Код TMatrixF = Array [SizeF,1..M] of Real; {???} - тут объявляется двумерный массив Код Procedure ReadMatrix {---Ввод матрицы T---} см. пример из лабораторной, это значения которые нужно задать для вызова этой процедуры, например: (Name : String; {???} Var T : TMatrixT ); {Введенная матрица T} Var i : SizeT; {???} j : 1..D; {???} Код ReadMatrix ('A', A, i , j);
|
|
|
26.09.2009 - 23:27
Вставить ник | Быстрая цитата | Сообщение
#395
|
|
Любознательный Группа: Участник Сообщений: 1724 Регистрация: 7.04.2005 Пользователь №: 7382 |
Итак, вот кажется оно. Прошу проверить её еще раз, несмотря на то, что компилятор не жалуется и хочу спросить: а как мне увидеть то что там делается?? Я хочу сам вбить матрицы и пуст ищет эти элементы. P.S. не запихнул поиск всех элементов в 1 цикл, так как преподу видите-ли это не нравится. Хоть в задании и написаны разноразмерные матрицы, их принимаем за одноразмерные и пихаем в константу. Вопрос, а тут я написал вообще 2 матрицы или 1???
CODE {Прграмма находит колличество положительных, отрицательных и нулевых элементов}
Program Variant10; {$APPTYPE CONSOLE} uses SysUtils; Const n = 4; m = 3; Type TMatrix = Array [1..n,1..m] of Real; Procedure ReadMatr (Var Matr:TMatrix); Var i,j : integer; Begin for i:=1 to n do for j:=1 to m do Begin write (' [',i,',',j,']='); readln ( Matr[i,j] ); end; end; Procedure WriteMatr (Matr:TMatrix); Var i,j : integer; Begin for i:=1 to n do for j:=1 to m do write ( Matr[i,j] ); writeln; end; Function OtricatEements (Matr:TMatrix) : integer; Var kol: integer; i,j: integer; Begin kol:=0; for i:=1 to n do for j:=1 to m do if (Matr[i,j]<0) then kol:= kol+1; result:= kol; end; Function PolojitEements (Matr:TMatrix) : integer; Var kol: integer; i,j: integer; Begin kol:=0; for i:=1 to n do for j:=1 to m do if (Matr[i,j]>0) then kol:= kol+1; result:= kol; end; Function NulevEements (Matr:TMatrix) : integer; Var kol: integer; i,j: integer; Begin kol:=0; for i:=1 to n do for j:=1 to m do if (Matr[i,j]=0) then kol:= kol+1; result:= kol; end; end. Сообщение отредактировано Mystmuse - 26.09.2009 - 23:45 |
|
|
27.09.2009 - 15:41
Вставить ник | Быстрая цитата | Сообщение
#396
|
|
Продвинутый новичок Группа: Участник Сообщений: 59 Регистрация: 15.07.2008 Пользователь №: 23225 |
а как мне увидеть то что там делается?? Увидеть - в смысле результат? Вывести на экран. Или если увидеть, как изменяются значения в процессе выполнения - для этого там есть отладчик. Ну, Вы объявили и описали процедуры и функции, но Вы ни одной матрицы там не ввели. Попробовала так. CODE unit Unit1; {$APPTYPE CONSOLE} interface implementation Type TMatr = array of array of real; Var matr34, matr25: TMatr; m, n, p, o, nul: integer; Procedure ReadM(Var matr: Tmatr); Var i, j: integer; begin for i:=0 to n-1 do begin for j:=0 to m-1 do begin write('m[',i+1,',',j+1,']='); read(matr[i,j]); end; writeln; end; end; Procedure WriteM(Var Matr: Tmatr); Var i, j: integer; begin for i:=0 to n-1 do begin for j:=0 to m-1 do begin write(matr[i,j]:4:2,' '); end; writeln; end; end; Function Pologit(Var Matr: Tmatr): integer; Var i,j, k: integer; begin k:=0; for i:=0 to n-1 do for j:=0 to m-1 do if matr[i,j]>0 then k:=k+1; result:=k; end; Function Otric(Var Matr: Tmatr): integer; Var i,j, k: integer; begin k:=0; for i:=0 to n-1 do for j:=0 to m-1 do if matr[i,j]<0 then k:=k+1; result:=k; end; Function Nulev(Var Matr: Tmatr): integer; Var i,j, k: integer; begin k:=0; for i:=0 to n-1 do for j:=0 to m-1 do if matr[i,j]=0 then k:=k+1; result:=k; end; begin p:=0; n:=3; m:=4; SetLength(matr34, n, m); ReadM(matr34); WriteM(matr34); n:=2; m:=5; SetLength(matr25, n, m); ReadM(matr25); WriteM(matr25); n:=3; m:=4; p:=Pologit(matr34); o:=Otric(matr34); nul:=Nulev(matr34); writeln('Kol-vo pologitelnih (1): ', p); writeln('Kol-vo otricatelnih (1): ', o); writeln('Kol-vo nulevih (1): ', nul); writeln; n:=2; m:=5; p:=Pologit(matr25); o:=Otric(matr25); nul:=Nulev(matr34); writeln('Kol-vo pologitelnih (2): ', p); writeln('Kol-vo otricatelnih (2): ', o); writeln('Kol-vo nulevih (2): ', nul); readln; readln; end. Наверное, как-то так. matr34, matr25 - динамические массивы для матриц 3х4 и 2х5. Вроде верно, проверьте, пож-ста, сами. |
|
|
30.09.2009 - 19:06
Вставить ник | Быстрая цитата | Сообщение
#397
|
|
Любознательный Группа: Участник Сообщений: 1724 Регистрация: 7.04.2005 Пользователь №: 7382 |
Пасиба огромное. А не напомните принцип нахождения макс. элемента для каждой строки? Как это выглядит? Типо берем первый и считаем его максом, а потом пробегаемся по всем остальным?
|
|
|
30.09.2009 - 20:34
Вставить ник | Быстрая цитата | Сообщение
#398
|
|
Продвинутый новичок Группа: Участник Сообщений: 59 Регистрация: 15.07.2008 Пользователь №: 23225 |
|
|
|
8.10.2009 - 18:48
Вставить ник | Быстрая цитата | Сообщение
#399
|
|
Любознательный Группа: Участник Сообщений: 1724 Регистрация: 7.04.2005 Пользователь №: 7382 |
Так еще вопрос.
Как сформировать 2 массива допустим X и Y из положительных элементов каждой из матриц, допустим C и D. Как пишется? |
|
|
10.10.2009 - 23:29
Вставить ник | Быстрая цитата | Сообщение
#400
|
|
Продвинутый новичок Группа: Участник Сообщений: 59 Регистрация: 15.07.2008 Пользователь №: 23225 |
Извините, бываю здесь нечасто.
Если ещё актуально, то можно хотя бы вот так: CODE unit Unit1; {$APPTYPE CONSOLE} interface implementation Type TMatr = array of array of real; Var matr1, matr2: TMatr; matr11, matr21: array of real; k, i, j, n, m: integer; Потом описываем процедуры ReadM, WriteM и функцию Pologit, как в предыдущем примере. Потом можно так: CODE begin
write('Set number of rows: '); readln(n); write('Set number of cols: '); readln(m); SetLength(matr1, n, m); ReadM(matr1); WriteM(matr1); k:=Pologit(matr1); SetLength(matr11, k); k:=0; for i:=0 to n-1 do for j:=0 to m-1 do if matr1[i,j]>0 then begin matr11[k]:=matr1[i,j]; k:=k+1; end; writeln; write('result 1: '); for i:=0 to k-1 do write(matr11[i]:4:2,' '); writeln; writeln; // То же самое, только со 2-й матрицей. write('Set number of rows: '); readln(n); write('Set number of cols: '); readln(m); SetLength(matr2, n, m); ReadM(matr2); WriteM(matr2); k:=0; for i:=0 to n-1 do for j:=0 to m-1 do if matr2[i,j]>0 then begin matr21[k]:=matr2[i,j]; k:=k+1; end; writeln; write('result 2: '); for i:=0 to k-1 do write(matr21[i]:4:2,' '); readln; readln; |
|
|
Текстовая версия | Сейчас: 5.01.2025 - 03:44 |