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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2011, 14:47   #1
cbuilderx
Пользователь
 
Регистрация: 12.03.2010
Сообщений: 18
Вопрос Метод пузырьков

Форумчане-спецы,прошу вас помочь разобраться с такой проблемой:
необходимо отсортировать массив пузырьками.Если без функции,то у меня есть работающий код.Проблема в том,что вроде передаю в функцию ссылку на указатель массива,чтоб произошли соответствующие изменения в теле функции,но что-то не вяжется - не сортирует и всё.
вот код:
Код:
#include <stdio.h>
#include <iostream>

#define n 7

using std::cout;
using std::endl;

int *x = new int [n];

void transpose(int **x,int i,int j)
{
 int *t = new int[n];
 t=x[i];
 x[i]=x[j];
 x[j]=t;
}

int main()
{
 int i,j,t;
 FILE *f1,*f2;
 int *x = new int [n];
 f1=fopen("input.txt","rt");
  for (i=0; i<n-1; i++)
    fscanf(f1,"%d",&x[i]);
  fclose(f1);

 f2=fopen("output.txt","wt");
 for (i=n-1; i>0; i--)
 {
  for (j=1; j<i+1; j++)
   {
     if (x[j-1]>x[j]) transpose(&x,j-1,j);
      }
              fprintf(f2,"%d ",x[j]);
    }

  fclose(f2);

return 0;
}
Дорога возникает только под шагами идущего...
cbuilderx вне форума Ответить с цитированием
Старый 19.11.2011, 18:39   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Вы хотите записать функцию обмена значениями двух чисел?
Тогда пишите так:
Код:
void Swap(int &a, int &b)
{
int t;
t = a;
a = b;
b = t;
};
А вообще, в C++ есть функцию для этих нужд. Она называется swap (именно с маленькой буквы)
Вадим Мошев вне форума Ответить с цитированием
Старый 19.11.2011, 19:15   #3
cbuilderx
Пользователь
 
Регистрация: 12.03.2010
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Вы хотите записать функцию обмена значениями двух чисел?
Тогда пишите так:
Код:
void Swap(int &a, int &b)
{
int t;
t = a;
a = b;
b = t;
};
А вообще, в C++ есть функцию для этих нужд. Она называется swap (именно с маленькой буквы)
теоретически это то что мне нужно.только вот я бы хотел передать в функцию два индекса j-1 j массива,чтоб в теле функции менялись значения массива.прочитал на одном из форумов,что нужно делать так:передавать ссылку на указатель массива.
void MyFunc(int **p, int nSize)
int *p = new int[20];
MyFunc(&p, 20);
Дорога возникает только под шагами идущего...
cbuilderx вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача Коммивояжера. Метод Монте-Карло и метод приращений. [Паскаль] U9110 Помощь студентам 4 06.04.2011 09:48
метод статического моделирования (метод Монте-Карло) 666Julia666 Помощь студентам 0 02.04.2011 16:31
Turbo Pascal[програмыки : текстовая\метод симпсона\метод половинного деления qsccsq Помощь студентам 7 24.12.2010 05:23
Подскажите как исправить отображение пузырьков в столбик, так что бы они отображались в строчку и... Harle Помощь студентам 2 12.01.2010 20:21
Безумно сложные задачки!!!! Метод Гаусса, итераций, метод половинного деления, задача Коши и т.д. Хомяк!!!!! Помощь студентам 4 08.07.2009 10:08