IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Процедура, Подскажите,что не так
KriN
сообщение 3.03.2009 21:42
Сообщение #1





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


program lab9;
type mat=array[1..10000,1..10000] of real;
var
i,j,n:integer;
k:real;
km:mat;
procedure changediag( x:mat;
var i,j,n:integer;
var k:real);
begin
For i := 1 To n do
For j := 1 To n do
k := 0;
For i := 1 To n - 1 do
For j := 1 To n - 1 do
k := x[i, i + 1] ;
x[i, i + 1] := x[j + 1, j] ;
x[j + 1, j] := k ;
end;
begin
For i := 1 To n do
For j := 1 To n do
write('n=');
readln(n);
writeln('x[',i,j:2,']=');
For i := 1 To n do
For j := 1 To n do
changediag(km,n,k,i,j);
writeln(' x',km[i,j]:2 :1);
end.




Пишет:"тип фактического параметра-переменной real отличается от типа формального параметра integer"

Сообщение отредактировано: volvo - 4.03.2009 9:28
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Unconnected
сообщение 3.03.2009 21:52
Сообщение #2


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


У меня на TP7 вообще ругается на тип, говорит Structure too large. Слишком большой диапазон как я понял. Какой компилятор используешь?

Плюс Invalid For control variable..

Сообщение отредактировано: Unconnected - 3.03.2009 21:54


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 3.03.2009 22:02
Сообщение #3


Гость






Цитата
Слишком большой диапазон как я понял
Матрица очень большая... Под TP ни одна структура данных не может быть больше 64Кб. А тут - полгигабайта...

ДАльше... Паскаль всегда требовал и будет требовать, чтобы в качестве переменной цикла использовалась ЛОКАЛЬНАЯ переменная, а не переданная в качестве Var-параметра.

Ну, и третье: KriN, исправь первый пост... Теги добавь, чтобы программа была читаемой.
 К началу страницы 
+ Ответить 
Unconnected
сообщение 3.03.2009 22:11
Сообщение #4


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Только вот интересно, как он получил ошибку несовпадения типов, если дальше второй строки не компилируется)


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 3.03.2009 22:16
Сообщение #5


Гость






Любой 32-битный компилятор выдает тебе ВСЕ ошибки, а не по одной, как Турбо-Паскаль. И ограничения в 64К у этих компиляторов нет.
 К началу страницы 
+ Ответить 
KriN
сообщение 3.03.2009 22:45
Сообщение #6





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


Цитата(Unconnected @ 3.03.2009 21:52) *

Какой компилятор используешь?



Pascal ABC
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Unconnected
сообщение 3.03.2009 22:59
Сообщение #7


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


А ошибку только одну выдаёт или ещё которые volvo назвал?


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
maksimla
сообщение 4.03.2009 9:22
Сообщение #8


Знаток
****

Группа: Пользователи
Сообщений: 324
Пол: Мужской
Реальное имя: maksim

Репутация: -  1  +


посмотрел и вот исправил эти ошибки если можно сказать так вот что получилось
 program lab9;
type mat=array[1..100,1..100] of real;
var
i,j,n:integer;
k:real;
km:mat;
procedure changediag( x:mat;
var i,j,n:integer;
var k:real); {у тебя в процедуре тип real стоит 5 а как задаешь то он стоит 3 из за этого ошибка}
begin
{For i := 1 To n do
For j := 1 To n do} {зачем это тебе это ненужно и так k = 0 будет это ведь не массив}
k := 0;
For i := 1 To n - 1 do
For j := 1 To n - 1 do
k := x[i, i + 1] ;
x[i, i + 1] := x[j + 1, j] ;
x[j + 1, j] := k ;
end;
begin
{For i := 1 To n do
For j := 1 To n do }    {зачем тебе это если всеравно невыполняется это только потом задаешь n}
write('n=');
readln(n);
writeln('x[',i,j:2,']=');
For i := 1 To n do
For j := 1 To n do
changediag(km,n,{k}i,j,k);{вот поставил его последним и ошибки нету}
writeln(' x',km[i,j]
{1});{некак непойму зачем тебе цыфра тут или ее совсем ненадо или поставь перед ней запятую или двоеточие}
end.



вот сейчас у меня запускается вводим число и потом ошибка выбивает в процедере на k := 0; когда несколько раз проходит

Сообщение отредактировано: maksimla - 4.03.2009 10:11


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 4.03.2009 9:28
Сообщение #9


Гость






maksimla, это не будет компилироваться. Почему - я уже написал выше, читай внимательнее...
 К началу страницы 
+ Ответить 
maksimla
сообщение 4.03.2009 9:59
Сообщение #10


Знаток
****

Группа: Пользователи
Сообщений: 324
Пол: Мужской
Реальное имя: maksim

Репутация: -  1  +


Цитата(volvo @ 4.03.2009 8:28) *

maksimla, это не будет компилироваться. Почему - я уже написал выше, читай внимательнее...

ну я вот поспешил немножко сейчас исправил и у меня программа запускается и работает пару строчек lol.gif
а как не знаем самого задания так я дальше не полезу только исправлю что найду тут .



Добавлено через 7 мин.
я даже не знаю что о такой программе и сказать внимательнее посмотрел ужас просто


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 4.03.2009 10:34
Сообщение #11


Гость






ЭТО у тебя запускается?
Цитата
procedure changediag( x:mat;
var i,j,n:integer;
var k:real); {у тебя в процедуре тип real стоит 5 а как задаешь то он стоит 3 из за этого ошибка}
begin
{For i := 1 To n do
For j := 1 To n do} {зачем это тебе это ненужно и так k = 0 будет это ведь не массив}
k := 0;
For i := 1 To n - 1 do
For j := 1 To n - 1 do
k := x[i, i + 1] ;
x[i, i + 1] := x[j + 1, j] ;
x[j + 1, j] := k ;
end;
Неправда... Повторяю еще раз: ни один компилятор Паскаля такое НЕ КОМПИЛИРУЕТ, и не будет. Так что - делай выводы... И исправляй дальше.
 К началу страницы 
+ Ответить 
maksimla
сообщение 4.03.2009 10:52
Сообщение #12


Знаток
****

Группа: Пользователи
Сообщений: 324
Пол: Мужской
Реальное имя: maksim

Репутация: -  1  +


это так у меня компилируется и я выполняю тут пошаговые действия смотрю постоянно
в процедуре доходит до
k := x[i, i + 1] ;
пишет ошибка и все

вот как думал я так сейчас ему написал только незнаю что процедура должна делать и там все когда считается выдает ошибку
вот

program lab9;
type mat=array[1..100,1..100] of real;
var
i,j,n:integer;
k:real;
km:mat;
procedure changediag( x:mat;
var i,j,n:integer;
var k:real);
begin
k := 0;
{я тут вот застрял незнаю что ты тут хочешь делать }
For i := 1 To n - 1 do
For j := 1 To n - 1 do
k := x[i, i + 1] ;
x[i, i + 1] := x[j + 1, j] ;
x[j + 1, j] := k ;
end;
begin
write('n=');
readln(n);
{мне кажется что ты тут хотел в массив числа ввести и посмотреть на числа }
For i := 1 To n do
For j := 1 To n do
readln(km[i,j]);
For i := 1 To n do
For j := 1 To n do
writeln('x[',i,j:2,']=',km[i,j]);
{если будишь по шаговую операцию выполнять то увидишь все числа }
For i := 1 To n do
For j := 1 To n do
changediag(km,i,j,n,k); {так более правильно будет наверное если все буквы по порядку стоят задаются  }
{тут забыл ты поставить циклы чтобы потом все значения увидить}
For i := 1 To n do
For j := 1 To n do
writeln(' x',km[i,j]);
readln;
end.


подскажите что процедура должна делать?
то я чего то не разобрался
а так у меня запускается программа


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
maksimla
сообщение 4.03.2009 11:21
Сообщение #13


Знаток
****

Группа: Пользователи
Сообщений: 324
Пол: Мужской
Реальное имя: maksim

Репутация: -  1  +


запустил на fpc 2.2.2 выдало ошибку error: Illegal parameter: -Opentium3


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
KriN
сообщение 4.03.2009 18:45
Сообщение #14





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


Программа должна переставлять местами строчки,прилегающие к главной диагонали в кв.матрице
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 18.07.2025 10:58
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"