C++运用程序中变量的重命名问题

Akatinglory 2020-04-23 11:14:27
自己写的一个很简单的小程序,我想要做到判断条件进行重命名,但是我想要的是比如:变量i%64==0的情况下,执行重命名指令,newname要用(i/64+1)这个值,每次这个点都会报错,自己自学不是很清楚所有康康有没有哪位大佬解答一下。以下是部分相关代码:
#include <iostream>
#include <fstream>
#include <io.h>
#include <stdio.h>
using namespace std;
int main()
{
int a,b,y,z,m,n,p,i;
double x;
fstream ftxt;
cout<<"请输入基数"<<endl;
cin>>a;
cout<<"请输入高低音部"<<endl;
cin>>m;
if(m==1)
{
begin1:
cout<<"请输入你需要的倍数"<<endl;
cin>>x;
cout<<"请输入音符位置"<<endl;
cin>>n;
if(n==-2)
{
cout<<"输入位置"<<endl;
cin>>p;
if(p==1)
z=55;
if(p==2)
z=57;
goto begin3;
}
else if(n==-1)
{
cout<<"输入位置"<<endl;
cin>>p;
if(p==1)
z=59;
if(p==2)
z=60;
goto begin3;
}
else if(n==1)
{
cout<<"输入位置"<<endl;
cin>>p;
if(p==1)
z=62;
if (p==2)
z=64;
goto begin3;
}
else if(n==2)
{
cout<<"输入位置"<<endl;
cin>>p;
if(p==1)
z=65;
if(p==2)
z=67;
goto begin3;
}
else if(n==3)
{
cout<<"输入位置"<<endl;
cin>>p;
if(p==1)
z=69;
if(p==2)
z=71;
goto begin3;
}
else if(n==4)
{
cout<<"输入位置"<<endl;
cin>>p;
if(p==1)
z=72;
if(p==2)
z=74;
goto begin3;
}
else if(n==5)
{
cout<<"输入位置"<<endl;
cin>>p;
if(p==1)
z=76;
if(p==2)
z=77;
goto begin3;
}
else if(n==6)
{
cout<<"输入位置"<<endl;
cin>>p;
if(p==1)
z=79;
if(p==2)
z=81;
goto begin3;
}
else if(n==7)
{
cout<<"输入位置"<<endl;
cin>>p;
if(p==1)
z=83;
if(p==2)
z=84;
goto begin3;
}
else if(n==8)
{
cout<<"输入位置"<<endl;
cin>>p;
if(p==1)
z=86;
if(p==2)
z=88;
goto begin3;
}
else if(n==9)
{
cout<<"输入位置"<<endl;
cin>>p;
if(p==1)
z=89;
if(p==2)
z=91;
goto begin3;
}
else if(n==10)
{
cout<<"输入位置"<<endl;
cin>>p;
if(p==1)
z=93;
if(p==2)
z=95;
goto begin3;
}
begin3:
y=x*8;
b=y+a;
ftxt.open("MC.txt",ios::out|ios::app);
ftxt<<"execute @e[score_1_min="<<b<<",score_1="<<b<<"] ~ ~ ~ function 掉落钢琴:"<<z<<"c"<<endl;
ftxt.close();
i=b-8;
/*该位置进行重命名的判断和执行*/
getchar();
a=b;
goto begin1;
}

...全文
409 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
可以用std::string
string filename = "MC" + to_string(i%64+1) + ".txt";
Akatinglory 2020-05-02
  • 打赏
  • 举报
回复
引用 1 楼 draculamx 的回复:
这个 else if 配合 goto,很是秀啊。。。考虑下 switch 语句?? begin1这个块,可以换成循环语句。。 我没有看到你重命名的那行代码在哪里。。
哈哈哈其实确实是比较麻烦但是我做的是一个根据音符位置输出语句的乐谱转换,那个音符的变化比较多做循环语句有局限性,而且本人学的时候switch那节课没好好听哈哈哈所以这个语句不熟练。 然后重命名的语句我就没写,我就是想问一下怎么写,我现在倒是会了,但是是麻烦的
		if(i%64==0&&i>0)
		{
			/* prompt for file to rename and new name */
			cout<<"请输入原名称"<<endl;
			cin>>oldname;
			cout<<"请输入新名称"<<endl;
			cin>>newname;
			rename(oldname, newname);
			if(rename(oldname, newname)==-1)
				goto begin1;
			else if(rename(oldname, newname)==0)
				cout<<"重命名失败"<<endl;
		}
这个虽然做到了我要的改名但是需要手动输入名称,而不是我想要的这个“i%64+1”算出来的值直接作为新的文件名称,所以先用这个代替一下
draculamx 2020-04-27
  • 打赏
  • 举报
回复
这个 else if 配合 goto,很是秀啊。。。考虑下 switch 语句?? begin1这个块,可以换成循环语句。。 我没有看到你重命名的那行代码在哪里。。
1引言 2语法 2.1脚本、命令和单词符号 2.2置换(substitution) 2.2.1变量置换(variable subtitution) 2.2.2命令置换(command substitution) 2.2.3反斜杠置换(backslash substitution) 2.2.4双引号和花括号 2.3注释 3变量 3.1简单变量 3.2数组 3.3相关命令 3.3.1set 3.3.2unset 3.3.3append和incr 4表达式 4.1操作数 4.2运算符和优先级 4.3数学函数 5List 5.1list命令 5.2concat命令: 5.3lindex命令 5.4llength命令 5.5linsert命令 5.6lreplace命令: 5.7lrange 命令: 5.8lappend命令: 5.9lsearch 命令: 5.10lsort命令: 5.11split命令: 5.12join命令 6控制流 6.1if命令 6.2循环命令:while 、for、 foreach 6.2.1while命令 6.2.2for命令 6.2.3foreach命令 6.2.4break和continue命令 6.2.5switch 命令 6.1eval命令 6.2source命令 7过程(procedure) 7.1过程定义和返回值 7.2局部变量和全局变量 7.3缺省参数和可变个数参数 7.4引用:upvar 8字符串操作 8.1format命令 8.2scan命令 8.3regexp命令 8.4regsub命令 8.5string命令 8.5.1string compare ?-nocase? ?-length int? string1 string2 8.5.2string equal ?-nocase? ?-length int? string1 string2 8.5.3string first string1 string2 ?startindex? 8.5.4string index string charIndex 8.5.5string last string1 string2 ?startindex? 8.5.6string length string 8.5.7string match ?-nocase? pattern string 8.5.8string range string first last 8.5.9string repeat string count 8.5.10string replace string first last ?newstring? 8.5.11string tolower string ?first? ?last? 8.5.12string toupper string ?first? ?last? 8.5.13 string trim string ?chars? 8.5.14string trimleft string ?chars? 8.5.15string trimright string ?chars? 9文件访问 9.1文件名 9.2基本文件输入输出命令 9.3随机文件访问 9.4 当前工作目录 9.5文件操作和获取文件信息 10错误和异常 10.1错误 10.2从TCL脚本产生错误 10.3使用catch捕获错误 10.4其他异常 11深入TCL 11.1查询数组的元素 11.2 info命令 11.2.1变量信息 11.2.2过程信息 11.2.3命令信息 11.2.4 TCL的版本和库 11.2.5 命令的执行时间 11.2.6 跟踪变量 11.2.7 命令的重命名和删除 11.2.8 unknown命令 11.2.9自动加载 12历史记录 13TCL和C\C++ 13.1生成自己的TCLSH 13.2扩展自己的命令:方法(一) 13.2.1编写扩展命令对应的C/C++过程 13.2.2注册命令 13.2.3命令返回值和命令对应的过程的返回值 13.3扩展自己的命令:方法(二) 13.3.1Tcl_Obj结构 13.3.2编写扩展命令对应的C/C++过程 13.3.3注册命令 13.4利用clientData参数和deleteProc参数 13.5在C/C++应用程序嵌入TCL 14总结

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧