.............................
..............................
 Примеры решения.

Вот несколько примеров задач, решенных на разных языках программирования.

Пример 1
Дан текст, состоящий из слов, знаков препинания и других символов. Словом в тексте считается последовательность символов из прописных и строчных букв латинского алфавита. Требуется перевернуть (записать в обратном порядке) все слова текста, оставив знаки препинания и другие символы, включая буквы русского алфавита, без изменений. В строке не более 255 символов, строк в файле не более 1000.
Примеры:
Входной текст: This is an example.
Результат: sihT si na elpmaxe.

Написать программу на C++

Вот примерное решение.
#include < stdio.h >
#include < cstring.h >
#include < stdlib.h >
#include < string.h >

using namespace std;
static char en[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};

string string_rev(string s)
{
	string t = s;
	char c;
	for(int i = 0; i < int(t.length() / 2); i++){
		c = t[i];
		t[i] = t[t.length() - 1 - i];
		t[t.length() - 1 - i] = c;
	}
	
	return t;
}
string read_write_data(FILE* in, FILE* out)
{
	char* t;
	string data = ""
	int c;
	int in_word = 0;
	do{
		c = getc(in);
		
		//===== Проверка: является ли символ частью слова
		for(int i = 0; i < sizeof(en); i++)
			if(c == en[i]) in_word = 1;
		
		if(!in_word && c != EOF) putc(c, out);
	}while(!in_word && c != EOF);

	while(in_word && c != EOF){
		data += c;
		c = getc(in);
		
		for(int i = 0; i < sizeof(en); i++){
			if(c == en[i]){ 
				in_word = 1;
				break;
			}
			in_word = 0;
		}
		
		if(!in_word && c != EOF){
			// Записать перевёрнутое слово
			fprintf(out, "%s", string_rev(data).c_str());
			putc(c, out);
		}
	}
	
	return data;
}


int main()
{
	FILE* in = fopen("rev.in", "r");
	FILE* out = fopen("rev.out", "w");
	if(!in || !out){
		printf("Программа не нашла необходимые файлы REV.IN и REV.OUT\n");
		exit(1);
	}
	char* t;
	string s;
	
	do{
		//Читает и записывает (всё делает функция read_write_data
	}while(read_write_data(in, out) != "" );
	fclose(in);
	fclose(out);
	return 0;
}
Пример 2
Написать программу на Turbo Pascal, которая находит максимальный элемент в одномерном массиве.
Программа должна вводить массив и выводить его на екран.

Примерное решение.
uses crt;
var a: array [1..100] of integer; {задаем одноменый массив целых чисел}
    n,i,max :integer; {n - кол-во элементов, i - переменная для индексирования элементов, max - максимальный элемент}
begin
     clrscr; {очищаем экран}
     write('Введите размер массива ');
     readln(n);
     for i:=1 to n do begin	
         write('a[',i,']='); {ввод элементов массива с подсказкой }
         readln(a[i]);
     end;
     writeln('Получился следующий массив ');
     for i:=1 to n do		{вывод всех элементов массива на экран}
         write(a[i],' ');
     writeln;	
     
	 {Поиск наибольшего элемента}
	 max := a[1]; {предположим, что наибольший элемент массива №1 и будем с ним сравнивать}
	 for i := 2 to n do begin
         if(a[i] > max) then
                 max := a[i]; {если текущий элемент оказался больше максимального, 
								то теперь он максимальный}
                              
     end;
     writeln('максимум: ',max); { выведем максимальный элемент}
end.



 

 

Copyright © 2002 Yoursite.com. All rights reserved

Хостинг от uCoz