Двумерные массивы и циклическая алгоритмическая конструкция
Вложений: 1
Добрый день.нужна помощь в исправлении ошибок 2х заданий на языке Pascal.
1е по массивам:Найти сумму элементов нечетных строк матрицы.(моя программа на фото)Преподаватель сказал,что нужен ввод строк и столбцов и тд. И дальнейший расчет сумм элементов неч. строк матрицы. И 2я задача на Циклическую алгоритмическую конструкцию: Вычислить значение y, которое соответствует каждому значению x (x = 1, dx = 0,5), по формуле: . Считать y до тех пор, пока подкоренное выражение больше или равно 0,05. Определить k – количество вычисленных y. Мой код: program d; uses crt ; var y,x, k,dx: integer; begin clrscr; k:=0; while y=<0.05 do begin x:=x+dx; y:=sqrt((x+2)/x*x*x); K:=K+1; Writeln( ‘k=’ k); End; End. Но преподаватель сказал,что код не правильный т.к. нету ввода в программе х и dx. Прошу помогите.Заранее спасибо |
Цитата:
Цитата:
Цитата:
|
Цитата:
program p2; uses crt; const n=8; m=7; var i,j,p:integer; matrix: array[0..n,0..m] of integer; begin p:=0; for i:=0 to n do if i mod 2 = 1 then for j:=0 to m do p:=p+matrix[i,j]; writeln('answer: ',p); readln; end. Преподаватель сказал,что ввод n и m должен осуществлятся после запуска программы,т.е. нужно написать,чтобы после запуска программы была надпись введите строку и введите столбец соответственно.И я не знаю как мою программу переделать,чтобы это все было:( Формула для 2й задачи y:=sqrt((x+2)/x*x*x); |
Цитата:
Не знаю, правильно ли я понимаю ход мысли преподавателя, но поступить можно так: задать, как у Вас это и сделано на фото, массив "с запасом", затем ввести n и m (порознь, потому что матрица может быть и не квадратной!), а затем вводить саму матрицу, причем не "вслепую", как у Вас, а с выводом номера строки и столбца. В итоге я бы написал так: Код:
program p2; 1. Нумерацию строк и столбцов матрицы принято начинать с 1, а не с 0. 2. По завершении ввода элементов предусмотрен вывод на экран всей матрицы. 3. В соответствии с условиями задачи, подсчитывается и выводится сумма элементов КАЖДОЙ нечетной строки, а не всех скопом, как у Вас. |
Теперь по второй задаче. Увы, при небольшом объеме программы ошибок в ней куча:
1. Вы вычисляете вещественную функцию вещественного аргумента - так почему же формат параметров x, y, dx Вы указываете целочисленный (integer)? Только real! 2. Действительно не определены начальное значение х и шаг. Это нужно сделать либо с консоли, либо введя эти величины в виде констант. 3. Абсолютно неправильно задан цикл. Во-первых, в Паскале отношение "больше или равно" и "меньше или равно" записывается так: сначала - неравенство, а потом равенство, т. е. ">=", "<=" - правильно, а вот "=>", "=<" - недопустимо. Во-вторых, поскольку мы наперед не знаем начального значения y, цикл "while ... do" не годится, следует использовать "repeat ... until". В-третьих, в любом случае неравенство по у записано неверно, смысл его в том, что цикл продолжается до тех пор, пока условие не станет истинным. 4. Неправильно записана сама функция. Там, как я понимаю, в знаменателе подкоренного выражения стоит х в кубе. Вашу же формулу транслятор интерпретирует так: (х+2)/х, результат умножить на х и результат опять умножить на х. 5. Нет вывода самих значений х и у. Исходя из всего вышеизложенного, предлагаю такой вариант: Код:
program d; |
cпасибо большое:)очень сильно помог
|
Часовой пояс GMT +4, время: 07:06. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.