2-D массив в C для хранения пользовательских данных - PullRequest
0 голосов
/ 30 марта 2020

всего C новичка ie здесь. Заранее спасибо за любую помощь.

Мне необходимо написать код, который имеет следующие свойства:

  1. Попросить пользователя ввести количество строк и столбцов, которые они хотели бы в своих 2 -D массив
  2. создает двумерный массив с таким количеством строк и столбцов для хранения целых чисел
  3. заполняет массив случайными числами от 1 до 1000
  4. , выводит наибольшее число в массиве

Вот где я мог бы go сейчас:

#include <stdio.h>

int main(){

 int rows;
 int columns;

 scanf("%d", &rows);
 scanf("%d", &columns);
 }

Что мне делать? Извините за очень открытый вопрос, я застрял и не знаю, что делать. Ориентир будет идеальным. Спасибо:)

РЕДАКТИРОВАТЬ:

Спасибо за руководство, вот как я решил: РЕШЕНИЕ:

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

int main () {
    //Declare variables
    int a,b,k,l,big,z[100][100];
    //Ask user input
    printf("ENTER ROWS & COLUMNS\n");
    scanf("%d\n%d", &a, &b);
    //Randomize array values
    srand(time(NULL));
    big = 1;
    for (k=0;k<a;k++){
        for(l=0;l<b;l++){
            z[k][l]=rand()%1000 + 1;
            if(z[k][l]>big) big=z[k][l];
            printf("%d\t", z[k][l]);
        }
        printf("\n");
    }
    //Print biggest number
    printf("\nBIGGEST NUMBER IN THE ARRAY: %d", big);
    return 0;
}

Ответы [ 2 ]

2 голосов
/ 30 марта 2020

Ориентир будет идеальным.

окей ... давайте go ...

  1. Попросим пользователя ввести число строк и столбцов, которые им нужны в их двумерном массиве

Используйте scanf или лучше fgets, за которым следует sscanf

создает двумерный массив с таким количеством строк и столбцов для хранения целых чисел

Использование malloc (поиск по net для поиска правильного mallo c a 2D массив "или просто посмотрите Правильно размещенные многомерные массивы )

заполняет массив случайными числами от 1 до 1000

Используйте srand, rand и оператор %

выводит наибольшее число в массиве

Итерация всех элементов массива и сравнение с рабочим максимумом.

1 голос
/ 30 марта 2020

C не поддерживает изначально двумерные массивы, вам нужно выделить массив массивов. Вы не знаете размер заранее, поэтому вам нужно динамически распределять память массивов, используя malloc.

. Для генерации случайных чисел вы можете использовать rand, но сначала вам нужно установить начальное число. для последовательности псевдослучайных целых чисел, используя srand, чтобы получить (возможно) различное число при каждом выполнении, или вы можете использовать rand_r, чтобы выполнить обе операции с одной функцией. Обратите внимание, что rand генерирует случайное число между 0 и RAND_MAX, вам нужно использовать трюк с оператором модуля %, чтобы сгенерировать случайное число в заданном c диапазоне [min, max].

min + (rand() % (max - min + 1))

Вы можете перебирать массивы с двумя циклами, чтобы получить максимальное число.

Чтобы узнать, как использовать эту функцию, вы можете прочитать справочные страницы: mallo c rand

В качестве примечания: для получения максимального числа двумерный массив на самом деле не нужен, его можно вычислить напрямую, выделив дополнительную память.


Ваше решение будет работать, но оно ограничено 100 столбцами и 100 строками. Например, если пользователь вводит большие числа, ваш код будет в основном кра sh. Одним из решений является проверка ввода и отклонение чисел выше 100, если вы не хотите обрабатывать динамическое выделение памяти c, но в реальном мире это происходит очень редко, а динамическое c выделение памяти необходимо.

Вы не должны называть свои переменные односимвольными именами, особенно если они живут долго. Хорошее описательное имя, например columnsNumber, является предпочтительным.

...