[Pascal] РАБОТА С МНОЖЕСТВЕННЫМИ ТИПАМИ ДАННЫХ

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Fox_NICK, 25 Mar 2010.

  1. Fox_NICK

    Fox_NICK Elder - Старейшина

    Joined:
    10 Jan 2007
    Messages:
    45
    Likes Received:
    5
    Reputations:
    0
    Дана непустая последовательность символов. Требуется построить и напечатать множество, элементами которого являются встречающиеся в последовательности: знаки препинания и операций отношения.

    Code:
    program hw5 ;
    
    uses crt;
    
    var 
    
    	cur_symb,symb_of_end,j,y	:	char;
    	mn							:	set of char=['!'..'.'];
    	v_mnoj						:	set of char=['!'..'.'];
    
    BEGIN
    	clrscr;
    	cur_symb:='!';
    	symb_of_end:='.';
    	mn:=[];
    
    	
    	writeln('Введите символ указывающий на конец строки.');
    	readln(symb_of_end);
    	
    	v_mnoj:=['!'..'.'];
    	writeln('Введите множество символов.');
    	while cur_symb<>symb_of_end do begin
    		read(cur_symb);
    		if cur_symb in v_mnoj then mn:=mn+[cur_symb];
    		
    	end;
    	writeln('В множестве содержатся:');
    	writeln('знаки препинания:');
    	for j:='!' to '.' do
    		if j in mn then writeln(j);	
    
    	
    END.
    
    не работает( не подскажите в чем ошибка?
     
  2. Soherox

    Soherox Member

    Joined:
    17 Feb 2010
    Messages:
    45
    Likes Received:
    16
    Reputations:
    0
    Вот исправленная и подправленная версия, думаю поймете что к чему

    PHP:
    var

        
    cur_symbsymb_of_endyjchar;
        
    mnv_mnojv_mnoj2:  set of char;

    begin
      v_mnoj
    :=['!'..'.'];
      
    v_mnoj2:=[':'..'?'];
      
    cur_symb:=' ';
      
    mn:=[];
     {
    writeln('Введите символ указывающий на конецстроки.');}
      
    readln(symb_of_end);
     {
    writeln('Введите множество символов.');}
        while 
    cur_symb <> symb_of_end do
        
    begin
               read
    (cur_symb);
               if (
    cur_symb in v_mnoj) or (cur_symb in v_mnoj2then mn:=mn+[cur_symb]
          
    end;
     {
    writeln('В множестве содержатся:');
        
    writeln('знаки препинания:');}
        for 
    j:='!' to '.' do
            if 
    j in mn then write(j,' ');
        for 
    j:=':' to '?' do
            if 
    j in mn then write(j,' ');
      
    readln;
      
    readln;
    end.
    P.S. Добавил еще символы '!' '<' '>' '?' ':' ';'
     
    #2 Soherox, 25 Mar 2010
    Last edited: 25 Mar 2010
    1 person likes this.
  3. Fox_NICK

    Fox_NICK Elder - Старейшина

    Joined:
    10 Jan 2007
    Messages:
    45
    Likes Received:
    5
    Reputations:
    0
    ооо точно) сенк большое) + =)