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


Задачи, советы и ответы - часть 13


END

FUNCTION COMPARE(B$,C$) DIM B1$,C1$

UP B$: UP C$

FOR J=l TO LEN(B$)

IF MID$ (B$, J, 1)<>" " THEN B1$=B1$+MID$ (B$,J, 1 )

NEXT J

FOR J=l TO LEN(C$)

IF MID$(C$,J,1)<>" " THEN C1$=C1$+MID$(C$,J,1) NEXT J

IF B1$>C1$ THEN COMPARE=1 IF B1$=C1$ THEN COMPARE=0

IF B1$<C1$ THEN COMPARE=-1 END FUNCTION

SUB UP(A$)

FOR J=l TO LEN(A$)

SELECT CASE MID$(A$,J,1)

CASE "a" TO "z": MID$ (A$, J, 1) =CHR$ (ASC (MID$ (A$, J, 1) )-32)

CASE "a" TO "n": MID$(A$,J,1)=CHR$(ASC(MID$(A$,J,1))-32)

CASE "p" TO "я": MID$(A$,J,1)=CHR$(ASC(MID$(A$,J,1))-80)

CASE "ё": MID$(A$,J,1)="Ё" END SELECT

NEXT J

END SUB

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

/* Сравнение строк с игнорированием пробелов */

#include <stdio.h>

#include <conio.h>

#include <string.h>

char *up(char *a);

int compare(char *s1, char *s2);

void main() {

char s1[80],s2[80];

puts("Введите первую строку");

gets (s1);

puts("Введите вторую строку");

gets(s2);

switch(compare(s1,s2)) {

case 1: puts("Первая строка 'больше'");break;

case -1: puts("Первая строка 'меньше'");break;

case 0: puts("Обе строки равны");

}

getch(); }

char *up(char *a)

{

/* Замена кодов малых букв кодами больших */

static unsigned char b[80]; int j ;

strcpy (b, a) ;

for(j=0; j<strlen(a); j++) {

if(97<=b[j] && b[j]<=122) b[j]-=32;

if(160<=b[j] && b[j]<=175) b[j]-=32;

if (224<=b[j] && b[j]<=239) b[j]-=80;

if (241==b[j]) b[j]—; }

return b; }

int compare(char *s1,char *s2) {

char ssl[80],ss2[80]; char j,k;

strcpy(s1,up(s1)};

/* Замена малых букв большими */

strcpy (s2*, up (s2) );

/* с записью на то же место */

for(j=0,k=0; j<strlen(sl); j++)

if (sl[j] != ' ') ssl[k++]=sl[j];

/* Извлекаем непробелы */

ssl[k]=0x0; /* Добавили признак конца */

for(j=0,k=0;

j<strlen(s2); j++)




- Начало -  - Назад -  - Вперед -