我有一些值是多维数组的偏移量,看起来像这样:
static const int TILE_SIZE = 32;
int Offset2D = (y * TILE_SIZE) + (x * TILE_SIZE);
int Offset3D = (y * TILE_SIZE) + (x * TILE_SIZE) + (z * TILE_SIZE);
Run Code Online (Sandbox Code Playgroud)
现在我想要做的是将偏移量转换为x,y,z对,如下所示:
void ConvertBack(int offset,int size,int& x,int& y,int& z)
{
//What's wrong with this code ?
x = offset / size;
y = offset % size;
z = ??; //How to get Z?
}
Run Code Online (Sandbox Code Playgroud)
要么
//Get back offsets from any dimension ?
void ConvertBackComplex(unsigned int offset,int size,int* vector,int len)
{ …Run Code Online (Sandbox Code Playgroud) 嗨,我有一个像这样的字符串:
字1 - 选项 - 单词2 - 标签 - WORD3 - 标签 - word4 - 标签 - 的word5 - 标签 - word6
我需要从字符串中提取第三个单词.我想到了逐字逐句阅读并在阅读第二个标签后获得了这个词.但我想它效率低下.你能告诉我一个更具体的方法吗?
好吧,我有一个用户定义的类型命名fraction,它代表普通分数与分子和分母.这是代码:
class Fraction
{
private:
int numerator;
int denominator;
public:
Fraction(int numer,int denom)
:numerator(numer),denominator(denom){}
int get_denom(){return denominator;}
int get_numer(){return numerator;}
};
Run Code Online (Sandbox Code Playgroud)
如您所见,它在头文件中完全实现.
所以我想要做的就是使用排序算法对分数进行排序.这是重载"<"运算符的代码(注意:它与Fraction类放在同一个文件中,但在类之外):
bool operator<(Fraction& first,Fraction& second)
{
if(first.get_denom() == second.get_denom())
{
return first.get_numer()<second.get_numer()?true:false;
}
int first_num=first.get_denom();
int second_num=second.get_denom();
int lcm=(first_num*second_num)/gcd(first_num,second_num);
int first_new_numerator=(lcm/first_num)*first.get_numer();
int second_new_numerator=(lcm/second_num)*second.get_numer();
return first_new_numerator<second_new_numerator?true:false;
}
Run Code Online (Sandbox Code Playgroud)
它的作用是检查分母是否相等,如果它们是测试分子的值.如果它们不相等,则使用最小公倍数和gcd来均衡它们.
当我想在main(编译时错误)中使用排序算法时,真正的问题就开始了.这是主要的代码:
Fraction parse_fraction(string& input)
{
stringstream fraction_string(input);
int numer;
fraction_string>>numer;
char seperator;
fraction_string>>seperator;
int denom;
fraction_string>>denom;
return Fraction(numer,denom);
}
int main()
{
vector<Fraction> fractions;
string input;
while(cin>>input)
{
if(input=="|") …Run Code Online (Sandbox Code Playgroud) 我最近开始使用 Xamarin 使用 C# 构建 Android 应用程序。我遇到的一个问题让我很难取得任何进展: 错误 CS0117
我有两个相同的项目,问题只出现在其中一个中。它最初发生在两者中,但重建几次修复了第一个。第二个似乎更持久。我真的需要找到解决这个问题的方法,因为引用是非常基本的和需要的。更不用说,它发生在每个新项目中。这是我的代码: NoteMath
using System;
using Android.App;
using Android.Content;
using Android.Widget;
using Android.OS;
namespace NoteMath_v1._0._1
{
[Activity(Label = "noteMath", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
Window.RequestFeature(Android.Views.WindowFeatures.NoTitle);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
EditText etInput = FindViewById<EditText>(Resource.Id.etInput);
TextView tvConsole = FindViewById<TextView>(Resource.Id.tvConsole);
etInput.KeyPress += (object sender, EditText.KeyEventArgs e) =>
{
e.Handled = false;
if (e.Event.Action == Android.Views.KeyEventActions.Down …Run Code Online (Sandbox Code Playgroud) 我想执行列求和,一旦达到某个阈值,我想删除到目前为止的总和值,不允许它为接下来的3个步骤添加任何新值,但我不知道如何做到这一点.有人能帮我吗.这是我到目前为止所拥有的.
for (i = 0; i < col; i++){
sumC = 0;
for (j = 0; j < row; j++)
{
sumC += matrix[j][i];
if(sumC>1.5){
sumC=0;
}
}
}
Run Code Online (Sandbox Code Playgroud) 我编写了一个部署在多台机器上的程序。我想要一种监视它们是否正在运行的方法。假设这是不可能的,有没有办法让我的程序向我的电脑发送一条消息Hey I'm running!或其他内容?任何想法都可以提供帮助。
我有一个元组列表seg = [(874, 893), (964, 985), (1012, 1031)]和一个索引.我想检查索引是否在这些元组的范围内,例如,876while 870不是.
我这样做的代码如下:
if [x for (x, y) in seg if x <= index <= y]:
print ("index inside the segment")
Run Code Online (Sandbox Code Playgroud)
但是,如果索引位于列表seg的第一个第二个段中,我也想返回.
例如,对于index = 876返回1和index = 1015返回3.
我怎么能这样做?
所以我正在开发一个Tic-Tac-Toe游戏,对于我的输入函数,我得到的是移动播放器作为一个整数存储在一个二维数组中,输入是通过引用指向位置的一维指针获得的在2D数组中.
但是我的问题是,当我似乎通过使用指针将多维数组的平方值设置为某个东西时,没有任何反应.
这是输入功能:
void Game::input(Board b){
int *spots[9]; // Possible spots for the input
bool validInput = false;
spots[0] = &b.board[2][0];
spots[1] = &b.board[2][1];
spots[2] = &b.board[2][2];
spots[3] = &b.board[1][0];
spots[4] = &b.board[1][1];
spots[5] = &b.board[1][2];
spots[6] = &b.board[0][0];
spots[7] = &b.board[0][1];
spots[8] = &b.board[0][2];
redo:
cout << ">> " << endl;
int input; // Input
cin >> input; // Get the input
validInput = cin;
if(!validInput){
cout << "Numbers only please!" << endl;
cin.clear();
while(cin.get() != '\n');
goto redo; …Run Code Online (Sandbox Code Playgroud) 我正在尝试将变量的输出重定向并写入文件,但只有输出的最后一行显示在我正在写入的文件中.但是当我对变量进行打印时,我会得到所有我期望的行.
rds = boto3.client('rds')
rds_instances = rds.describe_db_instances()['DBInstances']
for databases in rds_instances:
arns = ("{0}".format(databases['DBInstanceArn']))
# print (arns)
f = open('/tmp/arns', 'a')
f.write(arns)
f.close()
Run Code Online (Sandbox Code Playgroud)
我打印的示例输出我得到多个rds arn:
arn:aws:rds:us-east-1:222222222222:db:databasename01
arn:aws:rds:us-east-1:222222222222:db:databasename02
arn:aws:rds:us-east-1:222222222222:db:databasename03
Run Code Online (Sandbox Code Playgroud)
但是,当我检查文件时,我写的只有:
arn:aws:rds:us-east-1:222222222222:db:databasename03
Run Code Online (Sandbox Code Playgroud) 我编写了一个简单的GUI,引导用户完成签出/签入过程,然后在用户单击GUI按钮时运行bash脚本.
我想在GUI中创建一个字段并显示脚本的输出.现在我正在使用system()(stdio)来运行脚本,但是将脚本的输出传递给我gui中的文本字段似乎很乱.
使用QProcess是一种更好的方法吗?如果是这样,我将如何开始?
另外,你会推荐什么Qt Widget /容器?