Re: [FWD] Алгоритм

From
Oleg I. Khovayko ()
To
Veniamin Novoselsky
Date
2002-07-12T23:35:46Z
Area
RU.ALGORITHMS
From: "Oleg I. Khovayko" <olegh@ncbi.nlm.nih.gov>

> 
> есть слово, совершенно произвольное, для него надо составить матрицу ( 5 х 5 )
> след. вида:
> 
>   _m_   _o_   _n_   _a_   _r_
>   _c_   _h_   _y_   b   d
>   e   f   g  i/j  k
>   l   p   q   s   t
>   u   v   w   x   z
> 
> Это для слова _monarchy_. Т.е. записывается слово, повторяющиеся в нем символы
> отбрасываются, а остальные символы алфавита записываются попорядку. (i/j - один
> и тот же символ).
> 

Тогда слово не совершенно произвольное,
а такое, в котором нет повторяюшихся букв.
Иначе условия "записывается слово" и 
"матрицу ( 5 х 5 )" вступаят в противоречие.

Ибо как ты засунешь в матрицу ( 5 х 5 ) слово:
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
а вдобавок к нему - еще и почти весь алфавит?!?!?!?
Я вижу только одно решение: не печатaть в слове
повторяющихся букв которые уже до этого были напечатаны, 
то есть все буквы печатать по 
одному разу. Например слово "abba" печатать как "ab",
а "zanzibar" - как "zanibr"

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

Ладно. Ниже - программа, которая рисует 
твою матрицу ( 5 х 5 ).
-----------------------------------------------
#include <stdio.h>
#include <string.h>


static int linepos = 0;

void p5(const char *format, char c, char flag) {
  if(flag && c !='j') {
    printf(c == 'i'? " i/j " : format, c);  
    if(++linepos >= 5) {
      linepos = 0;
      putchar('\n');
    }
  }
}

void print5x5(const char *in) {
  char buf[100];
  strcpy(buf, in);
  char *p = strchr(buf, 'j');
  if(p) *p = 'i'; 
  linepos = 0;
  char need_print[0200];
  memset(need_print, 1, sizeof(need_print));
  
  for(p = buf; *p; p++) {
    p5(" _%c_ ", *p, need_print[*p]);
    need_print[*p] = 0;
  }

  for(char c = 'a'; c <= 'z'; c++) 
    p5("  %c  ", c, need_print[c]);
      
  putchar('\n');
}


main() {
  print5x5("monarchy");
  print5x5("micro");
  print5x5("jopa");
  print5x5("zanzibar");
  print5x5("abracadabra");
}


-- 
#include <best/regards.hpp>
Oleg I. KHOVAYKO  
(301)435-5885 || WEB: http://olegh.spedia.net
--- ifmail v.2.15dev5
 * Origin: National Center for Biotechnology Information (2:5020/400)