Académique Documents
Professionnel Documents
Culture Documents
2009-1
• Algumas Dicas para Competições
• Entrada e Saída Avançadas
• Algumas Funções Úteis
Algumas Dicas para Competições
Nomes de Variáveis e Funções
Algumas Dicas para Competições
Nomes de Variáveis e Funções
for ( radiusOfTheCircle = 0;
r a d i u s O f T h e C i r c l e < maxRadiusOfTheCircle ;
r a d i u s O f T h e C i r c l e ++)
{
/∗ . . . ∗/
}
Algumas Dicas para Competições
Comentários
Algumas Dicas para Competições
Comentários
/∗ . . . ∗/
i n t v [MAXN ] ;
i n t m[MAXN ] [ MAXN ] ;
int n;
Algumas Dicas para Competições
Depuração
Algumas Dicas para Competições
Depuração
f o r ( i = 0 ; i < n ; i ++)
{
f o r ( j = ( i + 1 ) ; j < n ; j ++)
{
p r i n t f ( " [%d,%d ] " , i , j ) ;
p r i n t f ( "%d \ n " , i ∗ j ) ;
}
}
Algumas Dicas para Competições
Legibilidade
Algumas Dicas para Competições
Legibilidade
i n t main ( void )
{
int n;
double x1 , x2 , y1 , y2 ;
while ( 1 )
{
s c a n f ( "%d " ,&n ) ;
i f ( ! n ) break ;
s c a n f ( "%l f%l f " ,&x1 ,& y1 ) ;
s c a n f ( "%l f%l f " ,&x2 ,& y2 ) ;
p r i n t f ( " %.3 f \ n " , s q r t ( ( x1−x2 ) ∗
( x1−x2 ) + ( y1−y2 ) ∗ ( y1−y2 ) ) ) ;
}
return 0;
}
Algumas Dicas para Competições
Legibilidade
typedef s t r u c t _Ponto
{
double x , y ;
} Ponto ;
void l e P o n t o ( Ponto ∗p )
{
s c a n f ( "%l f%l f " , &(p−>x ) , &(p−>y ) ) ;
}
i n t main ( void )
{
int n;
Ponto p1 , p2 ;
while ( 1 )
{
s c a n f ( "%d " , &n ) ;
i f ( n == 0 )
{
break ;
}
Algumas Dicas para Competições
Legibilidade
l e P o n t o (&p1 ) ;
l e P o n t o (&p2 ) ;
return 0;
}
• Algumas Dicas para Competições
• Entrada e Saída Avançadas
• Algumas Funções Úteis
Entrada e Saída Avançadas
printf
Entrada e Saída Avançadas
printf
• printf("[Formato(s)]", ...);
Entrada e Saída Avançadas
printf
• printf("[Formato(s)]", ...);
• Formato:
% [Flags] [[Tamanho] [.Precisão]] [Modificador] Conversor
Entrada e Saída Avançadas
printf
Conversor Descrição
d int (decimal)
o int (octal)
x int (hexadecimal – abcdef)
X int (hexadecimal – ABCDEF)
u unsigned
f double
c char
s String (vetor de char)
Entrada e Saída Avançadas
printf
Modificador Descrição
h short
l long
ll long long
Entrada e Saída Avançadas
printf
Flag Descrição
0 Preenche com zeros à esquerda
- Justifica à esquerda (ignora flag 0)
Deixa espaço em branco para sinal positivo
+ Força o aparecimento do sinal
Entrada e Saída Avançadas
printf
Seqüência Descrição
%% %
\" "
\\ \
\n Nova linha
\t Tabulação horizontal
Entrada e Saída Avançadas
printf
Conversor Descrição
d int (decimal)
o int (octal)
x int (hexadecimal – abcdef)
X int (hexadecimal – ABCDEF)
u unsigned
f float
c char
s String (ignora espaços brancos e lê
até espaço branco)
[ Lê apenas um determinado conjunto
de caracteres
Entrada e Saída Avançadas
scanf
Modificador Descrição
h short
l long
ll long long
Entrada e Saída Avançadas
scanf
• Conversor [:
• Seqüência de caracteres terminada por ] corresponde ao
conjunto a ser lido.
• Para incluir o ], coloque-o antes de todos os outros
caracteres (e encerre com outro ]).
• Caracter ˆ no início da seqüência indica que o conjunto
não contém os caracteres especificados.
• Utilize - para intervalos de caracteres.
Entrada e Saída Avançadas
scanf
• memset(v, b, sizeof(v));
• Preenche com o byte b todo o vetor v.
Algumas Funções Úteis
Funções Genéricas
• memset(v, b, sizeof(v));
• Preenche com o byte b todo o vetor v.
• Exemplos:
memset ( v , 0 , s i z e o f ( v ) ) ;
memset ( v , 0xFF , s i z e o f ( v ) ) ;
msmset ( v , −1, s i z e o f ( v ) ) ;
a1 = ( i n t ∗ ) e1 ;
a2 = ( i n t ∗ ) e2 ;
i f ( ∗ a1 < ∗a2 )
r e t u r n −1;
i f ( ∗ a1 > ∗a2 )
return 1;
return 0;
}
Algumas Funções Úteis
Funções de Ordenação e Busca
i n t v [MAXN ] ;
int n;
i n t key ,
∗elem ;
q s o r t ( v , n , s i z e o f ( v [ 0 ] ) , intcmp ) ;
Algumas Funções Úteis
Funções de Ordenação e Busca
• tam = strlen(s);
• Retorna o tamanho da string s.
Algumas Funções Úteis
Funções para Tratamento de String
• tam = strlen(s);
• Retorna o tamanho da string s.
• strcpy(s1, s2);
• Copia a string em s2 para s1.
Algumas Funções Úteis
Funções para Tratamento de String
• strcpy(s1, s2);
• Copia a string em s2 para s1.
• strcat(s1, s2);
• Concatena a string em s2 ao final string s1.
Algumas Funções Úteis
Funções para Tratamento de String
• r = strtok(s1, s2);
• Separa a string em s1 em tokens, delimitados pelos
caracteres em s2.
• Chamadas subseqüentes de strtok são feitas com s1
tendo valor NULL.
• Retorna um ponteiro para o próximo token, ou NULL caso
não haja mais tokens.
• s2 pode ser diferente a cada chamada.
• Cuidado! strtok altera a string s1.
Algumas Funções Úteis
Funções para Tratamento de String
s c a n f ( "%s%s " , s1 , s2 ) ;
f o r ( r = s t r t o k ( s1 , s2 ) ;
r ! = NULL ;
r = s t r t o k ( NULL , s2 ) )
{
p r i n t f ( "%s \ n " , r ) ;
}