Наглость - второе счастье!
Ура! представляете, я сама сдела прогу и она пошла!Начала осваивать Паскаль=)

Вот дали еще одну (знаю, что для вас это слишком просто, но не судите строго.я только учусь) :

Даны два слова. Определить, сколько начальных букв превого слова совпадает с начальными буквами второго слова.

Я что-то написала, она даж запускается, но ответ не дает...



вот то что я сделала



Помогите исправить.

Комментарии
27.12.2006 в 17:33

WAAAAAAAAAGH!!!!!!1111ONEONE
а i кто будет инкрементировать?

Да и в паскале первая буква слово - это 1, а по умолчанию i = 0.
27.12.2006 в 17:54

Наглость - второе счастье!
прости пожал, не мог бы мне разъяснить что такое инкрементировать???

А про первую букву: это написать L:=length(s1) for i:=1 to L , так?
27.12.2006 в 17:55

Наглость - второе счастье!
или можно прогсто i:=1
27.12.2006 в 18:11

сЧастливый Идиот
ух в топку паскалевские строки. юзай массивы Char. типа:



type

TStr = array[0..80] of Char;

var s1,s2:TStr;



тогда можно и от 0 все делать и проверять конец строки на 0; типа



while ((s1[i]<>Chr(0)) and (s2[i]<>Chr(0))) do

begin

...

end;





внутри нужно увеличивать i если соответсвующие элементы массивов равны, или сделать break из цикла если всё плохо.

в i у нас и накопится длина одинаковой части.
27.12.2006 в 18:25

Наглость - второе счастье!
можно то можно... а мне обязательно строками надо!!!
27.12.2006 в 22:46

Life is a life... We are the humans...
а в паскале разве нельзя обращаться к типу string всё равно так же как к char[]??
27.12.2006 в 23:08

WAAAAAAAAAGH!!!!!!1111ONEONE
MrXaK вообще можно. но индексация с 1
28.12.2006 в 09:32

Люди никогда не достигнут совершенства, пока будут оставаться людьми...
MrXaK, Vj_o-oy, ненавижу C/C++ за то, что там всё с нуля! БРРРР!

Особенно ХИП (очередь с приоритетами) самому писать это ваще "круто"..
28.12.2006 в 11:48

WAAAAAAAAAGH!!!!!!1111ONEONE
[revolver] имхо дело привычки.

/me посмотрел на стопочку старых дисков пронумерованных с нуля
28.12.2006 в 20:25

Program strings;

uses crt;

var s1,s2,s3:string;

n:integer;

exitFlag:boolean;



begin

write('vvedite slovo1 => ');readln(S1);

write('vvedite slovo2 => ');readln(S2);

exitFlag:=false;

n:=0;



while (n<=length(s1)) and (not exitFlag) do begin



if copy(s1,n,1)=copy(s2,n,1)

then n:=n+1

else exitFlag:=true;



end;

writeln('vsego obshih simvolov = ',n-1);

readkey;

end.



//объяснить?
29.12.2006 в 12:18

сЧастливый Идиот
exitflag в топку. юзай break;

на компилятор полагайся да сам не плошай. вычисление длины лучше вынести из цикла в отдельную переменную.

а если у нас второе слово короче первого? баги баги баги

да и копи зачем тут?

29.12.2006 в 17:17

Program strings;

uses crt;

var s1,s2,s3:string;

ln,n:integer;



begin



write('vvedite slovo1 => ');readln(S1);

write('vvedite slovo2 => ');readln(S2);



if length(s1)<=length(s2)

then ln:=length(s1)

else ln:=length(s2);



n:=0;

while (n<=ln) do begin



if s1[n]=s2[n]

then n:=n+1

else break;



end;



if n=0 then n:=1; //хз почему я так сделала но так работает)))))))

writeln('vsego obshih simvolov = ',n-1); readkey;

end.



// как ни странно но предыдущая версия работала в случае когда второе слово длинней ^^
29.12.2006 в 22:18

Наглость - второе счастье!
Лиилит , спасибо! Но я уже все сдала! И теперь живу с зачетом!!!!
29.12.2006 в 22:28

Тебе спасибо^^ за разминку мозгов что совсем поехали на литературе.
14.01.2007 в 13:16

Геральд
Умничка,сама делатьначала)