Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

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

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

"Напишите программу, которая создает матрицу 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, 16:43   #2
Aleksandr H.
2 the Nation Glory
Профессионал
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Адрес: Wild West Ukraine
Сообщений: 2,476
Репутация: 885
По умолчанию

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

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

Когда я меняю вывод на просто arr [i][j], то она хоть и по размерности верно выводится, но начинает заполняться другими символами помимо +.
Augustus вне форума   Ответить с цитированием
Старый 10.01.2018, 17:12   #4
min@y™
Цифровой кот
Профессионал
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Адрес: 1600, пенсильвания-авеню, п.г.т. верхний Вашингтонск, 8126 км от МКАД, от поста ГАИ - налево.
Сообщений: 7,636
Репутация: 2398

icq: 100500
skype: kick-ass
По умолчанию

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

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

Цитата:
Сообщение от Augustus Посмотреть сообщение
Когда я меняю вывод на просто arr [i][j], то она хоть и по размерности верно выводится, но начинает заполняться другими символами помимо +.
А все потому что матрица то размера 4х4, а вы гуляете по ней как 5х5.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 10.01.2018, 17:28   #7
min@y™
Цифровой кот
Профессионал
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Адрес: 1600, пенсильвания-авеню, п.г.т. верхний Вашингтонск, 8126 км от МКАД, от поста ГАИ - налево.
Сообщений: 7,636
Репутация: 2398

icq: 100500
skype: kick-ass
По умолчанию

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

Последний раз редактировалось min@y™; 10.01.2018 в 17:41.
min@y™ вне форума   Ответить с цитированием
Старый 10.01.2018, 18:04   #8
min@y™
Цифровой кот
Профессионал
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Адрес: 1600, пенсильвания-авеню, п.г.т. верхний Вашингтонск, 8126 км от МКАД, от поста ГАИ - налево.
Сообщений: 7,636
Репутация: 2398

icq: 100500
skype: kick-ass
По умолчанию

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

Цитата:
Сообщение от min@y™ Посмотреть сообщение
Всё, рабочий день окончен. Я домой.
Огромное спасибо, сейчас попробую)
Augustus вне форума   Ответить с цитированием
Старый 10.01.2018, 19:27   #10
min@y™
Цифровой кот
Профессионал
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Адрес: 1600, пенсильвания-авеню, п.г.т. верхний Вашингтонск, 8126 км от МКАД, от поста ГАИ - налево.
Сообщений: 7,636
Репутация: 2398

icq: 100500
skype: kick-ass
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


03:40.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru