Сортировка одномерного массива с помощью функции

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Mary2222
Сообщения: 3
Зарегистрирован: 22 июл 2016, 22:19

Нужно написать функцию, которая будет сортировать массив по возрастанию, если первый элемент массива равен 0.
Помогите исправить ошибки, пожалуйста :)
Вот мой код:

Код: Выделить всё

#include "stdafx.h" 
#include <locale.h> 
#include <conio.h> 
#define q 6 
#define w 8 
 
void funcMass(int *tmas, int n) 
{ 
 int i,j,c,m,im; 
 
 if (tmas[0]==0) 
 {  
  for (j=n;j>1;j++) 
  { 
  m=tmas[0]; 
  im=0; 
  for (i=1;i<j;i++) 
  { 
   if (tmas[i]>m) 
   { 
    m=tmas[i]; 
    im=i; 
   } 
  } 
  c=tmas[im]; 
  tmas[im]=tmas[j-1]; 
  tmas[j-1]=c; 
 
  } 
 } 
} 
 
int main(int argc, char*argv[]) 
{ 
 setlocale (0,"RUS"); 
  
 int tmas1[q]={0,4,3,3,7,9}; 
 int tmas2[w]={0,4,2,3,7,9,11,5}; 
  
 funcMass(tmas1,q); 
 funcMass(tmas2,w); 
   
 printf("\n tmas1= %d", &tmas1); 
 printf("\n tmas2= %d", &tmas2); 
  
 getch(); 
 return 0; 
}
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

В C/C++ все массивы имеют индексы не от 1 до N, а от 0 до N-1. Проблема именно в этом.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Слива
Сообщения: 134
Зарегистрирован: 19 мар 2016, 10:15

Вот еще проблема:
Строка 13: for(j=n;j>1;j++)
Если мы уменьшаем j от n до 1, то j нужно уменьшать, т.е. нужно написать j--. Но я бы рекомнедовал сделать так:
for(j = 0; j < n; j++).
Т.е. j++ оставляем, и сам так я всегда делаю :) .
Слива
Сообщения: 134
Зарегистрирован: 19 мар 2016, 10:15

У Вас программа - бред полный. Найдите где-нибудь в Интернете готовое решение, сортировка методом пузырька или что-нибудь подобное. Вопрос еще актуален?
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Теме 2 месяца. Ни о какой актуальности не может быть идти и речи. Это уже практически некропостинг.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить