Практика программирования (Бейсик, Си, Паскаль)


         

с для размещения фамилий использованы


В программе 3_03а. с для размещения фамилий использованы динамически запрашиваемые строки, на начало которых "смотрят" элементы массива указателей типа char (см. обращение к функции malloc). Вместо перестановки фамилий, расположенных не в алфавитном порядке, меняются местами соответствующие 4-байтовые указатели.

Перевод курсора в начало очередной строки списка осуществляется функцией gotoxy (col, row), последовательность параметров которой прямо противоположна соответствующему оператору QBasic.

Программа 3_03b!с построена менее замысловато. В ней использован двумерный массив для хранения фамилий, да и вывод результатов оформлен попроще.

Программа 3_03.bas

RЕМ Сортировка фамилий DIM NAMES(10)

N=10

CLS

FOR J=l TO 10

INPUT "Введи очередную фамилию - ", NAMES(J)

NEXT J CLS

PRINT "Фамилии до упорядочения : " FOR J=l TO N

LOCATE J+2,1: PRINT NAMES(J)

NEXT J

FOR J=l TO N-l
FOR K=J+1 TO N

IF NAME$(J)>NAME$(K) THEN
TMP$=NAME$(J)
NAME$(J)=NAME$(K)
NAMES(K)=TMP$
END IF
NEXT К
NEXT J
LOCATE 1,40

PRINT "Фамилии после упорядочения :"
FOR J=l TO N

LOCATE J+2,40: PRINT NAME$(J)
NEXT J
END

Программа 3_03а.с

/* Сортировка фамилий */
#include <stdio.h>
#include <alloc.h>
#include <conio.h>
#include <string.h>

main()

{

#define n_max 10

#define len_max 20

int j,k;

char tmp[len_max], *names[n_max], *p;

clrscr();

for(j=0; j< n_max; j++) {

printf("\n Введи очередную фамилию - ");
scanf("%s",tmp);
names[j]=(char *)malloc(len_max);

strcpy(names[j],tmp); }

clrscr () ;

printf("Фамилии до упорядочения :");
for(j=0; j<n_max; j++) {

gotoxyd, j+2) ;
printf("%s",names[j]); }

for(j=0; j<n_max-l; j++)
for(k=j+l; k<n_max; k++) {

if (strcmp(names[j],names[k]) > 0} {

p=names[j];
names[j]=names[k] ;
names[k]=p; } }

gotoxy(40,1);

printf("Фамилии после упорядочения :");
for(j=0; j<n_max; j++) {

Содержание  Назад  Вперед