gpt4 book ai didi

c++ - 在我的 C++ 程序中寻找一些输入。 Simpletron,机器语言

转载 作者:行者123 更新时间:2023-11-28 01:12:03 25 4
gpt4 key购买 nike

编辑:看来我的编码确实有问题。每当我运行程序并输入一个变量时,它总是返回相同的答案.."位置76处的内容为0。

好的伙计们,几天前我在这里发布了一个问题,但这只是一个编译错误,所以如果这看起来很眼熟,那就是原因。我会重申,我是编程的新手,我不是最好的,所以我只是为了简单起见。这也是一个 SML 程序。无论如何,这是一项家庭作业,我希望在这方面取得好成绩。所以我一直在寻找意见,并确保这个程序会做我希望他们正在寻找的事情。无论如何,这里是说明:编写 SML(Simpletron 机器语言)程序来完成以下每项任务:

A) 使用哨兵控制的循环读取正数 s 并计算和打印它们的总和。输入负数时终止输入。B) 使用计数器控制循环读取七个数字,一些是正数,一些是负数,然后计算并打印平均值。C) 读取一系列数字,确定并打印出最大的数字。读取的第一个数字表示应该处理多少个数字。

不用多说,这是我的程序。一起。

程序A

#include <iostream>
using namespace std;

int main()
{
int memory[100]; //Making it 100, since simpletron contains a 100 word mem.

int operation; //taking the rest of these variables straight out of the book seeing as how they were italisized.

int operand;

int accum = 0; // the special register is starting at 0

int j;

for (j = 0; j < 100; j++ ) //Simply stating that for int j is = to 0, j must be less than 100 because that is the memory limit, and for every pass-through, increment j.
memory[j] = 0;


// This is for part a, it will take in positive variables in a sent-controlled loop and compute + print their sum. Variables from example in text.
memory [00] = 1010;

memory [01] = 2009;

memory [02] = 3008;

memory [03] = 2109;

memory [04] = 1109;

memory [05] = 4300;

memory [06] = 1009;

j = 0; //Makes the variable j start at 0.

while ( true )
{

operand = memory[ j ]%100; // Finds the op codes from the limit on the memory (100)
operation = memory[ j ]/100;

//using a switch loop to set up the loops for the cases
switch ( operation ){
case 1: //reads a variable into a word from loc. Enter in -1 to exit
cout <<"\n Input a positive variable: ";
cin >> memory[ operand ]; break;

case 2: // takes a word from location
cout << "\n\nThe content at location " << operand << "is " << memory[operand]; break;

case 3:// loads
accum = memory[ operand ]; break;

case 4: //stores
memory[ operand ] = accum; break;

case 5: //adds
accum = accum + memory[ operand ]; break;


case 6: // subtracts
accum = accum - memory[ operand ]; break;

case 7: //divides
accum = accum / (memory[ operand ]); break;

case 8: // multiplies
accum = accum*memory [ operand ]; break;

case 9: // Branches to location
j = -1; break;

case 10: //branches if acc. is < 0
if (accum < 0)
j = 5;
break;

case 11: //branches if acc = 0
if (accum == 0)
j = 5;
break;

case 12: // Program ends
exit(0); break;
}
j++;
}
return 0;
}

程序B

//Part b finding the sum + avg.

int main()
{
int mem[100];
int operation;
int operand;
int accum = 0;
int pos = 0;

int j;

for (j = 0; j < 100; j++ )
memory[j] = 0;

mem[22] = 7; // loop 7 times
mem[25] = 1; // increment by 1

mem[00] = 4306;

mem[01] = 2303;

mem[02] = 3402;

mem[03] = 6410;

mem[04] = 3412;

mem[05] = 2111;

mem[06] = 2002;

mem[07] = 2312;

mem[08] = 4210;

mem[09] = 2109;

mem[10] = 4001;

mem[11] = 2015;

mem[12] = 3212;

mem[13] = 2116;

mem[14] = 1101;

mem[15] = 1116;

mem[16] = 4300;

j = 0;

while ( true )
{

operand = memory[ j ]%100; // Finds the op codes from the limit on the memory (100)
operation = memory[ j ]/100;

//using a switch loop to set up the loops for the cases
switch ( operation ){
case 1: //reads a variable into a word from loc. Enter in -1 to exit
cout <<"\n enter #: ";
cin >> memory[ operand ]; break;

case 2: // takes a word from location
cout << "\n\nThe content at location " << operand << "is " << memory[operand]; break;

case 3:// loads
accum = memory[ operand ]; break;

case 4: //stores
memory[ operand ] = accum; break;

case 5: //adds
accum = accum + memory[ operand ]; break;


case 6: // subtracts
accum = accum - memory[ operand ]; break;

case 7: //divides
accum = accum / (memory[ operand ]); break;

case 8: // multiplies
accum = accum*memory [ operand ]; break;

case 9: // Branches to location
j = operand; break;

case 10: //branches if acc. is < 0

break;

case 11: //branches if acc = 0
if (accum == 0)
j = operand;
break;

case 12: // Program ends
exit(0); break;
}
j++;
}
return 0;
}

程序 C

///Part c
int main()
{
int mem[100];
int operation;
int operand;
int accum = 0;


int j;

for (j = 0; j < 100; j++ ) //Simply stating that for int j is = to 0, j must be less than 100 because that is the memory limit, and for every pass-through, increment j.
memory[j] = 0;

mem[23] = 1; //decrements 1 place in mem

mem[0] = 1030; // Takes in # of values to be stored.

mem[01] = 4123; // These 4 memory slots check for the largest variable then store
mem[02] = 4134;
mem[03] = 1011;
mem[04] = 3204;

mem[05] = 4005; // These 5 decrement the count+ store + branch.
mem[06] = 4006;
mem[07] = 4007;
mem[08] = 4008;
mem[09] = 4009;

mem[10] = 4010;
mem[11] = 4311; // exits

j = 0; // this is the starting value..

while ( true )
{

operand = memory[ j ]%100; // Finds the op codes from the limit on the memory (100)
operation = memory[ j ]/100;

//using a switch loop to set up the loops for the cases
switch ( operation ){
case 1: //reads a variable into a word from loc. Enter in -1 to exit
cout <<"\n enter #: ";
cin >> memory[ operand ]; break;

case 2: // takes a word from location
cout << "\n\nThe content at location " << operand << "is " << memory[operand]; break;

case 3:// loads
accum = memory[ operand ]; break;

case 4: //stores
memory[ operand ] = accum; break;

case 5: //adds
accum = accum + memory[ operand ]; break;


case 6: // subtracts
accum = accum - memory[ operand ]; break;

case 7: //divides
accum = accum / (memory[ operand ]); break;

case 8: // multiplies
accum = accum*memory [ operand ]; break;

case 9: // Branches to location
j = operand; break;

case 10: //branches if acc. is < 0

break;

case 11: //branches if acc = 0
if (accum == 0)
j = operand;
break;

case 12: // Program ends
exit(0); break;
case 13: // checks > than
if (accum < mem[operand])
accum = mem[operand];
break;
}
j++;
}
return 0;
}

最佳答案

您的整个代码中都有神奇的数字。你应该这样做:

const int OP_LOAD = 3;
const int OP_STORE = 4;
const int OP_ADD = 5;
...

const int OP_LOCATION_MULTIPLIER = 100;

mem[0] = OP_LOAD * OP_LOCATION_MULTIPLIER + ...;
mem[1] = OP_ADD * OP_LOCATION_MULTIPLIER + ...;

operand = memory[ j ] % OP_LOCATION_MULTIPLIER;
operation = memory[ j ] / OP_LOCATION_MULTIPLIER;

关于c++ - 在我的 C++ 程序中寻找一些输入。 Simpletron,机器语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2412132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com