#include <iostream>
#define N 5
void main(void)
{
int arr[N] = {1, 2, 3, 4, 5};
int mat[N][N], i, j, k;
for(i = 0; i < N; i++)
for(j = 0, k = i; j < N; j++)
{
mat[j] = arr[k++];
if(k == N)
k = 0;
}
for(i = 0; i < N; i++)
{
for(j = 0; j < N; j++)
std::cout << mat[j] << '\t';
std::cout << std::endl;
}
}
помогите с типовым VC
1. Назовем допустимым преобразованием матрицы перестановку двух строк и двух столбцов. Дана действительная матрица порядка n. С помощью допустимых преобразований добиться того, чтобы один из элементов(наибольший по модулю) распологался в левом верхнем углу матрицы.
ps Задача вроде и не сложная, но сделать не получается. Я сделал ввод матрицы и поиск максимального значения.
2. "Угадай число". Один из играющих загадывает число от 1 до N, а другой пытается отгадать его за m вопросов вида: "Верно ли, что задуманное число больше такого-то числа?". Написатьпрограмму, играющую за отгадчика.
ps Эту программу я почти закончил, но интересно было б посмотреть на вашу реализацию
3. Даны действительные числа а1,..., аn. Получить квадратную матрицу порядка n:
a1 a2 a3 ...a(n-2) a(n-1) an
a2 a3 a4 ...a(n-1) an a1
a3 a4 a5 ...an a1 a2
................................................
an a1 a2 ...a(n-3) a(n-2) a(n-1)
ps тут идет просто смещение на 1 я так понял, если не сложно помогите с кодом.
4. Сведения о произведениях живописи состоят из фамилии художника, жанра и названия. Дан файл f, содержащий сведения о нескольких произведениях живописи. Найти все портреты, написанные в 19 столетии, и записать их в файл g.
ps Работа с файлами это темный лес для меня, помогите пожалуйста, и в коде напишите коментарии, нужно понять тему. :( :confused: :(
Цитата: vanyavl
ps Задача вроде и не сложная, но сделать не получается. Я сделал ввод матрицы и поиск максимального значения.
ну если это есть то можно еще описать перестановку столбца(строки) матрицы (просто поэлементо)
а потом по алгоритму
ищем наибольший (попутно запоминаем его коорд)
меняем 1 и запомненный номер строки
меняем 1 и запомненный номер столбца
http://www.distedu.ru/mirror/_math/algolist.manual.ru/misc/bullcow.php
я бы реализовала бы эту прогу через бинарный поиск.
Цитата: nilbog
ну если это есть то можно еще описать перестановку столбца(строки) матрицы (просто поэлементо)
а потом по алгоритму
ищем наибольший (попутно запоминаем его коорд)
меняем 1 и запомненный номер строки
меняем 1 и запомненный номер столбца
а потом по алгоритму
ищем наибольший (попутно запоминаем его коорд)
меняем 1 и запомненный номер строки
меняем 1 и запомненный номер столбца
А если у меня матрица(двумерный масив), то кака его разбить на 2 одномерных что б потом можно было поменять??
не надо разбивать на два одномерных. просто меняй элементы поодному. простым обменом переменных.
как, я что то не особо въежаю, мне столбцы и строки переставить нада, можете код примерный накидать перестановки?
3)
Оля, огромное тебе спасибо, если будет время посмотри пожалуйста 4 задачу(
данная функция получает как параметр двумерный массив, и индексы максимального элемента(max_i строка, max_j столбец), ну и меняет если нужно столбцы и строки так, чтобы макс. элемент оказался в верхнем левом углу. код не проверяла, но думаю работает.
Код:
void change(int mat[N][M], int max_i, int max_j)
{
int j;
if(max_i != 0)
for(j = 0; j < M; j++)
{
int temp = mat[max_i][j];
mat[max_i][j] = mat[0][j];
mat[0][j] = temp;
}
if(max_j != 0)
for(j = 0; j < N; j++)
{
int temp = mat[j][max_j];
mat[j][max_j] = mat[j][0];
mat[j][0] = temp;
}
}
{
int j;
if(max_i != 0)
for(j = 0; j < M; j++)
{
int temp = mat[max_i][j];
mat[max_i][j] = mat[0][j];
mat[0][j] = temp;
}
if(max_j != 0)
for(j = 0; j < N; j++)
{
int temp = mat[j][max_j];
mat[j][max_j] = mat[j][0];
mat[j][0] = temp;
}
}
ps Оля особая просьба помоги хотя б ты, я буду очень признателен, без тебя я не смогу((, я пытался разобраться неособо получается, помоги очень прошу сделай ее, мы пишем в консоле, очень проу 5 числа последний срок, помогите пожалуйста люди добрые((
Цитата:
я пытался разобраться
и где попытки?