Помощь - Поиск - Пользователи - Календарь
Полная версия: Найдите ошибку.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Tnz
Дана задача

Разработка процессора для арифметических операций над вещественными числами.
Система команд - арифметические операции над содержимым регистров, ввод и вывод значений регистров, считывание содержимого регистра в выделенный регистр (сумматор) и запись в регистр содержимого сумматора. Длина команды - 1 байт, команда включает в себя код операции (4 бита), в котором содержится один из операндов. Второй операнд берется из сумматора. РРезультат записывается в сумматор.
Дать описание системы команд и программу для вычисления значений квадратного трехчлена.

Я сделал следующую программу. Поправьте, пожалуйста ее, что бы она выполнялась...

program PM40_4;
uses crt;
 procedure Autor;
  	begin
      clrscr;
      writeln;
    	writeln('');
      writeln('zadanie variant 17');
      end;
var ch:char; f:text; name:string;
	  Reg:array[0..15]of real;
    c:byte;  sum:real; com:string;

	function CharToNumber(ch:char):byte;
  	begin
      if ord(ch)<ord('A')
				then CharToNumber:=ord(ch)-ord('0')
        else CharToNumber:=ord(ch)-ord('A')+10;
    end;

  function HexToDec(a:string):longint;
  	var b:longint; i:byte;
    begin
      b:=0;
      for i:=1 to length(a) do
          b:=b*16+CharToNumber(a[i]);
    	HexToDec:=b;
    end;

begin
{Autor;}
repeat
	write(' write zapros');
  readln(name);  assign(f,name);  reset(f);
  while not Eof(f) do
	begin
	readln(f,com);
  c:=HexToDec(com);
    case c div 16 of
	   	0:readln(Reg[c mod 16]);
      1:writeln(Reg[c mod 16]:7:3);
      2:sum:=Reg[c mod 16];
      3:Reg[c mod 16]:=sum;
      4:sum:=sum+Reg[c mod 16];
      5:sum:=sum-Reg[c mod 16];
      6:sum:=sum*Reg[c mod 16];
      7:sum:=sum/Reg[c mod 16];
      else writeln('ERROR!');
    end;
  end;
  writeln('Continue? (Y/N) '); ch:=readkey;
until UpCase(ch)<>'Y';
end.


М
В тегах лучше, правда?
мисс_граффити

Malice
А чего править то ? Она компилится, с тестовым файлом работает. Или надо как раз файл написать для "вычисления значений квадратного трехчлена" ? smile.gif
Tnz
У меня выдается ошибка ввода/вывода №2 Не удается найти указанный файл строка 34
мисс_граффити
а файл-то есть?
Tnz
Файл - это текст программы которую я выложил
мисс_граффити
нет.
файл - это текстовый файл с именем name, который ты пытаешься reset.
Tnz
Ага, с файлом собственно и вся проблема полулучается. mad.gif
Malice
Цитата(Tnz @ 21.01.2007 23:16) *

Ага, с файлом собственно и вся проблема полулучается. mad.gif

А ты хотя бы без файла напиши, как вычислить значения квадратного трехчлена, по шагам, а там и до файла недалеко. yes2.gif
Kirill_
Цитата
Разработка процессора для арифметических операций над вещественными числами.
Система команд - арифметические операции над содержимым регистров, ввод и вывод значений регистров, считывание содержимого регистра в выделенный регистр (сумматор) и запись в регистр содержимого сумматора. Длина команды - 1 байт, команда включает в себя код операции (4 бита), в котором содержится один из операндов. Второй операнд берется из сумматора. РРезультат записывается в сумматор.
Дать описание системы команд и программу для вычисления значений квадратного трехчлена.


Tnz ты должен на сам создать текстовый файл и там задать команды для нахождения квадратного трехчлена.
Tnz
чего то совсем не получается. mad.gif Напишите файл с программой, пожалуйста.
Kirill_
Код
readln(name);  assign(f,name);  reset(f);

замени на
Код
assign(f,prog.txt);  reset(f);


В текстовом файле сотри комментарии, а файл prog.txt скопируй в корневую папку паскаля! cool.gif
Извени забыл приложить файл!
volvo
Цитата
а файл prog.txt скопируй в корневую папку паскаля!
Зачем? В папку с программой - может быть, а вот в папку Паскаля ничего лишнего бросать не надо. Ибо работоспособность программы будет зависеть от настроек среды, а далено не у всех среда настроена так, чтобы читать файлы из папки компилятора...
Malice
Цитата(Kirill_ @ 22.01.2007 0:57) *

Извени забыл приложить файл!

Немного не то. Команда - это байт, 4- бита на код(это есть) и 4 на номер используемого регистра. У тебя все команды будут интерпретироваться как ввод регистра. Да и с кодами операций напутал..
мисс_граффити
может
assign(f,'prog.txt');
?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.