1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.

Помогите решить задачу в Паскале.

Тема в разделе "В помощь учащимся", создана пользователем ZoRG, 05.12.04.

Статус темы:
Закрыта.
  1. ZoRG

    ZoRG Активный участник

    1.300
    1
    Люди, подскажите как решить задачу в паскале. Завтра надо сдавать, а она у меня не готова!!!
    Проверить, является ли матрица X (15,15) симметричной (в симметричной матрице X(i,j) = x(j,i). Напечатать сообщение о результатах проверки.

    (это задача 21.10 из семестровой по информатике). HELP!!!
     
  2. МарьИванна

    МарьИванна Участник

    197
    0
    Толь, по-моему так:

    Program zadacha;
    uses crt;
    const n1=15;
    m1=15;
    type mat:array[1..m1, 1..n1];
    var X:mat;
    i, j :integer;
    begin
    clrscr;
    writeln('Vvedite razmer matrici');
    readln(m,n);
    for i:=1 to m do begin
    for j:=1 to n do begin
    writeln('X[i',i,',',j,']');
    read(X[i,j]);
    end;
    for i:=1 to m do begin
    for j:=1 to n do begin
    if (i=j) and (j=i) writeln('yes')
    else if (i<>0) and (j<>0) writeln('no');
    end;
    readkey;
    end.

    Роман.
     
  3. PoliceMan

    PoliceMan Активный участник

    3.443
    7
    Точнее вот так:
    Код:
    Program matrix; 
    uses
      crt; 
    type
      mat: array[1..15, 1..15];
    var
      X:mat; 
      i,j,m,n: byte; 
      t: boolean;
    begin 
      clrscr; 
      t:=false;
      writeln('Введите размер матрицы через пробел:'); 
      readln(m,n); 
      for i:=1 to m do
        for j:=1 to n do begin
          write('X[i,',',j,']=');
          readln(X[i,j]); 
      end; 
      for i:=1 to m do
        for j:=1 to n do begin 
          if x[i,j] <> x[j,i] then t:=true; 
      end; 
      if t then wirteln('Матрица не симметрична!')
        else wirteln('Матрица симметрична!')
      readkey;
    end.
     
  4. ZoRG

    ZoRG Активный участник

    1.300
    1
    МарьИванна
    PoliceMan
    Пожалуйста, напишите к вашим программам тестовый пример и блок схему...
    Огоромное спасибо за помощь!!!
     
  5. Hermes

    Hermes Активный участник

    11.635
    2
    ZoRG
    Извините, а в вашем дипломе будет написано "Волгограддский форум" вместо фамилии и имени вашего? Может за вас еще и сдать пойти эту задачу?

    Совсем нынче студент обленился и обнаглел. Вроде разжевали уже, так нет, все мало.:confused:
     
  6. Demon

    Demon Демовой

    9.145
    0
    Hermes
    Знал бы ты, насколько прав :)
     
  7. ZoRG

    ZoRG Активный участник

    1.300
    1
    Hermes
    Это первый курс !!! Просто катастрофически не успеваю!!!
     
  8. Cray

    Cray Активный участник

    1.801
    0


    Если такое уже в начале первого курса, то тебе надо подумать о смене места учебы.
     
  9. ZoRG

    ZoRG Активный участник

    1.300
    1
    Cray
    Demon
    Hermes
    Чем флеймить-лучше бы помогли человеку!!:mad: :mad: :mad:
     
  10. PoliceMan

    PoliceMan Активный участник

    3.443
    7
    Знаешь, сам учусь на первом курсе. Тоже не успеваю. Тебе помогли программой, чего ещё надо? Тестовый пример написать? Так запусти прогу она тебе кучу примеров выдаст. А блок схему делай сам, если честно мне влом. Только что сделал начерталку, долго мучался и просто влом, я лучше в халфу пойду погоняю.
     
  11. Pete.

    Pete. Активный участник

    1.085
    0
    да сколько ж можно тебе помогать:biglaugh: уже половина тем в разделе "образование" - твои просьбы о помощи..


    и не злобствуй:)
     
  12. RUS

    RUS Активный участник

    12.666
    2
    ZoRG
    А какой флейм? Эти же люди также учились на первом курсе и сдавали все сами
     
  13. ZoRG

    ZoRG Активный участник

    1.300
    1
    PoliceMan
    Начерталку делаю без проблем-сдаю почти всегда самый первый в группе....а вот с информатикой что-то тяжеловато...только что закончил делать семестровую....три задания сделал сам, а четвёртое с вашей помощью!!!
    Pete.

    А тебе что жалко???

    я тоже сдаю всё сам (ну..за исключением двух лаб по информатике... :) )
     
  14. ZoRG

    ZoRG Активный участник

    1.300
    1
    УРА!!!! Всё сделал!!Оформил все лабы и семестровую!!!
    [off]Мдя...только уже скоро в универ...ну и спать не хочется..пойду почитаю литературу по массивам или развёртку по начерталке сделать ....[/off]
     
  15. ZoRG

    ZoRG Активный участник

    1.300
    1
    Помогите решить задачу в Паскале (часть 2).

    Почему у меня программа выдаёт не верный результат???

    Задание:Ввести двумерный массив Ф(M,N) (N<=10;M<=15) и выдать егона печать в виде таблицы.
    В каждой строке массива элементы, стоящие между MAX и MIN элементом, заменить нулями.
    Выдать преобразованный массив на печать.

    PROGRAM ABC;
    uses crt;
    var
    A:array[1..5,1..6] of integer;
    i,j,M,N,MAX,MIN,jMAX,jMIN:integer;
    begin
    clrscr;
    writeln('Введите размерность матрицы:');
    write('N=');
    read(N);
    write('M=');
    read(M);
    for i:=1 to N do
    for j:=1 to M do
    begin
    write('A[',i,',',j,']=');
    readln(A[i,j]);
    end;
    for i:=1 to N do
    begin
    MAX:=A[i,1];
    for j:=1 to M do
    if A[i,j]> MAX then
    MAX:=A[i,1];
    jMAX:=j;
    end;
    for i:=1 to N do
    begin
    MIN:=A[i,1];
    for j:=1 to M do
    if A[i,j]<MIN then
    MIN:=A[i,j];
    jMIN:=j;
    end;
    for i:=1 to N do
    begin
    for j:=1 to M do
    if (j>jMIN) and (j<jMAX) then
    A[i,j]:=0;
    end;
    writeln('Матрица после преобразования:');
    for i:=1 to N do
    for j:=1 to M do
    begin
    writeln(A[i,j]);
    end;
    readkey;
    End.
     
  16. Demon

    Demon Демовой

    9.145
    0
    ZoRG
    Ну, для начала у тебя на печать выдаётся не таблица, а столбец.... Один.... длииинный такой. Выводи матрицу построчно!
     
  17. DENRI

    DENRI Активный участник

    2.754
    2
    ZoRG
    Задание не сложное! Бегло... мне кажеться ошибка здесь:
    for i:=1 to N do
    begin
    MAX:=A[i,1];
    for j:=1 to M do
    if A[i,j]> MAX then
    MAX:=A[i,1];
    jMAX:=j;
    end;
    for i:=1 to N do
    begin
    MIN:=A[i,1];
    for j:=1 to M do
    if A[i,j]<MIN then
    MIN:=A[i,j];
    jMIN:=j;
    По идее, тебе надо находить max и min в каждой строке? А ты находишь общий max&min!
    Да, ещё, когда я работал на Паскале я вывод ощуществлял так:
    for i:=1 to N do
    for j:=1 to M do
    begin
    writeln('A[',i,',',j,']',A[i,j]);
    end;
    Красота... и понятнее :)
     
  18. ZoRG

    ZoRG Активный участник

    1.300
    1
    с выводом:
    for i:=1 to N do
    begin
    for j:=1 to M do
    write(A[i,j]:6);
    writeln
    end;

    А вот в программа всё равно не даёт правильный результат.
    DENRI
    Мне кажется, что ты не прав насчёт мин и макс...вроде, они находятся в каждой строчке отдельно....
    Demon

    Это я исправил.А дальше???
     
  19. Demon

    Demon Демовой

    9.145
    0
    ZoRG
    А какой она тебе результат выдаёт?
     
  20. Cray

    Cray Активный участник

    1.801
    0
    А еще не забудь инициировать jMax после того как делаешь присваивание MAX:=A[i,1]. Иначе если максимальным является первый элемент, то jMax не определена (то же самое и про минимум).
     
  21. Hermes

    Hermes Активный участник

    11.635
    2
    ZoRG

    А сколько времени вы смотрели на программу в отладчике перед тем как ее сюда выложить?

    Какой результат выдает?
    Какие данные вводите?

    Телепаты в отпусках. Вы хоть вопрос по-человечески сформулировать можете? Типа: "Не работает то-то и то-то, с такими входными и выходными данными". Или вы думаете, что все сразу бросятся искать то, не знаю что?

    Извините, но в таких случаях говорят, что ошибка в ДНК.

    Hermes добавил [date]1102592946[/date]:
    И, на будущее, давайте с вопросами программирования в СОФТ!!!
     
  22. PoliceMan

    PoliceMan Активный участник

    3.443
    7
    Код:
    for i:=1 to N do 
    begin 
    MAX:=A[i,1]; 
    for j:=1 to M do 
    if A[i,j]> MAX then 
    MAX:=A[i,1]; {Вот здесь должно быть не 1 а j}
    jMAX:=j; {Вот здесь помойму ошибка, даже если ты нашел максимум}
    {у тебя все равно jMAX будет присвоен последний элемент}
    end; 
    for i:=1 to N do 
    begin 
    MIN:=A[i,1]; 
    for j:=1 to M do 
    if A[i,j]<MIN then 
    MIN:=A[i,j]; 
    jMIN:=j; {Здесь тоже самое}
    end;
    PoliceMan добавил [date]1102596656[/date]:
    Hermes
    Чё ты к парню пристал?
    Помогаем ему решить задачу, исправляем, нет надо наезжать обязательно, лучше бы помог.

    PoliceMan добавил [date]1102597130[/date]:
    ZoRG
    И прога у тебя некорректная, ты нахдишь общий MIN и MAX и затем все между ними меняешь, пример:
    Есть матрица:
    5 2 3 8 3
    1 3 4 7 6
    4 1 5 0 1
    9 5 2 3 7
    Вывод у тебя будет таким:
    5 0 0 8 3
    1 0 0 7 6
    4 0 0 0 1
    9 0 0 3 7
    А должно быть:
    5 2 0 8 3
    1 0 0 7 6
    4 1 5 0 1
    9 0 2 3 7

    И ещё надо учитывать что Min и Max могут стоят как в прямом порядке, (Min за Max), так и наоборот (Max за Min).
     
    Последнее редактирование модератором: 09.12.04
  23. Negative

    Negative Активный участник

    1.417
    0
    ZoRG
    Итак помогают, советуют не мучаться оставшиеся N лет... :spy:
     
  24. Hermes

    Hermes Активный участник

    11.635
    2
    PoliceMan

    1. Я ни к кому не приставал.
    2. Прежде чем просить о помощи других надо попытаться разобраться самому. А я сомневаюсь, что ZoRG отладчик открывал и пытался разобраться, судя по его постам.
    3. Человек, который хочет получить помощь, должен уважать тех, кого он о помощи просит. То есть по крайней мере ценить их время и корректно формулировать вопросы.

    А просьбы ZoRG можно спокойно заменить на: "А ну ка быстро напишите мне программу!". По крайней мере тональность этих просьб именно такая. В такой ситуации помогают раз, два, а потом посылают в пешее эротическое путешествие, т.к. человек начинает садиться на шею.

    У каждого, кто пишет программы рано или поздно возникают вопросы с которыми он лезет на форумы. И, как правило, сообщество настроено благожелательно, если выполняются пункты 2 и 3, которые я привел выше. Проблема новичка в том, что он считает, что отладчик, справка и учебники - пустая трата времени, а вот люди сейчас все бросят и начнут решать его проблемы.

    Все вышесказанное, ИМХО. Но могу рекомендовать почитать "Как правильно задавать вопросы" на RSDN. Или задать вопрос ZoRG там же :D
     
  25. DENRI

    DENRI Активный участник

    2.754
    2
    ZoRG
    раз тебе кажется....... креститься надо :)
    Ничего.... у тебя всё впереди.... я сейчас грызу Делфу.... скоро проект сдавать.....
     
  26. ZoRG

    ZoRG Активный участник

    1.300
    1
    Тему можно закрывать. Во всём разобрался сам. Спасибо за помощь.
     
  27. Voyager

    Voyager Активный участник

    3.066
    0
    Я просто фигею, особенно про первую задачу. Ее так никто правильно и не решил, отсебятину написали.
     
  28. PoliceMan

    PoliceMan Активный участник

    3.443
    7
    Voyager
    И чего тебе в моем решении первой задачи не нравится???
     
  29. Hermes

    Hermes Активный участник

    11.635
    2
    PoliceMan
    Program matrix;
    uses
    crt;
    type
    mat: array[1..15, 1..15];
    var
    X:mat;
    i,j,m,n: byte;
    t: boolean;
    begin
    clrscr;
    t:=false;
    // зачем, если размер матрицы известен?
    writeln('Введите размер матрицы через пробел:');
    readln(m,n);
    for i:=1 to m do
    for j:=1 to n do begin
    write('X[i,',',j,']=');
    readln(X[i,j]);
    end;
    // Потенциальная дыра
    for i:=1 to m do
    for j:=1 to n do begin
    // если ввели n=15, m=20
    // будет сравнение, например if x[15,20] <> x[20,15]
    // ошибка: выход за границы диапазона
    if x[i,j] <> x[j,i] then t:=true;
    end;
    if t then wirteln('Матрица не симметрична!')
    else wirteln('Матрица симметрична!')
    readkey;
    end.

    А если вы сейчас будете говорить, что это придирки и матрица должна быть квадратной, то тогда:
    1. нафиг вводить 2 размерности (зачем их вообще вводить с клавиатуры - непонятно, условие этого не требует)
    2. вместо
    for i:=1 to m do
    for j:=1 to n do begin
    по хорошему нужно написать
    for i:=1 to х do
    for j:=i+1 to х do begin

    где х - размерность матрицы
     
Статус темы:
Закрыта.