【发布时间】:2015-10-27 00:45:02
【问题描述】:
我正在尝试创建一个程序,使用函数和数组计算每个数字(范围从 0 到 9)出现的次数。以下是我得到的指示:
编写一个程序,要求用户输入一个仅包含 0 到 9 之间数字的 NxM 维数组,并计算 10 位数字中的每一位在数组中出现的次数。
这个程序应该:
● 提示用户输入数组的大小(行和列),并读取维度
● 提示用户逐行输入数组并读取每一行并验证用户输入的值是否介于 0 和 9 之间。如果输入的值超出此范围,程序应提示用户输入再次进入该行
● 显示每个数字在数组中出现的总次数
程序的输出应该如下所示(以防万一): 此程序计算 NxM 数组中数字 0 到 9 的出现次数
*输入数组的大小:2 6
*输入第0行:0 1 2 3 4 5
*输入第1行:0 1 6 72 81 9
值超出范围。
*输入第1行:0 1 6 7 8 9
每个数字的总计数:
数字 0 出现 2 次p>
数字 1 出现 2 次p>
第 2 位出现 1 次
第 3 位出现 1 次
第 4 位出现 1 次
第 5 位出现 1 次
第 6 位出现 1 次
第 7 位出现 1 次
第 8 位出现 1 次
第 9 位出现 1 次
*用户输入
到目前为止,这是我的程序:
#include<stdio.h>
#include<stdbool.h>
int read_row(int x, int y, int a[x][y]) /*function read_row reads in each row (including the prompt and retrieving the values). */
{
printf("Enter the size of your array:");
scanf("%d %d", &x, &y);
a[x][y] = 10; // x is the row count while y is the number of digits inputted
while (x < 10 && y < 10)
{
printf("Enter row %d:", x);
x++;
}
return x;
}
bool check_input(int x, int y) /*function check_input verifies that the user has not entered values outside the range 0 through 9. The function returns true if the range is ok and false otherwise. */
{
if (x > 9)
return false;
else
return true;
if (y > 9)
return false;
else
return true;
}
int compute_row_count(int x, int y, int a[x][y], int count) /*function compute_row_count counts the number of time each digit occurs in an individual row. */
{
a[x][y] = 0;
for (x = 0; x < 10; x++)
{
for (y = 0; y < 10; y++)
{
while (y > 0)
{
count = y % 10; // count reads and calculates the number of times a digit occurs in each row
y /= 10;
}
a[y] = y;
}
}
return a[x][y];
}
int print_total_count(int x, int y, int a[x][y], int count) /*function print_total_count prints out the total count for each digit. Note the difference between printing “1 time” and “2 times”. */
{
printf("Total count for each digit:\n");
a[x][y] = 10;
for (y = 0; y < 10; y++)
{
if (count <= 1)
printf("Digit %d occurs %d time\n", y, count);
if(count >= 2 && y < 10)
printf("Digit %d occurs %d times\n", y, count);
}
return (y, count);
}
int main (void) /* I mainly need help on compute_row_total and print_total_count. Once I can figure those two out, I should be able to set this part up correctly, so no need to worry about this part */
{
int x, y, a[x][y], count;
read_row(x, y, a[x][y]);
if (check_input(x,y))
printf("Values are outside of range.");
else
break;
compute_row_count(x, y, a[x][y], count);
print_total_count(x, y, a[x][y], count);
return 0;
}
我将 compute_row_count 函数留空,因为我不明白我是否遗漏了任何其他计算或有不准确的计算...一旦我完成了 compute_row_count 和 print_total_count,我应该能够完成 int main(void) from那里。 (所以不用担心在这部分帮助我)。但是,我确实需要有关计算和 print_total 的认真帮助...所以请帮助我。
【问题讨论】:
-
你的代码问题太多了。您的编译器没有报告任何错误吗?
-
我确实看到类似“预期的'int (*)[(sizetype)(y)]'但参数是'int'类型”和“传递'compute_row_count'的参数3使指针来自没有强制转换的整数”......但我没有使用指针?很抱歉,但我不太清楚这些错误...
-
我认为这个问题对于 SO 来说太宽泛了。我并不是要不礼貌,但是您的代码表明您真的不了解 2D 数组在 C 中是如何工作的(以及 C 编程的其他几个方面),并且 SO 帖子不是教您这个概念的地方从头开始。我想我所能建议的就是多花点时间在你的教科书和/或导师身上。
-
在 main 处输入
x,y。在read_row中使用check_input。