#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]);
}
}
}
완전히 고정되었습니다. 내 임무는 사용자에게 한 줄만 입력하도록 요청합니다. 행렬의 크기 (n * n)로 구성되며 그 행의 첫 번째 숫자와 숫자가됩니다. 예 : 3 1 2 3 4 5 6 7 8 9. 3 (첫 번째 숫자) - 행과 열 다음에 오는 숫자는 행렬 안의 숫자입니다. 첫 번째 실수는 가장 중요한 것이 배열 크기가 될 첫 번째 숫자를 추출 할 수 없다는 것입니다. 두 번째는 아마 매트릭스에 잘못된 입력입니다. 어떻게 수정해야합니까?사용자로부터 2 차원 배열로 입력 받기
왜 정적 크기 ('N')를 사용하는 경우 동적 할당을 사용합니까? – Stargateur
@Stargateur 그건 강사의 추천입니다. N은 배열의 최대 크기를 나타내는 임시 번호입니다. – Nadia
'SizeArray'는'p [i] == '''를 검사합니다.'p'는 정수의 2 차원 배열입니다. 'p [i]'는'char'와 비교 될 수 없습니다 –