Форум программистов, компьютерный форум CyberForum.ru

Программа не проходит тест на acmp.ru - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Дириктория действующего файла; Содержание папки; http://www.cyberforum.ru/cpp-beginners/thread551462.html
1) Как получить строку , или что-то типа того, содержащую путь к выполняемой программе или каталогу, где эта программа выполняется? Пример: выполняется программа "C://root/progs/a.exe", как внутри программы получить строку, которая написано в скобках? Или такую строку: "C://root/progs/", не важно. Аналог на php: $_SERVER; 2) Как получить что-нибудь вроде массива из имен всех файлов, лежащих в...
C++ Обработка одномерных динамических массивов 1. Удалить из массива положительный элемент. 2. Вставить число 99 после второго элемента массива. 3. Удалить все элементы, кратные 3 или 8. 4. Вставить по одному элементу перед всеми элементами, кратными числу 17. 5. Вставить по одному элементу перед всеми нечетными элементами. http://www.cyberforum.ru/cpp-beginners/thread551461.html
C++ В двумерном массиве определить количество строк, содержащих элементы равные -47
1. В двумерном массиве, элементами которого являются целые числа, подсчитать среднее арифмитическое элементов кратных 31. 2. В двумерном массиве определить кол-во строк, содержащих элементы равные -47. 3. В двумерном массиве для каждого столбца найти сумму положительных элементов, кратных 13 и записать данные в новый массив. 4. В двумерном массиве размерности (3х5) поменяйте местами...
Поиск и замена в Memo C++
Требуется организовать поиск в Memo через FindDialog, Однако получается найти и выделить только самое первое совпадение. Как перейти дальше и искать все совпадения до конца? int SelPos = Memo1->Lines->Text.Pos(FindDialog1->FindText); if (SelPos > 0) { Memo1->SetFocus(); Memo1->SelStart = SelPos - 1; Memo1->SelLength = FindDialog1->FindText.Length(); }
C++ сортировка линейного списка перестановками http://www.cyberforum.ru/cpp-beginners/thread551448.html
я написал алгоритм который будет просто менять поля value а не перенаправлять указатели, но программа не работает правильно не могли бы вы мне показать где ошибки #include <iostream> #include <fstream> using namespace std; struct tElem { int value; tElem *next;
C++ Написать программу учета на авиабилеты. Написать программу учета на авиабилеты. Каждая заявка содержит: пункт назначения номер рейса фамилию и инициалы пассажира желаемую дату вылета. Программа должна обеспечивать выбор с помощью меню и выполнение одной из следующих функций: подробнее

Показать сообщение отдельно
Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624

Программа не проходит тест на acmp.ru - C++

18.04.2012, 01:44. Просмотров 1073. Ответов 2
Метки (Все метки)

http://********/index.asp?main=task&id_task=446
Табло(спойлер)
На хоккейном стадионе в одном большом городе расположено большое прямоугольное табло. Оно имеет n строк и m столбцов (то есть состоит из n x m ячеек). Во время хоккейного матча это табло служит для отображения счета и времени, прошедшего с начала тайма, а в перерывах на нем показывают различную рекламу.

В связи с этим возникла задача проверки возможности показа на этом табло определенной рекламной заставки. Заставка также, как и табло, имеет размер n строк на m столбцов. Каждая из ячеек заставки окрашена в один из четырех цветов - трех основных: красный - R, зеленый - G, синий - B и черный - .(точка).

Каждая из ячеек табло характеризуется своими цветопередаточными возможностями. Любая из ячеек табло может отображать черный цвет - это соответствует тому, что на нее вообще не подается напряжение. Также каждая из ячеек может отображать некоторое подмножество множества основных цветов. В этой задаче эти подмножества будут кодироваться следующим образом:

0 - ячейка может отображать только черный цвет;
1 - ячейка может отображать только черный и синий цвета;
2 - ячейка может отображать только черный и зеленый цвета;
3 - ячейка может отображать только черный, зеленый и синий цвета;
4 - ячейка может отображать только черный и красный цвета;
5 - ячейка может отображать только черный, красный и синий цвета;
6 - ячейка может отображать только черный, красный и зеленый цвета;
7 - ячейка может отображать только черный, красный, зеленый и синий цвета.

Напишите программу, которая по описанию табло и заставки определяет: возможно ли на табло отобразить эту заставку.
Входные данные

Первая строка входного файла INPUT.TXT содержит целые числа n и m (1 <= n, m <= 100). Далее идут n строк по m символов каждая - описание заставки. Каждый из символов описания заставки принадлежит множеству {R, G, B, .} . Их значения описаны выше.

После этого идет описание табло. Оно содержит n строк по m чисел, разделенных пробелами. Значения чисел описаны выше.
Выходные данные

В выходной файл OUTPUT.TXT выведите YES, если на табло возможно отобразить заставку и NO - в противном случае.

Мой вариант решения
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include <fstream>
#include <string>
 
 
int main()
{
  char **tablo = NULL;
  int temp = 0;
  bool superBreak = false; // супер пупер выход из всех циклов
  size_t rows = 0;
  size_t columns = 0;
  std::ifstream fin("input.txt");
  std::ofstream fout("output.txt");
 
  fin >> rows >> columns; // получение размеров массива
  tablo = new char*[ rows ]; // создание динамического массива
  for ( size_t i = 0; i < rows; ++i )
  {
     tablo[i] = new char[ columns ];
  }
 
  fin.get(); // перейти на новую строку
  std::string curLine; // для хранения текущей строки
  for ( size_t i = 0; i < rows; ++i ) // инициализация табла
  {
      std::getline( fin, curLine );
      for ( size_t j = 0; j < columns; ++j )
      {
         tablo[i][j] = curLine[j];
      }
  }
/* если это раскоментировать, то будет произведен вывод только отладочной информации и выход */
//  for ( size_t i = 0; i < rows; ++i )
//  {
//      for ( size_t j = 0; j < columns; ++j )
//      {
//         fout << tablo[i][j];
//      }
//      fout << std::endl;
//  }
//  return 0;
 
  for ( size_t i = 0; i < rows && !superBreak; ++i )
  {
      for ( size_t j = 0; j < columns && !superBreak; ++j )
      {
         fin >> temp;
         switch( tablo[i][j] )
         {
            case '.':
               break;
            case 'R':
               if ( temp < 4 )
               {
                  superBreak = true;
               }
               break;
            case 'G':
               if ( !( temp == 2 || temp == 3 || temp == 6 || temp == 7 ) )
               {
                  superBreak = true;
               }
               break;
            case 'B':
               if ( temp % 2 == 0 )
               {
                  superBreak = true;
               }
               break;
            default:
//               throw (-1); // ловушка для ошибок, когда именно в этой строчке
                             // случается RuntimeError, то массив инициализирован некорректно
               break;
         }
      }
  }
 
  if ( !superBreak ) // если не произведен досрочный выход из цикла, то там всё ок
     fout << "YES";
  else               // иначе какой-то пиксель не способен отобразить заданный цвет
     fout << "NO";
 
  fout.close();
  fin.close();
 
  return 0;
}

Как вы считаете, нет ли здесь какой-нибудь ошибки?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru