Oskom Forums

Oskom Forums


Добро пожаловать на Oskom Forums.
 
 
Сейчас на шардах UO Oskom
 
+ Ответить в теме
Показано с 1 по 12 из 12
  1. mi boti, vi papi
    [Banned]
    Регистрация
    27.09.2004
    Адрес
    [*LV*]+[D-Tox]= :papi:
    Сообщений
    5,240
    #1

    По умолчанию Парни нужен хелп, срочно! :(

    Вообщем горю нада сдать прогр. Дело плёвое но указатели я вообще не знаю а учить не времени
    вообщем нужно функция обрабатывающую масив переделать так чтобы она делала тоже самое только используя Указатели.
    Код:
    void Sort1(int m[m_sz], int n)
    {
        int i, j, buf;
          for (i=0; i<n; i++)
          {
            if ((m[i]>=0) && (i>0))
              {
    	   for (j=0;j<i;++j)
               {
                if (m[j]<0)
                {
                 buf=m[i];
                 m[i]=m[j];
                 m[j]=buf;
                }             
               }       	             
            }  }        	       
    }
    Дело плёвое, алгоритм элементарный, но в указателях яы ноль (Алгоритм на сях)

    Алгоритм переносит все положительные числа влево, а отрицательные впаро, при этом его не сортируя
    например
    был 1 2 -2 5 -8 -9 3
    стал1 2 5 3 -2 -8 -9

  2. mi boti, vi papi
    [Banned]
    Регистрация
    27.09.2004
    Адрес
    [*LV*]+[D-Tox]= :papi:
    Сообщений
    5,240
    #2

    По умолчанию

    Диколоныч, спасай

  3. Expert
    [Banned]
    Регистрация
    25.01.2006
    Адрес
    Haldir [Salib El-Lejl], фан-клуб Боника.
    Сообщений
    482
    #3

    По умолчанию

    Код:
    void Sort1(int *m, int n)
      {
      int i, j, buf;
      for (i = 0; i < n; i++)
        {
        if((m[i] >= 0) && (i > 0))
          {
          for(j = 0;j < i; ++j)
            {
            if (m[j]<0)
              {
              buf=m[i];
              m[i]=m[j];
              m[j]=buf;
              }             
            }       	             
          }
        }        	       
      }
    Может быть так?
    "функция обрабатывающую масив переделать так чтобы она делала тоже самое только используя масивы."
    Я просто не очень понял вот эту фразу

  4. mi boti, vi papi
    [Banned]
    Регистрация
    27.09.2004
    Адрес
    [*LV*]+[D-Tox]= :papi:
    Сообщений
    5,240
    #4

    По умолчанию

    Указатели, я опечатался

  5. Expert
    [Banned]
    Регистрация
    25.01.2006
    Адрес
    Haldir [Salib El-Lejl], фан-клуб Боника.
    Сообщений
    482
    #5

    По умолчанию

    Ну мой код как раз с указателем работает

  6. mi boti, vi papi
    [Banned]
    Регистрация
    27.09.2004
    Адрес
    [*LV*]+[D-Tox]= :papi:
    Сообщений
    5,240
    #6

    По умолчанию

    Ну это не то , звёздочек мало

  7. Grandmaster

    Регистрация
    24.08.2002
    Адрес
    У вас 1 друг.
    Сообщений
    6,098
    #7

    По умолчанию

    Цитата Сообщение от Sir Mage
    Ну это не то , звёздочек мало
    Все правильно. Массив то же самое что указатель на первый элемент.
    Чуть ли не Керниган и Ритчи, страница такая-то.
    Так что нормально звездочек.
    Пример как раз иллюстрация на тему "массив = указатель".

    Это конечно хорошо что ваши преподаватели читали эту книгу. Классика все-таки

  8. mi boti, vi papi
    [Banned]
    Регистрация
    27.09.2004
    Адрес
    [*LV*]+[D-Tox]= :papi:
    Сообщений
    5,240
    #8

    По умолчанию

    Да не то это
    должно быть типо такого
    Код:
    void Sort2(int *p, int n){
    	int x, y, *max, buf, *diag;
    	for (y=0; y<n; y++){
            max=p;
    		diag=p+y;
    		for (x=0; x<n; x++){
    			if (*p>*max) max=p;
            	p++;
    		}
    		buf=*diag;
    		*diag=*max;
    		*max=buf;
    	}
    }

  9. mi boti, vi papi
    [Banned]
    Регистрация
    27.09.2004
    Адрес
    [*LV*]+[D-Tox]= :papi:
    Сообщений
    5,240
    #9

    По умолчанию


  10. Master
    [Banned]
    Регистрация
    18.01.2004
    Сообщений
    1,466
    #10

    По умолчанию

    Код:
    buf=m[i]; 
    m[i]=m[j]; 
    m[j]=buf;
    а че так по-ламерски?

    а так слабо?

    Код:
    m[i]=m[i]+m[j];
    m[j]=m[i]-m[j];
    m[i]=m[i]-m[j];

    вон товарищ тиебе сверху правильно код написал . .не надо столько звездочек тебе

    заголовок у функции такой

    void Sort1(int *m, int n)

    остальное без звездочек

    ---примечание автора:: *a === a[0]

    ?????????????????????????????????????????????????? ???????????????

    на тебе сортировку . и кто скажет что тут не на указателях (а на массивах) работает пусть забанит меня

    Код:
    #include <stdio.h>
    #include <conio.h>
    #include <iostream.h>
    
    void sort(int *a, int sza);
    
    void main(){
    clrscr();
    int a[] = {1,2,3,6,4,5};
    sort(a,6);
    for (int i=0;i<6; i++)
    	cout << a[i] << " ";
    getch();
    }
    
    void sort(int *a, int sza){
    for (int i=0; i<sza; i++)
    	for (int j=0; j<sza; j++)
    		if (a[i] > a[j]){
    			a[i] = a[i] + a[j];
    			a[j] = a[i] - a[j];
    			a[i] = a[i] - a[j];
    			}
    
    }

  11. mi boti, vi papi
    [Banned]
    Регистрация
    27.09.2004
    Адрес
    [*LV*]+[D-Tox]= :papi:
    Сообщений
    5,240
    #11

    По умолчанию

    Эхх, попробую без звёздочек сдать, но боюсь не прокатит ((
    Там в том то и суть что надо 2мя способами реализовать через масив и через указатели. 1 и ту же прогу, ато что поставить 1 звёздочку это тоже самое, всё равно работа идёт с масивом а не с указателями...

  12. mi boti, vi papi
    [Banned]
    Регистрация
    27.09.2004
    Адрес
    [*LV*]+[D-Tox]= :papi:
    Сообщений
    5,240
    #12

    По умолчанию

    Она сортирует А мне нужно перемещение, чтобы не сортировала по убыванию/возростанию...
    Ну вообщем идея ясна, поеду попробую сдать.
    Способ без Буфа запомню

    Консультацию перенесли

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения