Строки в Паскале

  • Автор темы mcbeat
  • Дата начала
M

mcbeat

#1
Задали 3 задачки:

1. Дана строка символов, которая изображает целое позитивное число. Если она представляет собой запись целого числа со значением последней цифры равной 0, то вывести «Данное число делиться на 10 нацело», в противном случае «Данное число не делиться на 10 нацело».



2. Дана строка, которая содержит хотя бы один символ пробела. Вывести подстроку, расположенную между первым и вторым пробелом исходной строки. Если строка содержит только один пробел, то вывести пустую строку.



3. Дана строка-предложение на русском языке. Подсчитать количество гласных букв, которые содержатся в строке.
 

nayke

Well-known member
04.08.2010
310
0
#2
1. Дана строка символов, которая изображает целое позитивное число. Если она представляет собой запись целого числа со значением последней цифры равной 0, то вывести «Данное число делиться на 10 нацело», в противном случае «Данное число не делиться на 10 нацело».
if s[Length(s)]='0' then writeln('Данное число делиться на 10 нацело')
else writeln('Данное число не делиться на 10 нацело');

2. Дана строка, которая содержит хотя бы один символ пробела. Вывести подстроку, расположенную между первым и вторым пробелом исходной строки. Если строка содержит только один пробел, то вывести пустую строку.
Delete(s,1,pos(' ',s));
if pos(' ',s)<>0 then res:=Copy(s,1,pos(' ',s));
writeln(res);

3. Дана строка-предложение на русском языке. Подсчитать количество гласных букв, которые содержатся в строке.
res:=0;
for i:=1 to length(s) do
if (s='а')or(s='е')or(s='о')or(s='у')or(s='ы')or(s='э')or(s='я')or(s='и')or(s='ю') then inc(res);
 
M

mcbeat

#5
if s[Length(s)]='0' then writeln('Данное число делиться на 10 нацело')
else writeln('Данное число не делиться на 10 нацело');



Delete(s,1,pos(' ',s));
if pos(' ',s)<>0 then res:=Copy(s,1,pos(' ',s));
writeln(res);



res:=0;
for i:=1 to length(s) do
if (s='а')or(s='е')or(s='о')or(s='у')or(s='ы')or(s='э')or(s='я')or(s='и')or(s='ю') then inc(res);


Я написал первую задачку так, но она работает не правильно:

Код:
program n5_1;
var s:string[6];
i:integer;
begin
s:='пример';
for i:=1 to 6 do
write(s[i], ' ');
begin
writeln;
for i:=1 to 6 do
write(ord(s[i]), '');
if s[Length(s)]='0' then writeln('Данное число делиться на 10 нацело')
else writeln('Данное число не делиться на 10 нацело');
end;
end.
 
M

mcbeat

#6
Блин, ни фига не получается, уже час сижу, и ни в какую(((((((

Помогите ПЛЗ, а то завтра экзамен, а мне только эти задачи остались!
 
09.11.2009
665
1
#7
№1(два варианта, незнаю какой правильный)
(первый, переводит символ в число и сумирует так 2+3=5)
Код:
var s:string;
ch:longint;
i:integer;
begin
writeln('vvedite chislo');
readln(s);
ch:=0;
for i:=1 to length(s) do
ch:=ch+ord(s[i]);
writeln('chislo = ',ch);
if ch mod 10 =0 then writeln('delitsa na 10')
else writeln('ne delitsa na 10');
readln;
end.
(второй, переводит символ в число и сумирует так 2+3=23
Код:
var s:string;
ch,n,k:longint;
i,j:integer;
begin
writeln('vvedite chislo');
readln(s);
ch:=0;
for i:=1 to length(s) do
begin
k:=3;
if ord(s[i])<=99 then k:=2;
if ord(s[i])<=9 then k:=1;
n:=1;
for j:=1 to k do n:=n*10;

writeln(''' ',s[i],'''=',ord(s[i]));

ch:=ch*n+ord(s[i]);
end;

writeln('chislo = ',ch);
if ch mod 10 =0 then writeln('delitsa na 10')
else writeln('ne delitsa na 10');
readln;
end.
№2
Код:
var s,s2:string;
i,l,r:integer;
begin
writeln('vvedite stroku');
readln(s);
l:=0;
r:=0;
l:=pos(' ',s);
delete(s,1,l);
r:=pos(' ',s);
s2:=copy(s,1,r);
if r=0 then writeln('_______________')
else
writeln(s2);
readln;
end.
№3
Код:
var s:string;
i,k:integer;

begin
writeln('vvedite stroku');
readln(s);
k:=0;
for i:=1 to length(s) do
if (s[i] in ['a','A','e','E','i','I','o','O','u','U']) then k:=k+1;//тут замени буквы на руские
writeln('k=',k);
readln;
end.