Курсовая по матрицам в "c"
В матрице 9 на 9 надо в каждой строке горизонтальной поменять первый член с последним, второй с предпоследним и т.д.
Я в принципе делал подобное в паскале и алгоритм понимаю.... надо видимо сделать еще одну переменную, с помощью которой и осуществлять сортировку такую, но как это сделать в C я не знаю.... надо полный текст=))
Здравствуйте, прошу вашей помощи!... Я пропустил по объективным причинам полсеместра в универе, а надо сдавать курсовик по C... Задача такая:
В матрице 9 на 9 надо в каждой строке горизонтальной поменять первый член с последним, второй с предпоследним и т.д.
Я в принципе делал подобное в паскале и алгоритм понимаю.... надо видимо сделать еще одну переменную, с помощью которой и осуществлять сортировку такую, но как это сделать в C я не знаю.... надо полный текст=))
Принеси на Паскаль, раз можешь, а на С перевести поможем.
Здравствуйте, прошу вашей помощи!... Я пропустил по объективным причинам полсеместра в универе, а надо сдавать курсовик по C... Задача такая:
В матрице 9 на 9 надо в каждой строке горизонтальной поменять первый член с последним, второй с предпоследним и т.д.
Я в принципе делал подобное в паскале и алгоритм понимаю.... надо видимо сделать еще одну переменную, с помощью которой и осуществлять сортировку такую, но как это сделать в C я не знаю.... надо полный текст=))
{ 9, 8, 7, 6, 5, 4, 3, 2, 1 },
{ 1, 2, 3, 4, 5, 6, 7, 8, 9 },
{ 9, 8, 7, 6, 5, 4, 3, 2, 1 },
{ 1, 2, 3, 4, 5, 6, 7, 8, 9 },
{ 9, 8, 7, 6, 5, 4, 3, 2, 1 },
{ 1, 2, 3, 4, 5, 6, 7, 8, 9 },
{ 9, 8, 7, 6, 5, 4, 3, 2, 1 },
{ 1, 2, 3, 4, 5, 6, 7, 8, 9 } };
for (int y = 0 ; y < 9 ; y++)
{
for (int x = 0, temp = 0 ; x < 4 ; x++)
{
temp = matrix[y][x];
matrix[y][x] = matrix[y][8 - x];
matrix[y][8 - x] = temp;
}
}
Интересное решение ..пасиба.попробую....
А есть еще у кого-нить варианты?!=))
Есть ошибки....программа нек работает.....вот текст...
#include <conio.h>
main()
{
clrscr();
int matrix[9][9];
int i,j,x;
for (i=0;i<9;i++)
for (j=0;j<9;j++)
{
printf("Vvedite [%i;%j] el-ty:",i,j);
scanf(&matrix[j]);
}
for (j=0;j<=8;j++)
{
for (i=0;i<=4;i++)
{
x=matrix[j];
matrix[j]=matrix[8-i][j];
matrix[8-i][j]=x;
}
}
for (i=0;i<9;i++)
for (j=0;j<9;j++)
{
printf("Vyvod matricy [%i;%j]",i,j);
getch();
}
}
из for-а можно выбросить [color=blue]temp=0[/color]
Задание: В матрице 9 на 9 в каждой строке поменять первый член с последним, второй с предпоследним и т.д.
Есть ошибки....программа нек работает.....вот текст...
Ты меняешь элементы по столбцам.
...
for (j=0;j<=8;j++)
{
for (i=0;i<=4;i++)
{
x=matrix[j];
matrix[j]=matrix[j][8-i];
matrix[j][8-i]=x;
}
}
...
...
...
...
зачем писать ответ когда решение уже есть, и твое решение при этом aбсoлютно такое же самое? и потом у него матрица 9*9, а не 8*8
Ты меняешь элементы по столбцам.
...
for (j=0;j<=8;j++)
{
for (i=0;i<=4;i++)
{
x=matrix[j];
matrix[j]=matrix[j][8-i];
matrix[j][8-i]=x;
}
}
...
...
у тебя ошибка, в условие 2-го фор-а должно быть меньше 4(без равно)
зачем писать ответ когда решение уже есть, и твое решение при этом aбсoлютно такое же самое? и потом у него матрица 9*9, а не 8*8
Я ответил на "Есть ошибки....программа нек работает.....вот текст..."
Программа переставляла элементы по столбцам, т.е. вертикально. И я только исправил код, чтоб оно переставляло горизонтально.
Где-ты видишь матрицу 8*8?
На счет i<=4;
Это из того кода на которую ты говорила, что есть одна ошибка(?): temp = 0;
Но она на результат роли не играет. Просто 5-у элементу присваивается значение 5го элемента.
Я ответил на "Есть ошибки....программа нек работает.....вот текст..."
Программа переставляла элементы по столбцам, т.е. вертикально. И я только исправил код, чтоб оно переставляло горизонтально.
[color=red]Где-ты видишь матрицу 8*8[/color]?
На счет i<=4;
Это из того кода на которую ты говорила, что есть одна ошибка(?): temp = 0;
Но она на результат роли не играет. Просто 5-у элементу присваивается значение 5го элемента.
sorry, it is my error
а отвечать не надо было, хотя бы переписать мог бы сам правильно, Damarus написал нормальный код:
{ 9, 8, 7, 6, 5, 4, 3, 2, 1 },
{ 1, 2, 3, 4, 5, 6, 7, 8, 9 },
{ 9, 8, 7, 6, 5, 4, 3, 2, 1 },
{ 1, 2, 3, 4, 5, 6, 7, 8, 9 },
{ 9, 8, 7, 6, 5, 4, 3, 2, 1 },
{ 1, 2, 3, 4, 5, 6, 7, 8, 9 },
{ 9, 8, 7, 6, 5, 4, 3, 2, 1 },
{ 1, 2, 3, 4, 5, 6, 7, 8, 9 } };
for (int y = 0 ; y < 9 ; y++)
{
for (int x = 0, temp = 0 ; x < 4 ; x++)
{
temp = matrix[y][x];
matrix[y][x] = matrix[y][8 - x];
matrix[y][8 - x] = temp;
}
}
[color=blue]на форуме запрещено открывать несколько тем для одного и того же вопроса. в следущий раз я удалю твою тему без предупреждения. пользуйся поиском хотя бы что бы найти свою старую тему что бы продолжить ее[/color]
извиняюсь.......делал в спешке и вообще не тот код кинул!!!!!!!!!!...=)).... Простите грешного!!!!!......
Программа ничего не изменяет!!!! В чем ошибка?!..... Вот полный текст!!!.....не понимаю почему у вас везде [8-i], а не [9-i]... Помогите....времени остается всё меньше!=) Вот полный текст...
#include <conio.h>
#include <stdlib.h>
#define b printf("\n*********\n")
main()
{
clrscr();
int matrix[9][9];
int i,j,x;
for (i=0;i<9;i++)
{
for (j=0;j<9;j++)
{
matrix[j]=random(9);
printf("%d ",matrix[j]);
}
printf("\n");
}
for (j=0;j<9;j++)
{
for (i=0;i<4;i++)
{
x=matrix[j];
matrix[j]=matrix[9-i][j];
matrix[9-i][j]=x;
}
}
for (i=0;i<9;i++)
{
for (j=0;j<9;j++)
{
printf("%d ",matrix[j]);
}
printf("\n",b);
}
getch();
}
#include <conio.h>
#include <stdlib.h>
main()
{
int matrix[9][9];
int i,j,x;
for (i=0;i<9;i++)
{
for (j=0;j<9;j++)
{
matrix[j]=10*i + j;
printf("%2d ",matrix[j]);
}
printf("\n");
}
for (j=0;j<9;j++)
{
for (i=0;i<4;i++)
{
x=matrix[j];
matrix[j]=matrix[j][8-i];
matrix[j][8-i]=x;
}
}
printf("\n\n");
for (i=0;i<9;i++)
{
for (j=0;j<9;j++)
{
printf("%2d ",matrix[j]);
}
printf("\n");
}
getch();
}
Снова данные переставляются по столбцам, + из-за 9-i выход за пределы массива.
так насчет [9-i] я понял=)) дошло наконец=))...
а теперь про столбцы!!! должно выглядеть так?!
{
for (j=0;j<4;j++)
{
x=matrix[j];
matrix[j]=matrix[j][8-i];
matrix[j][8-i]=x;
}
}
так насчет [9-i] я понял=)) дошло наконец=))...
а теперь про столбцы!!! должно выглядеть так?!
{
for (j=0;j<4;j++)
{
x=matrix[j];
matrix[j]=matrix[j][8-i];
matrix[j][8-i]=x;
}
}
Нет. Индекс, который идет сразу же за словом matrix, это индекс по строкам. Он должен быть в внешнем цикле. А у тебя во внутреннем. И переставляешь элементы при четных значениях i, и ставишь их обратно, при не четных. Поэтому в результает ничего не меняется.
Нужно изменить 1ю и 3ю команду:
{
for (i=0;i<4;i++)
{
так насчет [9-i] я понял=)) дошло наконец=))...
а теперь про столбцы!!! должно выглядеть так?!
{
for (j=0;j<4;j++)
{
x=matrix[j];
matrix[j]=matrix[j][8-i];
matrix[j][8-i]=x;
}
}
{
for (j=0;j<4;j++)
{
x=matrix[j];
matrix[j]=matrix[8-j];
matrix[8-j]=x;
}
}
Damarus davno tebe eto napisal, a ty vse muchaesh'sya :)
{
for (j=0;j<4;j++)
{
x=matrix[j];
matrix[j]=matrix[8-j];
matrix[8-j]=x;
}
}
Damarus davno tebe eto napisal, a ty vse muchaesh'sya :)
да я глючу по-страшному....
у вас "i"-это индекс столбцов?!...
я уже ничего не понимаю...в своём коде "i" у меня отвечал за строки, а "j" за столбцы.... объясните.....
я переучился просто..не судите строго!!!!
да я глючу по-страшному....
у вас "i"-это индекс столбцов?!...
я уже ничего не понимаю...в своём коде "i" у меня отвечал за строки, а "j" за столбцы.... объясните.....
я переучился просто..не судите строго!!!!
Да, глючишь не по-детски... Может из тебя получиться неплохой преподаватель программирования. Но программист, врятли... :)
Если у тебя i отвечает за строки, тогда почему в выражениях он на втором месте. Там же стоит индекс столбцов.
matrix[индекс_строки][индекс_столбца]
Да, глючишь не по-детски... Может из тебя получиться неплохой преподаватель программирования. Но программист, врятли... :)
Если у тебя i отвечает за строки, тогда почему в выражениях он на втором месте. Там же стоит индекс столбцов.
matrix[индекс_строки][индекс_столбца]
программиста из меня и не должно выйти=)))...а по поводу того, что matrix[индекс_строки][индекс_столбца]..., то я об этом и говорю.....почему в этой строке matrix[8-j] производится действие со столбцом?!=))
программиста из меня и не должно выйти=)))...а по поводу того, что matrix[индекс_строки][индекс_столбца]..., то я об этом и говорю.....почему в этой строке matrix[8-j] производится действие со столбцом?!=))
Потому что i - индекс строки и она у тебя индекс внутреннего цикла. Т.е. меняется при фикс. j.
При j = 0 меняются элементы
a[0][0] < = > a[0][8]
a[1][0] < = > a[1][8]
a[2][0] < = > a[2][8]
a[3][0] < = > a[3][8]
Cделай из i индекс внешнего цикла и элементы будут меняться по строкам. Но все равно будет неправильно, так как i должен меняться от 0 до 8,
чтоб обработать все строки, а не только первые 4.
а j от 0 до 3. У тебя меняется от 0 до 8 и следовательно, то что поменялось на j-м шаге, меняется обратно на 8-j шаге.
программиста из меня и не должно выйти=)))...а по поводу того, что matrix[индекс_строки][индекс_столбца]..., то я об этом и говорю.....почему в этой строке matrix[8-j] производится действие со столбцом?!=))
учась программированию важно уметь рисовать
перед тобой матрица 9*9:
красным и зеленым цветом написаны индексы матрицы
[color=red]0...8[/color] - индексы столбцов
[color=green]0...8[/color] - индексы строк
двойной for работает следующим образом:
в первом for-е индекс двигается на один шаг второй после этого пробегает полностью, t.e. :
for(j = 0; j < 4; j++)
{
......
}
[COLOR=indigo]
i = 0
j = 0, j = 1, j = 2, j = 3;
[/COLOR]
[COLOR=firebrick]
i = 1
j = 0, j = 1, j = 2, j = 3;
[/COLOR]
[COLOR=chocolate]
i = 1
j = 0, j = 1, j = 2, j = 3;
[/COLOR]
...
etc.
а теперь посмотри на рисунок и попытайся понять почему надо передвигаться(работать) с столбцами.
в принцепе это правило: чтобы двигаться по столбцам надо работать со строками, и чтобы двигаться по строкам надо работать со столбцами. а понять его можно по рисунку
Всё!!!!!!!...... Ошибку нашел.... очепятка была... Всем ПАСИБА,,,,,ВСЁ РАБОТАЕТ!!!!! и я всё понял по этому курсовику=)) осталось самое сложное- написать отчет, но это уж я сам=)))
я за тебя рада :)