#include <stdio.h>
#include <string>
int main(){
float a,b,z,u,r,k;
char f,q,m;
system("color B");
repeat:
printf("Unesite broj a: ");
scanf("%f",&a);
repeatm:
printf("Unesite broj b: ");
scanf("%f",&b);
printf("Unesite funkciju (+,-,*,/): ");
finput:
scanf("%s",&f);
if(f=='+'){
goto zbroj;
}else{
if(f=='-'){
goto razlika;
}else{
if(f=='*'){
goto umnozak;
}else{
if(f=='/'){
goto kolicnik;
}else{
goto _newf;
}
}
}
}
//input of numbers and a check if the value of 'f' is one of the characters +,-,* or /
zbroj:
z=a+b;
printf("-------------------------------------\n");
printf("Zbroj ta dva broja je: ");
printf("%f \n",z);
goto _new;
razlika:
r=a-b;
printf("-------------------------------------\n");
printf("Razlika ta dva broja je: ");
printf("%f \n",r);
goto _new;
umnozak:
u=a*b;
printf("-------------------------------------\n");
printf("Umnozak ta dva broja je: ");
printf("%f \n",u);
goto _new;
kolicnik:
if(b==0){
system("cls");
printf("Ne mozete dijeliti s nulom \n");
goto repeatB;
}else{
k=a/b;
printf("-------------------------------------\n");
printf("Kolicnik ta dva broja je: ");
printf("%f \n",k);
goto _new;
}
//prints results
_newf:
printf("Nevazeca funkcija, upisite ponovo: ");
goto finput;
//loop if 'f' isnt one of +,-,*,/
_new:
printf("-------------------------------------\n");
printf("Novi racun?(y/n) ");
scanf("%s",&q);
system("cls");
goto repeat1;
//asks if i want to exit or go back to start
repeat1:
if(q=='y'){
system("cls");
goto memory;
}else{
if(q=='n'){
goto exit;
}else{
printf("Novi racun? \n");
printf("Molimo upisite y ili n: ");
scanf("%s", &q);
goto repeat1;
}
}
//loops back to start
memory:
printf("Zelite li iskoristits peredhodni rezultat kao broj a?(y/n): ");
scanf("%s", &m);
//asks if i want the previous result as the number 'a'
repeat2:
if(m=='y'){
system("cls");
goto printfa;
}else{
if(m=='n'){
system("cls");
goto repeat;
}else{
printf("Zelite li iskoristits peredhodni rezultat kao broj a? \n");
printf("Molimo upisite y ili n: ");
scanf("%s", &m);
goto repeat2;
}
}
//checks if variable 'm' is either y or n
printfa:
if(f=='+'){
a=z;
}else{
if(f=='-'){
a=r;
}else{
if(f=='*'){
a=u;
}else{
if(f=='/'){
a=k;
}
}
}
}
//this should(?) overwrite the variable 'a'
//why isnt 'a' overwritten with the value of 'z', 'r', 'u' or 'k' here?
printf("Broj a je: %f \n", a);
//here the value of 'a' stays the same as it was before
goto repeatm;
repeatB:
printf("Unesite broj b: ");
scanf("%f",&b);
goto kolicnik;
exit:
system("cls");
system("pause");
return(0);
}
有什么方法可以用值“ z”,“ r”,“ u”或“ k”之一覆盖变量“ a”(无手动输入)。该代码的结果只是一个+(或-,*,/)新b(我再次手动输入,但变量a与第一个输入相同)。请不要介意外语,它只是说“输入a”,“输入b”,“结果是..”,如果代码凌乱也很抱歉。
答案 0 :(得分:1)
我只能间接地回答问题,因为直到我对代码稍加整理之后才开始研究实际的问题-但现在我没有得到错误。因此,答案是:清理代码,它可能会按预期工作。
我一直将结果保存在不同的变量中,尽管程序中现在不需要有多个HKCR:\\*
HKCR:\`*
'HKCR:\*'
变量。该程序的主要流程应与您的原始流程相似,但现在阅读起来有点容易:
result