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


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


gotoxy(40,j+2);

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

getch(); }

Программа 3_03b.c

/* Сортировка фамилий */

#include <stdio.h>

#include <conio.h>

#include <string.h>

#define N 10

main () {

cnar a[N][20],tmp[20];

int i,j; Clrscr () ;

puts("Введите 10 фамилий по одной в строке");

for(i=0; i<N; i++)

gets(&a[i][0]);

for(1=0; i<N-l; 1++)

for(j=i+l; j<N; j++)

if(strcmp(&a[i] [0], &a[j] [0])>0) {

strcpy(tmp,&a[i][0]);

strcpy(&a[i][0],&a[j][0]);

strcpy(&a[j][0],tmp); }

puts("А теперь они же по алфавиту");

for (1=0; i<N; i++)

puts(&a[i][0]);

getch(); }

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

program sort;

{ Сортировка фамилий }

uses crt;

const

n=10; var

j,k:integer; tmp:string[20];

name:array [l..n] of string[20];

begin cirscr;

for j:=1 to n do begin

writeln('Введи очередную фамилию');

readln(name[j]); end;

clrscr;

writeln('Фамилии до упорядочения :');

for j :=1 to n do

begin

gotoxy(1,j+2);

write(name[j]);

end;

for j:=1 to n-1 do

{

for k:=j+l to n do

begin

if name[j]>name[k] then

begin

tmp:=name [j];

name[j]:=name[k];

name[k]:=tmp;

end

end;

gotoxy(40,l);

writeln('Фамилии после упорядочения :');

for j:=1 to n do

begin

gotoxy (40,j+2);

write(name[j]);

end;

readln;

end.

Задание 3.04. Подсчет числа слов в строке

Предполагая, что вводимая строка содержит не более 80-ти символов и состоит из "слов", разделенных одним или более пробелами, подсчитать количество слов в строке. Обратите внимание на критические ситуации — строка пуста, строка состоит из одних пробелов, строка содержит единственное слово, слова могут содержать единственный символ, отличный от пробела.

Совет 1 (общий)

В начале следует проверить длину введенной строки и, если она равна 0, сообщить, что число слов тоже равно 0. Затем имеет смысл проверить первый символ строки и, если он отличен от пробела, зафиксировать начало первого слова. Дальнейший анализ можно оформить в виде цикла, в котором проверяется очередной символ строки с учетом одной из двух возможных ситуаций - ему предшествовал пробел или символ, отличный от пробела. При переходе с пробела на непробел счетчик слов следует увеличить на 1. Переменная space хрэиит информацию о предшествующем символе — она равна 1 млм true, если предшествовавшим символом был пробел. Ее значение меняется на противоположное, если только один из двух смежных символов является пробелом.




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