0

理論的には「動作するはず」のコード (私は学生です) がありますが、Microsoft の Visual Studio 2010 では srand に問題があるようです。他の予約名のように強調表示されていないためです。

srand を削除するAuto_Complete_Matrixと、コードは問題なくコンパイルされます。

関数 Auto_Complete_Matrix

エラー 2 error C2143: error de sintaxis : ';' がありません 「タイプ」 c:\users\jorgee!\desktop\uade\program の前。1\proyectos\tp3-matrices\ejercicio 2\main.c 46 1 ejercicio 2

stdlib と time ライブラリを含めました。

助けてくれてありがとう。

/* 2.   Realizar una función que determine si una matriz cuadrada de dimensión N 
es simétrica con respecto a su diagonal principal. */


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>

#define FIL 5
#define COL 5

int True_False( char *message );
int Auto_Complete_Matrix( int matrix[ FIL ][ COL ] );
int Manual_Complete_Matrix( int matrix[ FIL ][ COL ] );
void Print_Matrix( int matrix[ FIL ][ COL ] );

int main () {
    int matrix[ FIL ][ COL ];
    if( True_False( "Desea autocompletar la Matriz con números al azar? <Si / No> \n\n" ) ) {
        Auto_Complete_Matrix( matrix );
    }
    else {
        Manual_Complete_Matrix( matrix );
    }
    Print_Matrix( matrix );
    system( "pause" );
}

int True_False( char *message ) {
    char Answer[3];
    fputs( message, stdout );
    fgets( Answer, 3, stdin );
    if ( Answer[0] == 1 ) {
        return 1;
    }
    if ( strncmp( Answer, "Si", 2 ) == 0 || strncmp( Answer, "si", 2 ) ) {
        return 1;
    }
    return 0;
}

int Auto_Complete_Matrix ( int matrix[ FIL ][ COL ] ) {

    srand(time(0));
    int i, j;

    for ( i = 0; i < FIL; i ++ ) {
        for ( j = 0; j < COL; j ++ ) {
            matrix[i][j] = rand() % (100 - 0 + 1) + 0;
        }
    }
    return 0;
}

int Manual_Complete_Matrix( int matrix[ FIL ][ COL ] ) {

    int i, j;

    for ( i = 0; i < FIL; i++ ) {
        for ( j = 0; j < COL; j++ ) {
            while( fscanf( stdin, "%d", matrix[i][j] ) != 1 ) {
                fflush( stdin );
                continue;
            }
        }
    }
}

void Print_Matrix( int matrix[ FIL ][ COL ] ) {
    int i, j;
    for( i = 0; i < FIL; i++) {
        for( j = 0; j < COL; j++ ) {
            printf( "%5d", matrix[i][j] );
        }
        puts("\n");
    }
}
4

1 に答える 1

1

(C++ ではなく) C としてコンパイルされたファイルでは、すべての変数を外側のスコープ (つまり、この場合は周囲の中括弧) の先頭で宣言する必要があります。ここでは、'int i, j' 宣言ステートメントの前に関数 (srand) を呼び出しています。

于 2012-07-01T00:18:13.253 に答える