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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2008, 21:43   #1
Safary
Пользователь
 
Регистрация: 18.11.2008
Сообщений: 24
По умолчанию Разборка кода

Здравствуйте, не могли бы помочь с кодом? не ясны некоторые моменты, буду очень благодарна. задача про циклический сдвиг на k элементов.
Код:
#include <stdio.h>
#include <conio.h>
double GG ( double a[10][10], int p,int n,int m) /* что это за переменная?*/
{
          int i, j, k ;
          double temp,temp2,temp3;
 for(i=0; i < n/2; i++)
 {
  for(int z = p; z>0 ; z--) //кол-во сдвигов - к
  {
   for(j = i, temp = a[i][j]; j < n-1-i; j++)
   {
    temp2 = a[i][j+1];
    a[i][j+1] = temp;
    temp=temp2;
   }
   for(k = i+1; k < m-i; k++)
    {
    temp3=temp;
    temp=a[k][j];
    a[k][j]=temp3;
    }
   for( j--, k--; j >= i; j--)
    {
    temp3=temp;
    temp=a[k][j];
    a[k][j]=temp3;
    }
   for(j++, k--; k >= i; k--)
    {
    temp3=temp;
    temp=a[k][j];
    a[k][j]=temp3; /* для чего нужны эти присваиванья, не могу понять кусок этой проги */
  }}}
  return a[10][10];

}

int main()
{
 int p, n, m, i, j;
 double a[10][10];
       {
        printf("Vvedite n,m \n");
        scanf ("%d %d",&n,&m);
        /*n=4;
        m=4;*/
        }

        printf("Vvedite elementy matricy\n");
        for(i=0;i<n;i++)
        for(j=0;j<m;j++)
        {
          printf("a[%d][%d]=",i,j);
          scanf("%lf",&a[i][j]);
         }
         for(i=0;i<n;i++)
          {
           for(j=0;j<m;j++)
            {
             printf("%2.lf", a[i][j]);
            }
             printf ("\n");
            }
          {printf("Vvedite k\n");
          scanf ("%d",&p);
          GG(a,p,n,m); /* для чего это? */
          for(i=0;i<n;i++)
          {
           for(j=0;j<m;j++)
            {
             printf("%2.lf", a[i][j]);
            }
             printf ("\n");
            }
getch();
  }
return 0;
}
Safary вне форума Ответить с цитированием
Старый 27.11.2008, 21:51   #2
Рустам
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 260
По умолчанию

Цитата:
double GG ( double a[10][10], int p,int n,int m) /* что это за переменная?*/
это описание функции, тело которой описано ниже

Цитата:
a[k][j]=temp3; /* для чего нужны эти присваиванья, не могу понять кусок этой проги */
Так это ж метод "пузырька" - в основном его применяют для перестановки местами двух элементов
Хорошо не там, где нас нет, а там, где нас еще небыло!!!

Последний раз редактировалось Рустам; 27.11.2008 в 21:54.
Рустам вне форума Ответить с цитированием
Старый 27.11.2008, 21:53   #3
Рустам
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 260
По умолчанию

Цитата:
GG(a,p,n,m); /* для чего это? */
А это вызов функции, которая у тебя в начале описана (про которую ты вначале спрашивала)...
Хорошо не там, где нас нет, а там, где нас еще небыло!!!
Рустам вне форума Ответить с цитированием
Старый 27.11.2008, 21:54   #4
DarkAsmodey
Пользователь
 
Регистрация: 15.02.2008
Сообщений: 18
По умолчанию

1. это объявление функции в не переменная 2. эти присваивания и есть сам сдвиг тут вводится дополнительная переменная для того что бы можно было менять переменные местами без потери значения 3. это и есть сам вызов функции объявленной в начале
DarkAsmodey вне форума Ответить с цитированием
Старый 27.11.2008, 21:57   #5
DarkAsmodey
Пользователь
 
Регистрация: 15.02.2008
Сообщений: 18
По умолчанию

ППЦ пока писал уже опередили. извиняйте за оффтоп
DarkAsmodey вне форума Ответить с цитированием
Старый 27.11.2008, 21:58   #6
Safary
Пользователь
 
Регистрация: 18.11.2008
Сообщений: 24
По умолчанию

Спасибо большое Рустам, DarkAsmodey начинаю понимать)))Извините за ламерские вопросы. Вот только зачем делать через функцию? чем она тут выгодна? или только через неё можно сделать?
Safary вне форума Ответить с цитированием
Старый 27.11.2008, 22:20   #7
DarkAsmodey
Пользователь
 
Регистрация: 15.02.2008
Сообщений: 18
По умолчанию

В данном случае использование функции не выгодно сдесь бы инлайн функцию но в масштабах этого проекта не имеет значения вообще функции для того что бы упростить выполнение типизированных задач. вот например тебе еще сто раз в разных участках кода надо сделать этот сдвиг и что бы не писать весь алгоритм ты вызываешь функцию и передаешь ей параметры. так достигается уменьшение трудозатрат. но время на вызов функции больше чем того же кода непосредственно в теле главного блока. инлайн функции это функции тело которых компиль встраивает непосредствен но в место выозова в результате не тратиться время на вызов функции но в их использовании есть свои нюансы
DarkAsmodey вне форума Ответить с цитированием
Старый 27.11.2008, 23:56   #8
Safary
Пользователь
 
Регистрация: 18.11.2008
Сообщений: 24
По умолчанию

А можно написать без финкций и инлайн? как это можно реализовать?
Safary вне форума Ответить с цитированием
Старый 28.11.2008, 09:18   #9
DarkAsmodey
Пользователь
 
Регистрация: 15.02.2008
Сообщений: 18
По умолчанию

Кури мануал это будет проще ну или погугли
DarkAsmodey вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимизация кода. MAKTECYMA Общие вопросы C/C++ 2 05.06.2008 16:48
разрядность кода satanatas Помощь студентам 4 11.01.2008 18:15
Выдернуть куски кода из html-кода trafbite Помощь студентам 7 18.08.2007 13:51
Розбор кода? KAMASUTR Gamedev - cоздание игр: Unity, OpenGL, DirectX 0 10.08.2007 10:56