Консультация № 178379
14.05.2010, 17:16
0.00 руб.
0 9 1
Доброго времени суток, дорогие эксперты!
Задаю повторно вопрос, требующий решения на Code::Block


Дан массив квадратных матриц. Определить число матриц, строки которых упорядочены по
невозрастанию элементов.

Составить программу для решения задачи для каждого из следующих случаев задания матрицы:
а) число строк и число столбцов - константы;
б) число строк - константа, а число столбцов - исходное данное;
в) число строк - исходное данное, число столбцов - константа;
г) число строк и число столбцов - исходные данные.
(тоисть требуется написать 4 версии программы, в которых различные случаи задания матрицы в динамической памяти и проверки упорядоченности строк в матрицах)

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

Спасибо за внимание.

Обсуждение

Неизвестный
14.05.2010, 18:53
общий
Указатель это тоже переменая только содержит не значение а адресс.Адресс указателю присваевается так:

int a=2;
int *b=&a;

размер указателя можно узнать так:

int a=9;
int *b=&a;
printf("%i",sizeof(b));

ходим по адресам:

b++;
b--;

указатель на функцию:

void f(){printf("hello");};
void (*p)(void);
p=&f;
p();

больше про указатели тут описывать нечего.

массив квадратных матриц int a[3][6][6];

Если вы мне обьясните как будем формировать эти массивы я вам могу четыре функции написать а как вы будете их использовать это ваше дело.Обьясните что значит свободные массивы строк.Свободные от чего?

Неизвестный
14.05.2010, 19:00
общий
Свободные массивы строк - это массивы элементы которых тип char
массив описывается примерно так char* mass[10]={};

Я думаю, что массивы надо формировать так: в каждой ячейке массива должен быть указатель на матрицу.
Выявление упорядочивания нужно производить поэлементно, чтобы не было никаких вопросов уж.
Неизвестный
15.05.2010, 06:38
общий
Вот код для первого варианта.Матрицы заполнял в програме для наглядности.Выравняйте их так что б было удобно потому что сдесь на форуме не выравнивается.А теперь обьясните мне как вы видите квадратную матрицу с числом строк константа а число столбцов произвольное число?Тоесть строк например 5 а столбцов 7? Это уже не квадратная матрица.По крайней мере в моём понимании квадрат есть квадрат.Если вам нужен двумерный массив что б абстрагировать например треуголник или ещё какую нибудь геометрическую фигуру в вашем случае получается прямоугольник то это другое дело.Если да то продолжаем работать.

Тоесть вам ведь не квадратная матрица нужна?




#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int mass[5][6][6]= //kolicestvo kvadratnyx matric 5 konstanta
{{{1,2,4,4,6,2},
{3,5,6,8,9,9},
{1,6,3,8,5,6},
{9,8,7,6,5,4},
{5,6,5,6,3,5},
{3,4,6,3,6,7}},

{{1,2,3,4,5,6},
{1,2,3,4,5,6},
{1,2,3,4,5,6},
{1,2,3,4,5,6},
{1,2,3,4,5,6},
{1,2,3,4,5,6}},

{{1,2,3,4,5,6},
{1,2,3,4,5,6},
{1,2,3,4,5,6},
{1,2,3,4,5,6},
{1,2,3,4,5,6},
{1,2,3,4,5,6}},

{{2,3,2,4,5,3},
{9,6,7,3,8,5},
{5,7,4,8,9,2},
{1,3,4,8,5,7},
{2,4,2,3,6,5},
{5,4,6,3,7,2}},

{{3,5,6,5,6,3},
{4,5,8,3,9,2},
{6,2,9,6,8,3},
{3,5,4,7,2,9},
{2,4,7,2,6,8},
{1,9,2,8,3,7}}};

int i,ii,iii,e=0;
for(i=0;i<5;i++){ //kolicestvo kvadratnyx matric konstanta
int s=0;
for(ii=0;ii<6;ii++){
if(mass[i][ii][iii+1]-mass[i][ii][iii] == 1) {s++;}
if(s == 6){e++;}
for(iii=0;iii<6;iii++){}}
if(s != 6){printf("%i%s%s",i,"<--Index nam nuznyx matric","\n");}} //na vsiakij sluciaj
printf("%s%i%s","Vsevo nuznyx matric ",i-e,"\n");
system("PAUSE");
return 0;
}
Неизвестный
15.05.2010, 10:05
общий
Да действительно мне по заданию необходмо чтобы была квадратная матрица, но этот случай когда одно данное константа а другое входной параметр означает что матрица то квадратная, только она задаваться будет и через константу и через ввод параметра
Неизвестный
15.05.2010, 18:50
общий
А ну тогда всё понятно.В принципе програма закончена.Вы можете тут самостоятельно в место констаты подставить переменую где надо.Но если будут затруднения говорите.
Неизвестный
15.05.2010, 22:12
общий
это ответ
Здравствуйте, Юдин Евгений Сергеевич.
раз не вопросов то мой ответ.


#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int mass[5][6][6]= //kolicestvo kvadratnyx matric 5 konstanta
{{{1,2,4,4,6,2},
{3,5,6,8,9,9},
{1,6,3,8,5,6},
{9,8,7,6,5,4},
{5,6,5,6,3,5},
{3,4,6,3,6,7}},

{{1,2,3,4,5,6},
{1,2,3,4,5,6},
{1,2,3,4,5,6},
{1,2,3,4,5,6},
{1,2,3,4,5,6},
{1,2,3,4,5,6}},

{{1,2,3,4,5,6},
{1,2,3,4,5,6},
{1,2,3,4,5,6},
{1,2,3,4,5,6},
{1,2,3,4,5,6},
{1,2,3,4,5,6}},

{{2,3,2,4,5,3},
{9,6,7,3,8,5},
{5,7,4,8,9,2},
{1,3,4,8,5,7},
{2,4,2,3,6,5},
{5,4,6,3,7,2}},

{{3,5,6,5,6,3},
{4,5,8,3,9,2},
{6,2,9,6,8,3},
{3,5,4,7,2,9},
{2,4,7,2,6,8},
{1,9,2,8,3,7}}};

int i,ii,iii,e=0;
for(i=0;i<5;i++){ //kolicestvo kvadratnyx matric konstanta
int s=0;
for(ii=0;ii<6;ii++){
if(mass[i][ii][iii+1]-mass[i][ii][iii] == 1) {s++;}
if(s == 6){e++;}
for(iii=0;iii<6;iii++){}}
if(s != 6){printf("%i%s%s",i,"<--Index nam nuznyx matric","\n");}} //na vsiakij sluciaj
printf("%s%i%s","Vsevo nuznyx matric ",i-e,"\n");
system("PAUSE");
return 0;
}
Неизвестный
16.05.2010, 14:20
общий
https://rfpro.ru/upload/2402

Вот какой эффект в CodeBlock выдает программа
Неизвестный
16.05.2010, 19:26
общий
я использую самый настоящий стандарт си.вы хотите научится програмировать?тогда вы должны делать так что б работало.
Неизвестный
17.05.2010, 10:15
общий
мда... ну все равно спасибо!
Форма ответа