Сортировка фамилий по алфавиту через массив указателей - C (СИ)
Формулировка задачи:
Здравствуйте! голову сломал, перекопал этот форум но все никак не получается построить нормально работающую прогу, даны два массива, в одной фамилии, в другой возраста, нужно фамилии отсортировать по алфавиту через массив указателей, но так, чтобы соответствие между фамилией и возрастом не пропадало, подскажите пожалуйста как
Решение задачи: «Сортировка фамилий по алфавиту через массив указателей»
textual
Листинг программы
#include <iostream> #include <conio.h> int main() { int i,j; char words[8][128] = {"Ivanov, Ivan", "Petrov, Petr", "Sidorov, Ivan", "Aladov, Dima", "Pavlov, Pavel", "Katov, Sasha", "Balonov, Vova", "Maslov, Zheka"}; int ages[8] = {18, 15, 20, 22, 34, 32, 21, 12}; for(i=0;i<7;i++) for(j=i+1;j<8;j++) if(strcmp(words[i],words[j])>0) { char cur[64]; strcpy(cur,words[i]); strcpy(words[i],words[j]); strcpy(words[j],cur); } printf("Results:\n"); for(i=0;i<8;i++) printf("%s\n", words[i]); printf("\n"); getch(); return 0; }
Объяснение кода листинга программы
В этом коде используется сортировка выбором для сортировки массива строк. Список действий:
- Создается массив строк words[8][128] и массив целых чисел ages[8].
- В цикле for проходят по всем элементам массива words[8][128].
- В каждой итерации внутреннего цикла сравнивают текущую строку с каждой последующей строкой. Если текущая строка больше следующей по алфавиту, то они меняются местами.
- Создается временная строка cur[64].
- Если текущая строка больше следующей, то в cur[64] копируется значение текущей строки, затем значения текущей и следующей строк меняются местами.
- В цикле for проходят по всем элементам массива words[8][128] и выводят каждый элемент на экран.
- В конце программы используется функция getch() для приостановки выполнения программы до нажатия клавиши.
- Возвращается 0, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д