Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2010, 21:54   #1
admiral121
 
Регистрация: 11.12.2010
Сообщений: 9
По умолчанию исправить ошибки

написал пару программ и никак не могу понять где ошибки

Выполнить табуляцию функции, то есть: для заданной переменной х[-3;2] с шагом h = 0,2 . При всех значениях х вычислить значения функции y = (( x – 1) в квадрате) – ((е)в степени (-x)) . Вывести в столбик х и соответствующий y. Использовать оператор цикла repeat.
Код:
program pr2;
uses crt;
var x,y,h:real;
const e=2.7;
BEGIN
  clrscr;
  read(x);
  h:=x;
 if (x>=-3) and (x<=2) then
 repeat
 begin
  y:=(sqr((x-1))-(exp(ln(e)*(-x))));
  writeln('x= ',x:2:2,' y= ',y:2:2);
  h:=(h+0.2);
  end;
 until(h=2);
readln;
END.
Дан одномерный массив а(n), в кото*ром находится единственный нулевой элемент. Найти где он находится, и упо*рядочить по возрастанию элементы, рас*положенные за ним. Выдать на экран номер элемента и упорядоченный мас*сив.

Код:
program pr7;
uses crt;
const n= 10;
var a: array [1..n] of integer;
    i,min,j,t,temp: integer;
BEGIN
  clrscr;
  for i:=1 to n do
 begin
  writeln('‚ўҐ¤ЁвҐ ',i, ' н«Ґ¬Ґ*в ¬ ббЁў : ');
  read(a[i]);
 end;
  for i:=1 to n do
   if (a[i]=0) then
 begin
  writeln('Ќ®¬Ґа *г«Ґў®Ј® н«Ґ¬Ґ*в = ',i);
 end;
 t:=i+1;
  for i:=n  downto t do
   for j:=t to n do
    if (a[j]>a[j-1]) then
     begin
      temp:=a[j];
      a[j]:=a[j-1];
      a[j+1]:=temp;
     end;
  for i:=1 to n do
   write(a[i], ' ');


END.
Первая программа зацикливается, а вторая не производит сортировку
admiral121 вне форума Ответить с цитированием
Старый 11.12.2010, 23:07   #2
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Попробуй заменить вот эту часть кода :

Код:

  for i:=n  downto t do
   for j:=t to n do
    if (a[j]>a[j-1]) then
     begin
      temp:=a[j];
      a[j]:=a[j-1];
      a[j+1]:=temp;
     end;
Замени на вот эту :

Код:

  for i:=t  to n-1 do
   for j:=i+1 to n do
    if (a[i]>a[j]) then
     begin
      temp:=a[i];
      a[i]:=a[j];
      a[j]:=temp;
     end;
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---

Последний раз редактировалось andrewpalkin; 11.12.2010 в 23:12.
andrewpalkin вне форума Ответить с цитированием
Старый 11.12.2010, 23:09   #3
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
Первая программа зацикливается
замени
Код:
until(h=2);
на
Код:
until(h>2);
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 12.12.2010, 14:13   #4
admiral121
 
Регистрация: 11.12.2010
Сообщений: 9
По умолчанию

Спасибо большое за ответы. Не могли бы вы подсказать ещё одну вещь.
есть такое задание

Дано два одномерных массива разной длины a(n) и b(m) и два числа x и y. Сформировать двумерный массив C(n ×m) , так, что бы каждый элемент матрицы был равен: cij=x ai+y bj


Написал программу, вроде всё правильно, но компиляция отменяется из-за несоответствия типов. Никак не пойму где ошибка

Код:
program pr17;
uses crt;
const n=10; m=5;
var a: array [1..n] of integer;
    b: array [1..m] of integer;
    c: array [1..n,1..m] of integer;
    i,j: integer;
    x,y: integer;
BEGIN

   clrscr;
    for i:=1 to n do
     begin
      writeln('‚ўҐ¤ЁвҐ ',i,' н«Ґ¬Ґ*в ¬*ббЁў* a: ');
      read(a[i]);
    end;

     for i:=1 to m do
     begin
      writeln('‚ўҐ¤ЁвҐ ',i,' н«Ґ¬Ґ*в ¬*ббЁў* b: ');
      read(b[i]);
    end;

    writeln('‚ўҐ¤ЁвҐ зЁб«® x: ');
    read(x);
    writeln('‚ўҐ¤ЁвҐ зЁб«® y: ');
    read(y);

    for i:=1 to n do
      for j:=1 to m do
        c[j]:=x*a[i]+y*b[j];



END.
admiral121 вне форума Ответить с цитированием
Старый 12.12.2010, 14:16   #5
admiral121
 
Регистрация: 11.12.2010
Сообщений: 9
По умолчанию

Цитата:
Попробуй заменить вот эту часть кода :

Код:



for i:=n downto t do
for j:=t to n do
if (a[j]>a[j-1]) then
begin
temp:=a[j];
a[j]:=a[j-1];
a[j+1]:=temp;
end;

Замени на вот эту :

Код:



for i:=t to n-1 do
for j:=i+1 to n do
if (a[i]>a[j]) then
begin
temp:=a[i];
a[i]:=a[j];
a[j]:=temp;
end;
не помогло, цифры выводятся в том же порядке, что и были введены

Последний раз редактировалось admiral121; 12.12.2010 в 14:17. Причина: процитировал не то сообщение
admiral121 вне форума Ответить с цитированием
Старый 12.12.2010, 22:22   #6
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Цитата:
Сообщение от admiral121 Посмотреть сообщение
не помогло, цифры выводятся в том же порядке, что и были введены
Потому что вот это :

Код:
 for i:=1 to n do
   if (a[i]=0) then
 begin
  writeln('Ќ®¬Ґа *г«Ґў®Ј® н«Ґ¬Ґ*в = ',i);
 end;
 t:=i+1;
Надо заменить на вот это :

Код:
 for i:=1 to n do
   if (a[i]=0) then
 begin
  writeln('Ќ®¬Ґа *г«Ґў®Ј® н«Ґ¬Ґ*в = ',i);
  t:=i+1;
 end;
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Старый 12.12.2010, 22:24   #7
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Цитата:
Сообщение от admiral121 Посмотреть сообщение
Спасибо большое за ответы. Не могли бы вы подсказать ещё одну вещь.
есть такое задание

Дано два одномерных массива разной длины a(n) и b(m) и два числа x и y. Сформировать двумерный массив C(n ×m) , так, что бы каждый элемент матрицы был равен: cij=x ai+y bj


Написал программу, вроде всё правильно, но компиляция отменяется из-за несоответствия типов. Никак не пойму где ошибка

Код:
program pr17;
uses crt;
const n=10; m=5;
var a: array [1..n] of integer;
    b: array [1..m] of integer;
    c: array [1..n,1..m] of integer;
    i,j: integer;
    x,y: integer;
BEGIN

   clrscr;
    for i:=1 to n do
     begin
      writeln('‚ўҐ¤ЁвҐ ',i,' н«Ґ¬Ґ*в ¬*ббЁў* a: ');
      read(a[i]);
    end;

     for i:=1 to m do
     begin
      writeln('‚ўҐ¤ЁвҐ ',i,' н«Ґ¬Ґ*в ¬*ббЁў* b: ');
      read(b[i]);
    end;

    writeln('‚ўҐ¤ЁвҐ зЁб«® x: ');
    read(x);
    writeln('‚ўҐ¤ЁвҐ зЁб«® y: ');
    read(y);

    for i:=1 to n do
      for j:=1 to m do
        c[j]:=x*a[i]+y*b[j];



END.

Вот это :

Код:
  for i:=1 to n do
      for j:=1 to m do
        c[j]:=x*a[i]+y*b[j];
Замени на вот это :

Код:
  for i:=1 to n do
      for j:=1 to m do
        c[i][j]:=x*a[i]+y*b[j];
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Старый 13.12.2010, 12:25   #8
admiral121
 
Регистрация: 11.12.2010
Сообщений: 9
По умолчанию

Спасибо, но с 17 программой я уже сам разобрался. Только 7 никак не хочет работать(
admiral121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Исправить ошибки dragun4ik Помощь студентам 3 06.02.2010 19:10
исправить ошибки dragun4ik Помощь студентам 6 30.01.2010 16:34
исправить ошибки lubafffka Общие вопросы C/C++ 2 06.12.2009 01:11
помогите исправить ошибки Euforia_PZAS09_1 Паскаль, Turbo Pascal, PascalABC.NET 0 19.10.2009 21:41
помогите исправить ошибки kermit Помощь студентам 1 21.06.2008 10:44