Dale
Участник
|
Как и обещал, пишу пример:
Code Sample:
{Решение задач типа "Вывести все слова, удовлетворяющие определенному условию"} uses crt; const razd=' '; {разделитель} var s:string; {входная строка} result:string;{результат} {дополнительные переменные} s1,s2:string; l:integer; function pr(s:string):boolean;{функция для проверки условия} var i:integer; result:boolean; begin result:=false; for i:=1 to length(s) do if s[ i ]='к' then result:=true; pr:=result; end; begin clrscr; writeln('Введите строку:'); readln(s); {------------------------------} result:=''; s:=s+razd;{Прибавляем в конец строки разделитель для того, чтобы каждое слово оканчивалось пробелом} {Перебор всех слов} while length(s)>0 do begin l:=pos(razd,s);{Позиция первого разделителя в строке} s1:=copy(s,1,l-1);{Выбираем очередное слово (не включая разделитель)} if pr(s1) then result:=result+s1+razd;{Если выполняется условие, прибавляем к результату слово} delete(s,1,l);{Удаляем слово из строки} end; {------------------------------} writeln(result); readkey; end.
Как работает, думаю будет ясно из комментариев. Замечу, что: 1)Пробел к концу слова прибавлять не обязательно, но ИМХО удобно. Вообще, чтобы выделить слова, можно считать, что они: 1. Разделены пробелами 2. Оканчиваются пробелами Условием конца слова в первом случае выступает "в конце пробел или слово в конце строки". Если прибавить в конце строи пробел, то выйдет, что достаточно условия "В конце слова находится пробел". 2) В принципе можно обойтись без использования функций, но использование функции имеет преимущество: если понадобится не "вывести все слова, содержащие к", а например "вывести все слова, содержащие не менее пяти букв", достаточно просто изменить функцию:
Code Sample:
function pr(s:string):boolean;{функция для проверки условия} begin pr:=(length(s)>=5); end;
|
Всего сообщений: 139 | Присоединился: май 2009 | Отправлено: 19 янв. 2010 15:12 | IP
|
|
Vurdis
Новичок
|
Dale Спасибо огромное)
|
Всего сообщений: 10 | Присоединился: декабрь 2009 | Отправлено: 19 янв. 2010 15:49 | IP
|
|
Dale
Участник
|
На здоровье:-) Marina0331
Новичок написала программку в паскале, а мне выдает ошибку, не могу понять почему. помогите пожалуйста.
Пропущена точка с запятой после readln И еще: pi - стандартная константа паскаля, ее не обязательно объявлять заново (Сообщение отредактировал Dale 20 янв. 2010 1:39)
|
Всего сообщений: 139 | Присоединился: май 2009 | Отправлено: 20 янв. 2010 1:38 | IP
|
|
homka76
Новичок
|
Спасайте!!!!!!!! Сдать надо срочно контрольную по пргграммированию. 3 задачи решила, а еще с тремя - проблемы. 1. Дана матрица N x N вещественных чисел. Найти скалярное произведение столбца, содержащего максимальный элемент и строки, содержащей минимальный элемент матрицы. Если элементов несколько, то взять первый из имеющихся. 2. Дана последовательность слов. В каждом из них от 3 до 10 латинских букв; между словами - один пробел; за последним словом точка. Вывести в текстовый файл все слова, преобразовав их по правилу: оставить в слове только первые вхождения каждой буквы. 3. Дана информация о группе студентов, соержащая фамилию, несколько предметов, оценки по предметам. Вывести название предметов, по которым наилучшая и наихудшая успеваемость. Использовать структурный тип: массив записей. Исходные данные о студентах должны быть введены в программу из текстового файла. Заранее огромное спасибо!!!!!!!!!!!!! СПАСАЙТЕ!!!!!!!!!!!!!!! ответ вышлите на почту mkv76@mail.ru
|
Всего сообщений: 1 | Присоединился: январь 2010 | Отправлено: 22 янв. 2010 6:03 | IP
|
|
Alice Depp
Новичок
|
третью задачу, я знаю алгоритм решения, но ни разу не сталкивалась вводом из текстового файла(((
|
Всего сообщений: 8 | Присоединился: январь 2010 | Отправлено: 25 янв. 2010 15:41 | IP
|
|
Alice Depp
Новичок
|
люди помогите плиз))) Задача В двумерном массиве верно ли что макс и мин элемент находятся в одной области я чет набурдыкала, не считает, посмотрите, где ошибка,а?? uses crt; var A:array [1..50,1..50]of integer; i,j,n,m,max,min,s,l,h,v:integer; begin clrscr; write('vvedite n(stroki)');read (n); write('vvedite m(stolbci)');read (m ); for i:=1 to n do for j:=1 to m do read (A[i,j]); max:=A[1,1]; for i:=1 to n do for j:=1 to m do if A[i,j] >max then max:=A[i,j]; for i:=1 to n do for j:=1 to m do if A[i,j]=max then s:=i; for i:=1 to n do for j:=1 to m do if A[i,j]=max then l:=j; min:=A[1,1]; for i:=1 to n do for j:=1 to m do if A[i,j] <min then min:=A[i,j] ; for i:=1 to n do for j:=1 to m do if A[i,j]=min then h:=i; for i:=1 to n do for j:=1 to m do if A[i,j]=min then v:=j; if (s< n div 2) and (h< n div 2) and (l< m div 2) and (v< m div 2) then write ('yes'); if (s< n div 2) and (h< n div 2) and (l> m div 2) and (v> m div 2) then write ('yes'); if (s> n div 2) and (h> n div 2) and (l< m div 2) and (v< m div 2) then write ('yes') ; if (s> n div 2) and (h> n div 2) and (l> m div 2) and (v> m div 2)then write ('yes'); end.
|
Всего сообщений: 8 | Присоединился: январь 2010 | Отправлено: 26 янв. 2010 19:28 | IP
|
|
Korvet
Новичок
|
Цитата: Alice Depp написал 26 янв. 2010 19:28 Задача В двумерном массиве верно ли что макс и мин элемент находятся в одной области
program Alice_Depp; var A:array [1..50,1..50] of integer; i,j,n,m,max,min,imax,imin,jmax,jmin:integer; begin write('vvedite n(stroki)');readln (n); write('vvedite m(stolbci)');readln (m); for i:=1 to n do for j:=1 to m do readln (A[ i,j ]); max:=A[1,1]; min:=A[1,1]; imin:=1; jmin:=1; imax:=1; jmax:=1; for i:=1 to n do for j:=1 to m do begin if A[ i,j ] >max then begin max:=A[ i,j ]; imax:=i; jmax:=j; end; if A[ i,j ]<min then begin min:=a[ i,j ]; imin:=i; jmin:=i; end; end; if (imin<= n div 2) and (imax<= n div 2) and (jmin<= m div 2) and (jmax<= m div 2) then writeln ('da') else if (imin<= n div 2) and (imax<= n div 2) and (jmin>= m div 2) and (jmax>= m div 2) then writeln ('da') else if (imin>= n div 2) and (imax>= n div 2) and (jmin<= m div 2) and (jmax<= m div 2) then writeln ('da') else if (imin>= n div 2) and (imax>= n div 2) and (jmin>= m div 2) and (jmax>= m div 2) then writeln ('da') else Writeln('net'); readln; end.
|
Всего сообщений: 40 | Присоединился: ноябрь 2009 | Отправлено: 27 янв. 2010 1:41 | IP
|
|
Alice Depp
Новичок
|
Спасибо, ОГРОМНОЕ!!!
|
Всего сообщений: 8 | Присоединился: январь 2010 | Отправлено: 27 янв. 2010 15:23 | IP
|
|
westside
Новичок
|
Доказать (путем перебора возможных значений), что для любых величин A,B,c типа Boolean следующие пары логических выражений имеют одинаковые значения(эквивалентны): 1)А and B и B and A; 2)(A and B) and C и A and (B and C); 3)A or (A and B) и A; 4)A or (b and C) и (A or B) and (A or C).
|
Всего сообщений: 2 | Присоединился: апрель 2008 | Отправлено: 31 янв. 2010 23:00 | IP
|
|
fclm1996
Новичок
|
помогите плиз с 6 задачами до вторника 1) Написать программу, которая 10 раз выводит на экран имя и фамилию 2) написать программу, которая выводит таблицу квадратов первых десяти положительных чисел 3) написать программу, которая выводит таблицу квадратов первых пяти нечётных чисел 4) написать программу, которая вычисляет сумму первых n целых положительных чисел. Количество суммируемых чисел должно вводиться во время работы программы. Например: количество суммируемых чисел=20, значит ответ=)210 5) написать программу которая вычисляет сумму первых n целых положительных чётных чисел. Количество суммируемых чисел должно вводиться во время работы программы. например количество суммируемых чисел:12, значит сумма первых 12 положительных чисел =156 6) Написать программу, которая вычисляет сумму первых n членов ряда задаётся во время работы компьютера. Например количество суммируемых членов ряда 15, значит суммв первых 15 членов ряда равна 330 Помогите пожалуйста! оч надо! я сам ваще Паскаль не понимаю...
|
Всего сообщений: 1 | Присоединился: январь 2010 | Отправлено: 1 фев. 2010 11:57 | IP
|
|
|