Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2018, 15:36   #1
Augustus
 
Регистрация: 10.01.2018
Сообщений: 7
По умолчанию Правильное заполнение матрицы

Всем добрый день)
Мне хотелось бы по возможности получить Вашу помощь с данным заданием, провел за ним достаточно времени, хочу разобраться, где у меня ошибки.

Собственно само задание:

"Напишите программу, которая создает матрицу 5*5 и заполняет ее полностью +. Пользователю должно быть предложено меню:

Матрица выглядит так:

+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +

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


Пример выведения для 2 опции:

Матрица выглядит сейчас так:


0 + + + 0
+ 0 + 0 +
+ + 0 + +
+ 0 + 0 +
0 + + + 0


Какие у меня проблемы:

1. Почему-то матрица в некоторых случаях заполняется не +, а левыми символами
2. В случае с выбором 2 опции, вроде бы диагонали заданы правильно, но появляются "лишние" нули и выводится не один раз (почему не один раз я знаю, но не совсем понимаю, как это корректно исправить)
3. Как правильно задать именно нужный адрес с клавиатуры и "прикрутить" его к матрице, чтобы именно это поле менялось на ноль.
4. Как сделать, чтобы программа продолжала выполняться, пока не будет нажата кнопка 5.
5. Как реализовать вывод "красивше"?
Вот мой код:
Код:
#include<stdio.h>

int main() {

char arr[4][4];
int i, j;
int option;
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", arr[0][0],arr[0][1],arr[0][2],arr[0][3],arr[0][4],arr[1][0],arr[1][1],arr[1][2],arr[1][3],arr[1][4]);
printf("%c %c %c %c %c\n%c %c %c %c %c\n", arr[2][0],arr[2][1],arr[2][2],arr[2][3],arr[2][4],arr[3][0],arr[3][1],arr[3][2],arr[3][3],arr[3][4]);
printf("%c %c %c %c %c\n",  arr[4][0],arr[4][1],arr[4][2],arr[4][3],arr[4][4]);


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




    if (option==1){
            for (i = 0; i<5; i++)  // цикл по строкам
  {
    for (j = 0; j<5; j++) // цикл по столбцам
    {

        arr[i][j]= 'O';

    }

   }; printf("Опция : %i \n Матрица выглядит теперь так:", option);
      printf("\n%c %c %c %c %c\n%c %c %c %c %c\n", arr[0][0],arr[0][1],arr[0][2],arr[0][3],arr[0][4],arr[1][0],arr[1][1],arr[1][2],arr[1][3],arr[1][4]);
      printf("%c %c %c %c %c\n%c %c %c %c %c\n", arr[2][0],arr[2][1],arr[2][2],arr[2][3],arr[2][4],arr[3][0],arr[3][1],arr[3][2],arr[3][3],arr[3][4]);
      printf("%c %c %c %c %c\n",  arr[4][0],arr[4][1],arr[4][2],arr[4][3],arr[4][4]);
   }



     else if (option==2){
            for (i=0; i<5; i++) {
        for (j=0; j<5; j++)
            if (i==j || i==4-j)
                arr[i][j]= 'O';
            else
                arr[i][j]= '+';
                 printf("Опция: %i \n Матрица выглядит теперь так", option);
                 printf("\n%c %c %c %c %c\n%c %c %c %c %c\n", arr[0][0],arr[0][1],arr[0][2],arr[0][3],arr[0][4],arr[1][0],arr[1][1],arr[1][2],arr[1][3],arr[1][4]);
      printf("%c %c %c %c %c\n%c %c %c %c %c\n", arr[2][0],arr[2][1],arr[2][2],arr[2][3],arr[2][4],arr[3][0],arr[3][1],arr[3][2],arr[3][3],arr[3][4]);
      printf("%c %c %c %c %c\n",  arr[4][0],arr[4][1],arr[4][2],arr[4][3],arr[4][4]);
                  printf("\n");
                                }

                            }

     else if (option==3){
           for (i = 0; i<5; i++)  // цикл по строкам
  {
    for (j = 0; j<5; 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 Матрица выглядит теперь так: ", option);
      printf("\n%c %c %c %c %c\n%c %c %c %c %c\n", arr[0][0],arr[0][1],arr[0][2],arr[0][3],arr[0][4],arr[1][0],arr[1][1],arr[1][2],arr[1][3],arr[1][4]);
      printf("%c %c %c %c %c\n%c %c %c %c %c\n", arr[2][0],arr[2][1],arr[2][2],arr[2][3],arr[2][4],arr[3][0],arr[3][1],arr[3][2],arr[3][3],arr[3][4]);
      printf("%c %c %c %c %c\n",  arr[4][0],arr[4][1],arr[4][2],arr[4][3],arr[4][4]);
                  printf("\n");

    printf("\n");} } // перевод на новую строку
  }
                                               }


     else if (option==4){
            for (i = 0; i<5; i++)  // цикл по строкам
               {
                for (j = 0; j<5; j++) // цикл по столбцам
                   {
                      arr[i][j]= '+';
                    }

               }
    printf("Опция: %i \n Матрица выглядит теперь так ", option);
      printf("\n%c %c %c %c %c\n%c %c %c %c %c\n", arr[0][0],arr[0][1],arr[0][2],arr[0][3],arr[0][4],arr[1][0],arr[1][1],arr[1][2],arr[1][3],arr[1][4]);
      printf("%c %c %c %c %c\n%c %c %c %c %c\n", arr[2][0],arr[2][1],arr[2][2],arr[2][3],arr[2][4],arr[3][0],arr[3][1],arr[3][2],arr[3][3],arr[3][4]);
      printf("%c %c %c %c %c\n",  arr[4][0],arr[4][1],arr[4][2],arr[4][3],arr[4][4]);
                    }

getchar(); getchar();
 return 0;

}
Augustus вне форума Ответить с цитированием
Старый 10.01.2018, 15:43   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
оу! талк изи! стоп.
Кто так матрицы выводит на экран?
https://www.google.com.ua/search?cli....0.pEpdt4akrCE
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.

Последний раз редактировалось Aleksandr H.; 10.01.2018 в 15:46.
Aleksandr H. вне форума Ответить с цитированием
Старый 10.01.2018, 16:11   #3
Augustus
 
Регистрация: 10.01.2018
Сообщений: 7
По умолчанию

Когда я меняю вывод на просто arr [i][j], то она хоть и по размерности верно выводится, но начинает заполняться другими символами помимо +.
Augustus вне форума Ответить с цитированием
Старый 10.01.2018, 16:12   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

О МАЙ ГАД!!!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 10.01.2018, 16:26   #5
Augustus
 
Регистрация: 10.01.2018
Сообщений: 7
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
О МАЙ ГАД!!!
Это я и сам знаю))) Мера чисто вынужденная, я уже написал, в чем проблема. Если я делаю вывод через arr [i] [j], матрица заполняется чем угодно, кроме плюсов.
Augustus вне форума Ответить с цитированием
Старый 10.01.2018, 16:26   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от Augustus Посмотреть сообщение
Когда я меняю вывод на просто arr [i][j], то она хоть и по размерности верно выводится, но начинает заполняться другими символами помимо +.
А все потому что матрица то размера 4х4, а вы гуляете по ней как 5х5.
p51x вне форума Ответить с цитированием
Старый 10.01.2018, 16:28   #7
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
Сообщение от Augustus Посмотреть сообщение
Это я и сам знаю))) Мера чисто вынужденная, я уже написал, в чем проблема. Если я делаю вывод через arr [i] [j], матрица заполняется чем угодно, кроме плюсов.
Да напишу я тебе щас функцию вывода. Покури пока.
---------
UPD.:
Так, штоль?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 10.01.2018 в 16:41.
min@y™ вне форума Ответить с цитированием
Старый 10.01.2018, 17:04   #8
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Всё, рабочий день окончен. Я домой.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 10.01.2018, 18:16   #9
Augustus
 
Регистрация: 10.01.2018
Сообщений: 7
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
Всё, рабочий день окончен. Я домой.
Огромное спасибо, сейчас попробую)
Augustus вне форума Ответить с цитированием
Старый 10.01.2018, 18:27   #10
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
Сообщение от Augustus Посмотреть сообщение
Огромное спасибо, сейчас попробую)
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Правильное заполнение Combobox из запросов le7o БД в Delphi 6 22.11.2015 14:06
Заполнение матрицы Satanist Помощь студентам 2 16.05.2012 11:13
Заполнение матрицы С++ Перфаратар Помощь студентам 7 20.10.2010 19:20
Заполнение матрицы -=aHTPoПоС=- Помощь студентам 3 06.11.2009 17:33
Заполнение матрицы Pedro Помощь студентам 3 22.04.2009 23:53