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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2013, 19:54   #1
sanek819
Новичок
Джуниор
 
Регистрация: 25.06.2013
Сообщений: 1
По умолчанию Задача с последовательностью литерных матриц

Здравствуйте!
Задача такая:
Задана последовательность литерных матриц M1,M2,...,Mk,... размером 30 на 40. Подсчитать число таких Mk, что для некоторой Mi, где I<K выполняется Ф(Mi)>1 mod 30 - 1, где Ф(Mi) - число всех строк матрицы Mi, в которых нечетно произведение кодов любых двух соседних элементов, не являющихся цифрами.
Вот код:

#include <stdio.h>

bool isNumber(char x)
{
// true, если буква - цифра
if(x >= '0' && x <= '9') return true;

return false;
}

int F(char Mi[30][40])
{
int S = 0; //Счетчик суммы строк удовл. условию

for(int k = 0; k < 30; k++) // идем по строкам
{
for(int j = 1; j < 40; j++) // идем по столбцу
{
if(isNumber(Mi[k][j-1]) && isNumber(Mi[k][j]) && (Mi[k][j-1] * Mi[k][j]) % 2 == 0)//если обе не цифры, но произведение кодов четно, значит нам эта строка не нужна
break;

if(j == 39) // если все верно
S++; // эта строка нам подходит
}
}
return S;
}

int main()
{
char Mi[30][40]; //Переменная для матрицы
int K = 0; // Число (сумма) матр. удовл. условию
int I = 1; // какая по номеру в последовательности при считывании
int status = 1;

while(true) //Цикл чтения матриц и проверка условия
{
for(int i = 0; i < 50; i++) //читаем матр.
for(int j = 0; j < 30; j++)
scanf("%c", &Mi[i][j]);

if((F(Mi) < (I % 30) - 1)&&(status)) //Проверяем условие
K++; //Если удовл. то прибавляем счетчик
else
status = 0;

printf("Еще матрица? (0 - нет)\n");
scanf("%c", &Mi[0][0]);

if(Mi[0][0] == '0')
break; // если ввели ноль то выходим
else I++; // если не ноль, то увеличиваем счетчик считывания матриц
}
printf("%d", K); //Выводим число матр. удовл. условию
return 0;
}

Как сказал принимающий, верно все, кроме той части где считается количество матриц(в main). Теперь главный вопрос: А что вообще требуется получить в итоге? Непонятна формулировка вот этой части: "Подсчитать число таких Mk, что для некоторой Mi, где I<K выполняется Ф(Mi)>1 mod 30 - 1". Какие матрицы сравнивать с условием? Насколько я понимаю, то те самые которые мы вводим, по очереди, а какие считать? Помогите пожалуйста разобраться с задачей.
sanek819 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача на вычисление следа двух матриц joker5 Паскаль, Turbo Pascal, PascalABC.NET 0 19.12.2012 19:11
Задача с последовательностью чисел Лиза_ Паскаль, Turbo Pascal, PascalABC.NET 1 22.11.2012 20:13
Обработка литерных строк grib.oksanochka Помощь студентам 0 24.05.2012 22:16
Задача по Pascal c произвольной последовательностью. Тема: циклы. Slap Помощь студентам 8 04.09.2010 18:39
Паскаль... Обработка литерных величин... Сеня Помощь студентам 2 23.02.2009 22:59