[英]Checking a command line for string
因此,该项目的目标是在命令行中询问选民的姓名。 然后它应该提示用户投票的人数。 在提示用户投票后(提示用户投票的次数应等于选民人数),如果输入了命令行中未提及的名称,则应显示无效并重新提示用户。 我不确定我做错了什么。
这是终端外观的示例。
$ ./plurality Alice Bob
Number of voters: 3
Vote: Alice
Vote: Charlie
Invalid vote.
Vote: Alice
Alice
这是我的代码
#include <cs50.h>
#include <stdio.h>
#include <string.h>
int x;
int main (int argc, string argv[]) //command line for candidates
{
int num_vote = get_int("Number of voters: "); //number of voters
string vote;
// loop that asks for who to vote for, if name matches argv[] move on, else check through the rest of argv{}
while ( x < num_vote)
{
vote = get_string("Vote: ");
if (strcmp(argv[x],vote))
{
x++;
}
//checks all of argv, if nothing found prompts user again and checks again
else if ((x + 1) == num_vote && (!strcmp(argv[x],vote)))
{
printf("Invalid vote.");
num_vote -= 1;
}
}
}
如果我很好地理解了这个问题,那么您就是在混淆选民人数和投票人数。
在给定的循环中,您使用变量 x 循环以获取用户的输入,而在if (strcmp(argv[x],vote))
行中,您正在使用它来访问 argv 数组。
因此,首先您应该通过循环 throw argv 来计算投票者的数量,然后在每次迭代中对其进行循环以查明其中是否包含给予者姓名。
这是我的工作 cSharp 代码,用于在输入错误的情况下重新提示希望它会有所帮助
int age;
Console.WriteLine("\n Enter yhour age");
while (!int.TryParse(Console.ReadLine(), out age))
{
Console.WriteLine
("You have entered an invalid number please enter again");
continue;
}
{
Console.WriteLine
("yourage is " + (age));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.