• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите с программой

billchester

Новые
Регистрация
11 Апр 2011
Сообщения
14
Реакции
0
Баллы
0
Помогите с программой

Вычислить и вывести на экран в виде таблицы значения функции, заданной гра¬фически в соответствии с вариантом домашнего задания 2 на интервале от xнач до xкон с шагом dx. Интервал и шаг задать таким образом, чтобы проверить все ветви программы. Таблицу снабдить заголовком и шапкой. Пример результата выполнения программы на экране:


прога

program dz5_1;
uses crt;
var x,n,m:integer; y:real; f_in,f_out:text;
const r=2;
begin
clrscr;
assign(f_in,'C:\input.txt');
reset(f_in);
assign(f_out,'C:\output.txt');
rewrite(f_out);
readln(f_in,m,n);
writeln(f_out,'funkcia idz 2 variant 12');
writeln(f_out,'______________________');
write(f_out,'| x'); writeln(f_out,' | y |');
writeln(f_out,'______________________');
for x:=m to n do
begin
If x>=7 then y:=2
Else if x>=-6 then y:=((x+2)/4)
Else if x>=-2 then y:=sqrt(sqr(R)-sqr(x))+2
Else if x>=0 then y:=sqrt(sqr(R)-sqr(x-2))
Else if x>=2 then y:=((x-2)/-1)
Else if (x<-7) and (x>3) then writeln (‘Reshenii net’);
write(f_out,'|',x:8); writeln(f_out,'| ',y:8:2,'|');
end;
writeln(f_out,'______________________');
close(f_out);
readln;
end.

не могу условие правильно поставить и не выводит в файле решения нет
 

Вложения

  • clip_image002.webp
    clip_image002.webp
    14.1 KB · Просмотры: 111
Ну вот один из возможных вариантов. Главные исправления:
1. Правильно сформулированы условия по х.
2. Убран входной файл - он тут явно "для мебели".
3. Поскольку использован файловый, а не экранный вывод, то и экранные команды тут абсолютно ни к чему. Поэтому убран модуль CRT, команды ClrScr и Readln в конце. Чего на пустой экран пялиться?
4. Переменная х должна иметь вещественный (real), а не целочисленный (integer) формат.
Остальное - по мелочи.
Код:
program dz5_1;
const
 dx=0.1;
var
  i:integer;
  x,y:real;
  f_out:text;
begin
 assign(f_out,'C:\output.txt');
 rewrite(f_out);
 writeln(f_out,'funkcia idz 2 variant 12');
 writeln(f_out,'______________________');
 writeln(f_out,'|    x    |    y    |');
 writeln(f_out,'______________________');
 for i:=0 to Round(10/dx) do
  begin
   x:=-7+dx*i;
   if x>2  then y:=2-x else
   if x>0  then y:=sqrt(4-sqr(x)) else
   if x>-2 then y:=2-sqrt(4-sqr(x+2)) else
   if x>-6 then y:=(x+2)/4 else
   y:=2;
   writeln(f_out,'| ',x:8:2,'| ',y:8:2,'|');
  end;
 writeln(f_out,'______________________');
 close(f_out);
end.
 
не смотри, чтобы проверять значения нужно вводить интервал, а так просто таблица получается.
Нужно проверять точки на этом рисунке принадлежат ли они ему или нет
 
не смотри, чтобы проверять значения нужно вводить интервал, а так просто таблица получается.
Нужно проверять точки на этом рисунке принадлежат ли они ему или нет
Ладно, тогда так:
Код:
program dz5_1;
Uses CRT;
var
  i,N:integer;
  x,y,Xmin,Xmax,dx:real;
  b:boolean;
  f_out:text;
begin
 assign(f_out,'C:\output.txt');
 rewrite(f_out);
 clrscr;
 write('Xmin= ');
 readln(Xmin);
 write('Xmax= ');
 readln(Xmax);
 write('Step= ');
 readln(dx);
 N:=Round((Xmax-Xmin)/dx);
 writeln('funkcia idz 2 variant 12');
 writeln('______________________');
 writeln('|    x    |      y     |');
 writeln('______________________');
 writeln(f_out,'funkcia idz 2 variant 12');
 writeln(f_out,'______________________');
 writeln(f_out,'|    x    |      y     |');
 writeln(f_out,'______________________');
 for i:=0 to N do
  begin
   x:=Xmin+dx*i;
   b:=true;
   if x>3   then b:=false else
   if x>2   then y:=2-x else
   if x>0   then y:=sqrt(4-sqr(x)) else
   if x>-2  then y:=2-sqrt(4-sqr(x+2)) else
   if x>-6  then y:=(x+2)/4 else
   if x>=-7 then y:=2 else b:=false;
   if b then writeln('| ',x:8:2,'| ',y:11:3,'|') else
    writeln('| ',x:8:2,'|out of range|');
   if b then writeln(f_out,'| ',x:8:2,'| ',y:11:3,'|') else
    writeln(f_out,'| ',x:8:2,'|out of range|');
  end;
 writeln('______________________');
 writeln(f_out,'______________________');
 close(f_out);
 readln;
end.
Тут уже по-моему всё впихнуто: и экран, и файл, и ввод диапазона и вообще.
 
во блин вообще четко=)
спасибо!!!
 
Назад
Сверху