Программа, которая объявляет двумерный массив - PullRequest
0 голосов
/ 11 июля 2019

Я пишу программу, которая объявляет двумерный массив, имя которого mynumbers. Программа должна статически инициализировать 8 элементов массива mynumbers и отобразить 1. наименьший элемент 2. самый большой элемент

Вот что я пробовал.

#include <stdio.h>
int main(){
     int mynumbers[2][4]={{17,27,13,32},{18,52,19,62}};
     int largenum = mynumbers[1][2];
     int leastnum = mynumbers[0][1];
     if(mynumbers[0][0]>largenum)
     {
         largenum = mynumbers[0][0];
     }
     else largenum =largenum;
     if(mynumbers[0][1]>largenum)
     {
         largenum = mynumbers[0][1];
     }
     else largenum =largenum;
     if(mynumbers[0][2]>largenum)
     {
         largenum = mynumbers[0][2];
     }
     else largenum =largenum;
     if(mynumbers[0][3]>largenum)
     {
         largenum = mynumbers[0][3];
     }
     else largenum =largenum;
     if(mynumbers[1][0]>largenum)
     {
         largenum = mynumbers[1][0];
     }
     else largenum =largenum;
     if(mynumbers[1][1]>largenum)
     {
         largenum = mynumbers[1][1];
     }
     else largenum =largenum;
     if(mynumbers[1][2]>largenum)
     {
         largenum = mynumbers[1][2];
     }
     else largenum =largenum;
     if(mynumbers[1][3]>largenum)
     {
         largenum = mynumbers[1][3];
     }
     else largenum =largenum;
     {
         printf("the largest number is :%d/n",largenum);
     }
     //else leastnum =leastnum;
     if(mynumbers[0][0]<leastnum)
     {
         leastnum = mynumbers[0][0];
     }
     else leastnum =leastnum;
     if(mynumbers[0][1]<leastnum)
     {
         leastnum = mynumbers[0][1];
     }
     else leastnum =leastnum;
     if(mynumbers[0][2]<leastnum)
     {
         leastnum = mynumbers[0][2];
     }
     else leastnum =leastnum;
     if(mynumbers[0][3]<leastnum)
     {
         leastnum = mynumbers[0][3];
     }
     else leastnum =leastnum;
     if(mynumbers[1][0]<leastnum)
     {
         leastnum = mynumbers[1][0];
     }
     else leastnum =leastnum;
     if(mynumbers[1][1]<leastnum)
     {
         leastnum = mynumbers[1][1];
     }
     else leastnum =leastnum;
     if(mynumbers[1][2]<leastnum)
     {
         leastnum = mynumbers[1][2];
     }
     else leastnum =leastnum;
     if(mynumbers[1][3]<leastnum)
     {
         leastnum = leastnum[1][3];
     }
     else leastnum =leastnum;
     {
         printf("the smallest number is :%d/n",leastnum);
     }
}

я получаю следующие ошибки

 ||=== Build file: "no target" in "no project" (compiler: unknown) ===|
C:\Users\Admin\Documents\Untitled1.c||In function 'main':|
C:\Users\Admin\Documents\Untitled1.c|87|error: subscripted value is neither array nor pointer nor vector|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

1 Ответ

3 голосов
/ 11 июля 2019

При компиляции вы получаете следующую ошибку: error: subscripted value is neither array nor pointer nor vector leastnum = leastnum[1][3];, что достаточно ясно, потому что вы объявили и инициализировали leastnum как int, а не int[][].Затем вы можете написать leastnum = mynumbers[1][3].

Также вы упускаете хорошую возможность использовать циклы: вы вручную сравниваете каждое значение вашего двумерного массива.Вот как вы можете сжать все ваши if else условия:

#include <stdio.h>

int main(void){
    int mynumbers[2][4]={
        {17,27,13,32},
        {18,52,19,62}
    };
    int min = **mynumbers; // <=> int min = mynumbers[0][0]
    int max = **mynumbers;

    int row = sizeof(mynumbers) / sizeof(mynumbers[0]); // = (8*4) / (4*4) = 2
    int column = sizeof(mynumbers[0]) / sizeof(int); // = (4*4) / 4 = 4

    for(int i=0; i<row; i++){ 
        for(int j=0; j<column; j++){
            if(mynumbers[i][j] < min) min = mynumbers[i][j];
            if(mynumbers[i][j] > max) max = mynumbers[i][j];
        }
    }
    printf("Min: %d\nMax: %d\n", min, max);
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...