#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define N 10
#define TEMPSIZE 1024
int DiagSum(int **p, int sizearray) {
int sum=0;
for (int i = 0; i < sizearray; i++) {
for (int j = 0; j < sizearray; j++) {
if (j == i) {
sum = sum + p[i][j];
}
}
}
return sum;
}
int SizeArray(int **p) {
int i;
for (i = 0; i < TEMPSIZE; i++) {
if (p[i] == ' ' || p[i]=='\t')
i++;
}
return p[i];
}
void main() {
int **p;
int input;
int sizear=0;
int i, j, counter = 0;
p = (int**)malloc(N * sizeof(int*));
for (j = 0; j < N; j++)
p[j] = (int*)malloc(N * sizeof(int));
while ((input = getchar()) != EOF || input != '\n') {
if (input == ' ' || input == '\t')
continue;
input = input - '0';
sizear = SizeArray(p);
for (i = 0; i < sizear; i++)
{
for (j = 0; j < sizear; j++)
{
p[i][j] = input - '0';
counter++;
}
}
if (counter > sizear*sizear) {
printf("you've entered too many numbers \n");
}
else if (counter < sizear*sizear) {
printf("you've entered not enough numbers \n");
}
for (i = 0; i < sizear; i++)
{
for (j = 0; j < sizear; j++)
{
printf("%c ", p[i][j]);
}
}
}
完全にスタックされています。私の割り当てでは、ユーザーからの入力を1行にするように求められます。それは行列のサイズ(n * n)で構成され、それはその行の最初の数字とその中の数字になります。例:3 1 2 3 4 5 6 7 8 9. 3(最初の数字) - 行と列の後に続く数字は、マトリックス内の数字になります。最初の間違いがあり、最も重要なことは、配列のサイズとなる最初の数字を抽出できないことです.2番目は恐らく行列への入力が悪いでしょう。どのように修正する必要がありますか?2d配列でユーザからの入力を受け取ります
なぜ静的サイズ( 'N')を使用する場合は動的割り当てを使用しますか? – Stargateur
@Stargateurそれは私たちのインストラクターの推薦でした。 Nは配列の最大サイズを示す一時的な数値です。 – Nadia
'SizeArray'は' p [i] == '''をチェックします。 'p'は整数の2次元配列です。 'p [i]'と 'char'とを比較することはできません –