Заполнение матрицы символами - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем добрый день) Мне хотелось бы по возможности получить Вашу помощь с данным заданием, провел за ним достаточно времени, хочу разобраться, где у меня ошибки. Собственно само задание: "Напишите программу, которая создает матрицу 5*5 и заполняет ее полностью +. Пользователю должно быть предложено меню: Матрица выглядит так: + + + + + + + + + + + + + + + + + + + + + + + + + Опции: (1) Заполнить все поля знаком 0 (2) Заполнить обе диагонали 0 (3) Заполнить заданное поле 0 (столбец, строка) (4) Обновить: Заполнить все поля снова + (5) Конец программы " Пример выведения для 2 опции: Матрица выглядит сейчас так: 0 + + + 0 + 0 + 0 + + + 0 + + + 0 + 0 + 0 + + + 0 Какие у меня проблемы: 1. Почему-то матрица в случае вывода через arr [i][j] заполняется не +, а левыми символами 2. В случае с выбором 2 опции, вроде бы диагонали заданы правильно, но появляются "лишние" нули и выводится не один раз (почему не один раз я знаю, но не совсем понимаю, как это корректно исправить) 3. Как правильно задать именно нужный адрес с клавиатуры и "прикрутить" его к матрице, чтобы именно это поле менялось на ноль. 4. Как сделать лучше реализацию цикла do while, чтобы программа продолжала выполняться, пока не будет нажата кнопка 5. 5. Как реализовать вывод "красивше"? Вот мой код:
#include<stdio.h>
 
int main() {
 
char arr[5][5];
int i, j;
int choice;
int col, row;
 
for (i = 0; i<5; i++)  // цикл по строкам
  {
    for (j = 0; j<5; j++) // цикл по столбцам
    {
 
        arr[i][j]= 43;
 
    }
 
  }
printf("Матрица выглядит так:");
printf("\n%c %c %c %c %c\n%c %c %c %c %c\n %c %c %c %c %c\n%c %c %c %c %c\n %c %c %c %c %c\n", arr [i][j]);

 printf("\Опции: \n (1) Заполнить все поля знаком 0 \n (2) Заполнить обе диагонали 0 \n (3) Заполнить заданное поле 0 (столбец, строка)\n (4) Обновить: Заполнить все поля снова  + \n (5)Конец программы \n");
   scanf("%i",&choice);

do {

   switch (choice){ 
       case 1: {
        for (i = 1; i<6; i++)  // цикл по строкам
                  {
                    for (j = 1; j<6; j++) // цикл по столбцам
                      {
                          arr[i][j]= 'O';
                      }
                  }
              } 
                 printf("Опция : %i \n Матрица выглядит теперь так:", choice);
                  printf("\n%c %c %c %c %c\n%c %c %c %c %c\n %c %c %c %c %c\n%c %c %c %c %c\n %c %c %c %c %c\n", arr [i][j]);
              }break;

    case 2:{
              if (i==j || i==4-j)
                arr[i][j]= 'O'; 
                
                 printf("Опция: %i \n Матрица выглядит теперь так", choice);
                 printf("\n%c %c %c %c %c\n%c %c %c %c %c\n %c %c %c %c %c\n%c %c %c %c %c\n %c %c %c %c %c\n", arr [i][j]);
                printf("\n");
            } break;

    case 3: {
              for (i = 0; i<6; i++)  // цикл по строкам
                 {
                 for (j = 0; j<6; j++) // цикл по столбцам
                  {
           {
           printf(" Введите столбец и стрку = ");
           scanf("%i", &arr[col][row]);
           arr[col][row]= '0';
            } 
 
           // Вывод элементов массива
           for (i = 0; i<5; i++) { // цикл по строкам
              for (j = 0; j<5; j++) { // цикл по столбцам
               printf("Опция : %i \n Матрица выглядит теперь так: ", choice);
            printf("\n%c %c %c %c %c\n%c %c %c %c %c\n %c %c %c %c %c\n%c %c %c %c %c\n %c %c %c %c %c\n", arr [i][j]);
                  printf("\n");
 
                                    } 
                                } // перевод на новую строку
                    }
                }
            } break;
 
      case 4:{
              for (i = 0; i<6; i++)  // цикл по строкам
               {
                for (j = 0; j<6; j++) // цикл по столбцам
                   {
                      arr[i][j]= '+';
                    }
 
               }
    printf("Опция: %i \n Матрица выглядит теперь так ", choice);
      printf("\n%c %c %c %c %c\n%c %c %c %c %c\n %c %c %c %c %c\n%c %c %c %c %c\n %c %c %c %c %c\n", arr [i][j]);
                    } break;
                    
        } while (choice!=5); break;

 return 0;
 
}

Решение задачи: «Заполнение матрицы символами»

textual
Листинг программы
#include<stdio.h>
#include <stdlib.h>
 
int main()
{
 
    char arr[5][5];
    int i, j;
    int choice;
    int col, row;
 
    printf("Матрица выглядит так:\n\n");
    for (i = 0; i < 5; i++)
    {
        for (j = 0; j < 5; j++)
        {
            printf("+ ", arr[i][j]);
        }
        printf("\n");
    }
 
    printf("\nОпции: \n (1) Заполнить все поля знаком 0 \n (2) Заполнить обе диагонали 0 \n "
               "(3) Заполнить заданное поле 0 (столбец, строка)\n (4) Обновить: Заполнить все поля снова знаком"
               " + \n (5) Конец программы \n\n");
    do{
        printf("Сделайте выбор: \n");
        scanf("%i", &choice);
    }while(choice < 1 || choice > 5);
 
    switch (choice)
        {
            case 1:
            {
                printf("Опция : %i \n", choice);
                printf("Матрица выглядит теперь так:\n\n");
                for (i = 0; i < 5; i++)  // цикл по строкам
                {
                    for (j = 0; j < 5; j++) // цикл по столбцам
                    {
                        printf("0 ", arr[i][j]);
                    }
                    printf("\n");
                }
 
            }
                break;
 
            case 2:
            {
                printf("Опция : %i \n", choice);
                printf("Матрица выглядит теперь так:\n\n");
                for(i = 0; i < 5; i++)
                {
                    for(j = 0; j < 5; j++)
                    {
                        if(i == j || i == 4 - j)
                        {
                            arr[i][j] = 0;
                            printf("%i ", arr[i][j]);
                        }
                        else { printf("+ "); }
                    }
                    printf("\n");
                }
            }
                break;
 
            case 3:
            {
                printf("Введите столбец и стрку: \n");
                scanf(" %i %i", &col, &row);
 
 
                printf("Опция : %i \n", choice);
                printf("Матрица выглядит теперь так:\n\n");
                        // Вывод элементов массива
                for (i = 0; i < 5; i++)
                { // цикл по строкам
                    for (j = 0; j < 5; j++)
                    { // цикл по столбцам
                        if(i == col - 1 || j == row - 1)
                        {
                            arr[i][j] = 0;
                            printf("%i ", arr[i][j]);
                        }
                        else { printf("+ ");}
                    }
                    printf("\n"); // перевод на новую строку
                }
 
            }
                break;
 
            case 4:
            {
                printf("Опция : %i \n", choice);
                printf("Матрица выглядит так:\n\n");
                for (i = 0; i < 5; i++)
                {
                    for (j = 0; j < 5; j++)
                    {
                        printf("+ ", arr[i][j]);
                    }
                    printf("\n");
                }
 
 
            }
                break;
            case 5:
            {
               exit(0);
            }
        }
 
    return 0;
}

Объяснение кода листинга программы

Этот код на языке C заполняет матрицу символами и позволяет пользователю выбирать различные опции для изменения содержимого матрицы.

  1. Объявить переменную choice типа int, которая будет использоваться для получения выбора пользователя.
  2. Использовать printf для вывода содержимого матрицы и опций.
  3. Использовать scanf для получения выбора пользователя.
  4. Использовать switch для обработки выбора пользователя.
  5. В случае выбора 1, заполнить всю матрицу символом 0.
  6. В случае выбора 2, заполнить обе диагонали матрицы символом 0.
  7. В случае выбора 3, заполнить заданное поле матрицы символом 0.
  8. В случае выбора 4, обновить содержимое всей матрицы символом +.
  9. В случае выбора 5, завершить программу.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5
Похожие ответы