Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Курсовая по матрицам в "c"

16K
26 апреля 2006 года
Stigmatory
12 / / 26.04.2006
Здравствуйте, прошу вашей помощи!... Я пропустил по объективным причинам полсеместра в универе, а надо сдавать курсовик по C... Задача такая:
В матрице 9 на 9 надо в каждой строке горизонтальной поменять первый член с последним, второй с предпоследним и т.д.
Я в принципе делал подобное в паскале и алгоритм понимаю.... надо видимо сделать еще одну переменную, с помощью которой и осуществлять сортировку такую, но как это сделать в C я не знаю.... надо полный текст=))
242
26 апреля 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by Stigmatory
Здравствуйте, прошу вашей помощи!... Я пропустил по объективным причинам полсеместра в универе, а надо сдавать курсовик по C... Задача такая:
В матрице 9 на 9 надо в каждой строке горизонтальной поменять первый член с последним, второй с предпоследним и т.д.
Я в принципе делал подобное в паскале и алгоритм понимаю.... надо видимо сделать еще одну переменную, с помощью которой и осуществлять сортировку такую, но как это сделать в C я не знаю.... надо полный текст=))


Принеси на Паскаль, раз можешь, а на С перевести поможем.

9.5K
26 апреля 2006 года
Damarus
101 / / 08.04.2006
Цитата:
Originally posted by Stigmatory
Здравствуйте, прошу вашей помощи!... Я пропустил по объективным причинам полсеместра в универе, а надо сдавать курсовик по C... Задача такая:
В матрице 9 на 9 надо в каждой строке горизонтальной поменять первый член с последним, второй с предпоследним и т.д.
Я в принципе делал подобное в паскале и алгоритм понимаю.... надо видимо сделать еще одну переменную, с помощью которой и осуществлять сортировку такую, но как это сделать в C я не знаю.... надо полный текст=))



Код:
int matrix[9][9] = { { 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 },
                     { 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;
   }
}
16K
26 апреля 2006 года
Stigmatory
12 / / 26.04.2006
а как матрицу рэндомом задать?!...какая команда?!...не так же набирать?!=))

Интересное решение ..пасиба.попробую....
А есть еще у кого-нить варианты?!=))
16K
11 мая 2006 года
Stigmatory
12 / / 26.04.2006
Задание: В матрице 9 на 9 в каждой строке поменять первый член с последним, второй с предпоследним и т.д.

Есть ошибки....программа нек работает.....вот текст...

Код:
#include <stdio.h>
#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();
}
}
242
11 мая 2006 года
Оlga
2.2K / / 04.02.2006
ты ошибся при переписывании решения Damarusa
из for-а можно выбросить [color=blue]temp=0[/color]
242
11 мая 2006 года
Оlga
2.2K / / 04.02.2006
[color=blue]на форуме запрещено открывать несколько тем для одного и того же вопроса. в следущий раз я удалю твою тему без предупреждения. пользуйся поиском хотя бы что бы найти свою старую тему что бы продолжить ее[/color]
9.4K
11 мая 2006 года
_nоrth_
99 / / 24.04.2006
Цитата:
Originally posted by Stigmatory
Задание: В матрице 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;
  }
}
...
...
242
11 мая 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by _nоrth_

...
...


зачем писать ответ когда решение уже есть, и твое решение при этом aбсoлютно такое же самое? и потом у него матрица 9*9, а не 8*8

242
11 мая 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by _nоrth_
Ты меняешь элементы по столбцам.
Код:
...
...
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(без равно)

9.4K
11 мая 2006 года
_nоrth_
99 / / 24.04.2006
Цитата:
Originally posted by OlgaKr
зачем писать ответ когда решение уже есть, и твое решение при этом aбсoлютно такое же самое? и потом у него матрица 9*9, а не 8*8


Я ответил на "Есть ошибки....программа нек работает.....вот текст..."

Программа переставляла элементы по столбцам, т.е. вертикально. И я только исправил код, чтоб оно переставляло горизонтально.

Где-ты видишь матрицу 8*8?

На счет i<=4;
Это из того кода на которую ты говорила, что есть одна ошибка(?): temp = 0;
Но она на результат роли не играет. Просто 5-у элементу присваивается значение 5го элемента.

242
11 мая 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by _nоrth_
Я ответил на "Есть ошибки....программа нек работает.....вот текст..."

Программа переставляла элементы по столбцам, т.е. вертикально. И я только исправил код, чтоб оно переставляло горизонтально.

[color=red]Где-ты видишь матрицу 8*8[/color]?

На счет i<=4;
Это из того кода на которую ты говорила, что есть одна ошибка(?): temp = 0;
Но она на результат роли не играет. Просто 5-у элементу присваивается значение 5го элемента.



sorry, it is my error
а отвечать не надо было, хотя бы переписать мог бы сам правильно, Damarus написал нормальный код:

Код:
int matrix[9][9] = { { 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 },
                     { 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;
   }
}
16K
11 мая 2006 года
Stigmatory
12 / / 26.04.2006
Цитата:
Originally posted by OlgaKr
[color=blue]на форуме запрещено открывать несколько тем для одного и того же вопроса. в следущий раз я удалю твою тему без предупреждения. пользуйся поиском хотя бы что бы найти свою старую тему что бы продолжить ее[/color]


извиняюсь.......делал в спешке и вообще не тот код кинул!!!!!!!!!!...=)).... Простите грешного!!!!!......
Программа ничего не изменяет!!!! В чем ошибка?!..... Вот полный текст!!!.....не понимаю почему у вас везде [8-i], а не [9-i]... Помогите....времени остается всё меньше!=) Вот полный текст...

Код:
#include <stdio.h>
#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();
}
9.4K
11 мая 2006 года
_nоrth_
99 / / 24.04.2006
Снова данные переставляются по столбцам, + из-за 9-i выход за пределы массива.
Код:
#include <stdio.h>
#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();
}
16K
11 мая 2006 года
Stigmatory
12 / / 26.04.2006
Цитата:
Originally posted by _nоrth_
Снова данные переставляются по столбцам, + из-за 9-i выход за пределы массива.



так насчет [9-i] я понял=)) дошло наконец=))...
а теперь про столбцы!!! должно выглядеть так?!

 
Код:
for (i=0;i<9;i++)
  {
    for (j=0;j<4;j++)
    {
      x=matrix[j];
      matrix[j]=matrix[j][8-i];
      matrix[j][8-i]=x;
    }
  }
9.4K
11 мая 2006 года
_nоrth_
99 / / 24.04.2006
Цитата:
Originally posted by Stigmatory
так насчет [9-i] я понял=)) дошло наконец=))...
а теперь про столбцы!!! должно выглядеть так?!

 
Код:
for (i=0;i<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 (j=0;j<9;j++)
  {
    for (i=0;i<4;i++)
    {
242
11 мая 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by Stigmatory
так насчет [9-i] я понял=)) дошло наконец=))...
а теперь про столбцы!!! должно выглядеть так?!

 
Код:
for (i=0;i<9;i++)
  {
    for (j=0;j<4;j++)
    {
      x=matrix[j];
      matrix[j]=matrix[j][8-i];
      matrix[j][8-i]=x;
    }
  }



 
Код:
for (i=0;i<9;i++)
  {
    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 :)
16K
11 мая 2006 года
Stigmatory
12 / / 26.04.2006
Цитата:
Originally posted by OlgaKr
 
Код:
for (i=0;i<9;i++)
  {
    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" за столбцы.... объясните.....
я переучился просто..не судите строго!!!!

9.4K
11 мая 2006 года
_nоrth_
99 / / 24.04.2006
Цитата:
Originally posted by Stigmatory
да я глючу по-страшному....
у вас "i"-это индекс столбцов?!...
я уже ничего не понимаю...в своём коде "i" у меня отвечал за строки, а "j" за столбцы.... объясните.....
я переучился просто..не судите строго!!!!

Да, глючишь не по-детски... Может из тебя получиться неплохой преподаватель программирования. Но программист, врятли... :)

Если у тебя i отвечает за строки, тогда почему в выражениях он на втором месте. Там же стоит индекс столбцов.

matrix[индекс_строки][индекс_столбца]

16K
11 мая 2006 года
Stigmatory
12 / / 26.04.2006
Цитата:
Originally posted by _nоrth_
Да, глючишь не по-детски... Может из тебя получиться неплохой преподаватель программирования. Но программист, врятли... :)

Если у тебя i отвечает за строки, тогда почему в выражениях он на втором месте. Там же стоит индекс столбцов.

matrix[индекс_строки][индекс_столбца]



программиста из меня и не должно выйти=)))...а по поводу того, что matrix[индекс_строки][индекс_столбца]..., то я об этом и говорю.....почему в этой строке matrix[8-j] производится действие со столбцом?!=))

9.4K
11 мая 2006 года
_nоrth_
99 / / 24.04.2006
Цитата:
Originally posted by Stigmatory
программиста из меня и не должно выйти=)))...а по поводу того, что 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 шаге.

242
11 мая 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by Stigmatory
программиста из меня и не должно выйти=)))...а по поводу того, что matrix[индекс_строки][индекс_столбца]..., то я об этом и говорю.....почему в этой строке matrix[8-j] производится действие со столбцом?!=))



учась программированию важно уметь рисовать
перед тобой матрица 9*9:
красным и зеленым цветом написаны индексы матрицы
[color=red]0...8[/color] - индексы столбцов
[color=green]0...8[/color] - индексы строк
двойной for работает следующим образом:
в первом for-е индекс двигается на один шаг второй после этого пробегает полностью, t.e. :

 
Код:
for(i = 0; i < 9; i++)
  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.


а теперь посмотри на рисунок и попытайся понять почему надо передвигаться(работать) с столбцами.
в принцепе это правило: чтобы двигаться по столбцам надо работать со строками, и чтобы двигаться по строкам надо работать со столбцами. а понять его можно по рисунку
242
11 мая 2006 года
Оlga
2.2K / / 04.02.2006
...
16K
11 мая 2006 года
Stigmatory
12 / / 26.04.2006
OlgaKr, спасибо вам.....этом момент до меня дошел=) я понял наконец-то.....правда чуть раньше, чем вы ответили=))... сейчас я всё переправил.......далее у меня есть ошибка..сейчас попробую найти в чем причина...спасибо всем!=)
16K
11 мая 2006 года
Stigmatory
12 / / 26.04.2006
Всё!!!!!!!...... Ошибку нашел.... очепятка была... Всем ПАСИБА,,,,,ВСЁ РАБОТАЕТ!!!!! и я всё понял по этому курсовику=)) осталось самое сложное- написать отчет, но это уж я сам=)))
242
11 мая 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by Stigmatory
Всё!!!!!!!...... Ошибку нашел.... очепятка была... Всем ПАСИБА,,,,,ВСЁ РАБОТАЕТ!!!!! и я всё понял по этому курсовику=)) осталось самое сложное- написать отчет, но это уж я сам=)))



я за тебя рада :)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог