Страница 1 из 1

Срочно задача в Паскале строковые величины!

Добавлено: 12 ноя 2008, 18:18
Foolloock
Уважаемые умные люди,которые просматривают в данный момент эту тему!Срочно до 6 часов утра 13 ноября сего года я нуждаюсь в решении следующей задачи:


---В строке удалить символ двоеточие( : ) и подсчитать количество удалённых символов.---


Если я завтра не здам эту задачу, то мне хана :( :( :(

Очень прошу помоч!Приму несколько вариантов решения :D

Re: Срочно задача в Паскале строковые величины!

Добавлено: 12 ноя 2008, 18:52
Apokal
Строка имеет ограниченый размер?
Если нет то:

Код: Выделить всё

Uses CRT;
var
counter,i:integer; buf:array[0..256] of char;
begin
writeln('Enter String:');
readln(buf);
for i:=0 to 256 do
      if(buf[i]=0) break;
      else 
         if(buf[i]=':')
         begin
             buf[i]=32;
             counter:=counter+1;
         end;
         else continue;
writeln('processed string : ',buf); 
writeln(' number of deleted chars : ',counter); 
end.
Еси есть какието синтаксические ошибки то уж извините я реально забыл паскаль, но думаю с кода сама идея понятна.

Re: Срочно задача в Паскале строковые величины!

Добавлено: 12 ноя 2008, 22:07
Foolloock
Спасибо большое,но это немного неправильный вариант,точнее прога работает но решение не рационально)Есть какие другие варианты?

Re: Срочно задача в Паскале строковые величины!

Добавлено: 12 ноя 2008, 22:30
Apokal
Я б отладил этот код, но просто у меня траблы с видюхой при запуске паскаля тупо перестает подаватса сигнал на моник, никак нерешу. А нащет других вариантов -- то могу екзешник выложить или код на с++ написать, пойдет?

Я тут зохавал мандаринку, вспомнил что паскаль то непишет в конце строчки 0 а пишет в первый байт количесвто символов + readln неможет читать в массив и настоящие потсаны вместо counter:=counter+1 пишут inc(counter);

Вообщем после доработок вот что вышло проверь может запашет))))

Код: Выделить всё

Uses CRT;
var
const counter:integer:=0; i:integer; buff:string;
begin
writeln('Enter String:');
readln(buff);
for i:=0 to length(buff) do
        if buff[i]=':') then
        begin
            buff[i]=32;
            inc(counter);
        end;
        else continue;
writeln('processed string : ',buff); 
writeln(' number of deleted chars : ',counter); 
end. 
я тут вместо символов двоеточия тупо ставил пробелы, но еси тебе реально нада удалить сивмволы двоеточия то вместо buff=32; напишы delete(buff,i,1).

Re: Срочно задача в Паскале строковые величины!

Добавлено: 13 ноя 2008, 07:51
Foolloock
ВО!Спс дружище!

Re: Срочно задача в Паскале строковые величины!

Добавлено: 13 ноя 2008, 11:52
zubchik
Дорогие друзья!! мне очень необходима ваша помощь!!
у меня есть одна задача, с которой я не могу справиться!! если вам не трудно, то помогите...если я не принесу решение этой задачи, то МЕНЯ ПОВЕСИТ МОЯ ЗЛАЯ УЧИТЕЛЬНИЦА

задача выглядит так
Проверить, одинаковое ли число открывающихся и закрывающихся скобок в данной строке.

ЗАРАНИЕ СПАСИБО!!

Re: Срочно задача в Паскале строковые величины!

Добавлено: 13 ноя 2008, 16:19
Apokal
Foolloock писал(а):ВО!Спс дружище!

Абы оно помогло)))
Дорогие друзья!! мне очень необходима ваша помощь!!
у меня есть одна задача, с которой я не могу справиться!! если вам не трудно, то помогите...если я не принесу решение этой задачи, то МЕНЯ ПОВЕСИТ МОЯ ЗЛАЯ УЧИТЕЛЬНИЦА

задача выглядит так
Проверить, одинаковое ли число открывающихся и закрывающихся скобок в данной строке.

ЗАРАНИЕ СПАСИБО!!
Я так понимаю задача на паскале?

Ну вот примерно код хз пашет ли он:

Код: Выделить всё

Uses CRT;
var
const counter1:integer:=0; const counter2:integer:=0; i:integer; buff:string;
begin
writeln('Enter String:');
readln(buff);
for i:=0 to length(buff) do
        if buff[i]='(' then
            inc(counter1);
        else 
           if buff[i]=')' then
              inc(counter2);
           else continue;
if counter1=counter2 then writeln('Chislo skobok odinakovoe');
else writeln('Chislo skobok neodinakovoe');
end.
Можно и через case of :

Код: Выделить всё

Uses CRT;
var
const counter1:integer:=0; const counter2:integer:=0; i:integer; buff:string;
begin
writeln('Enter String:');
readln(buff);
for i:=0 to length(buff) do
        case buff[i] of
        '(':  inc(counter1);
        ')':  inc(counter2);
        else continue;
        end;
if counter1=counter2 then writeln('Chislo skobok odinakovoe');
else writeln('Chislo skobok neodinakovoe');
end.

Re: Срочно задача в Паскале строковые величины!

Добавлено: 13 ноя 2008, 20:10
Esgal
в 10м классе на олимпиаду ходил. такая же (про скобки) задача была, только скобки трёх видов {}[]() и пнужно ыбло проверить правильность "выражения"...
т.е. если {[}] - это не правильно... вот

Re: Срочно задача в Паскале строковые величины!

Добавлено: 13 ноя 2008, 21:23
Foolloock
Спасибо что помогли однокласснику моему))