![]() |
![]() |
![]() |
|
![]() |
Примеры решения. Вот несколько примеров задач, решенных на разных языках программирования. Пример 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 |