Я пытаюсь реализовать функцию сортировки, которая сортирует символы из массива. Может кто подскажет, почему не работает?
int main() {
char tab[] = {
'e',
'b',
'd',
'z',
'a',
't',
'\0'
};
char tab2[7] = {
0
};
int i = 0, j = 0, k = 0;
while (tab[i] != '\0') {
for (j = 0; tab[j] != '\0'; j++) {
if (j > 0) {
if (tab[j] > tab[j - 1]) {
tab2[k] = tab[j - 1];
k++;
}
}
}
k = 0;
i++;
}
printf("%s\n", tab2);
return 0;
}
i < tab[i] ошибается вне ворот. Зачем нужен i < 'e'?
У меня проблемы с представлением, как будет выглядеть пузырьковая сортировка, не выполняемая на месте. У вас есть ссылка?
это была моя ошибка .. но все равно не работает
вы хотите написать процедуру сортировки? заново изобрести колесо?
Важно отметить, что немногие вещи расстраивают больше, чем слова «не работает». Ты должен предоставить технические детали, которые более подробно объясняют эту проблему.





Хорошо, я собираюсь предположить, что вы хотите упорядочить их в алфавитном порядке, сначала выполняется пузырьковая сортировка с двумя fors, одна из которых будет повторять trhough первый массив и будет начинаться с индекса 0, являющегося индексной переменной с именем i, а второй for будет перебирать второй массив, который начнется с индекса i + 1 и будет использоваться для логических целей, и помимо этого вам понадобится скалярная переменная типа char, которая будет использоваться в качестве вспомогательной, Я приведу пример кода того, что, как я думаю, вы хотели там сделать, надеюсь, это поможет вам
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i;
int j;
char tab[] = {
'e',
'b',
'd',
'z',
'a',
't',
'\0'
};
char tab2;
for(i = 0; tab[i] != '\0'; i++) {
for (j = i + 1; tab[j] != '\0'; j++) {
{
if (tab[j] < tab[i]) {
tab2 = tab[i];
tab[i] = tab[j];
tab[j] = tab2;
}
}
}
}
printf("%s\n", tab);
return 0;
}
С какой целью сравнивать
i < tab[i]? Вы сравниваете индекс цикла со значением данных. Это не может делать то, что вы хотите, верно?