Google Code Jam 2010 - Africa Classification Round
Publicado por Enzo de Brito Ferber (última atualização em 19/12/2011)
[ Hits: 3.561 ]
Homepage: http://www.maximasonorizacao.com.br
Problema B.
http://code.google.com/codejam/contest/dashboard?c=351101#s=p1
Dado um arquivo de entrada com n linhas, ler cada linha do arquivo e imprimir as PALAVRAS em ordem inversa.
Por exemplo:
VIVA O LINUX É MUITO BOM
Imprime:
Case #1: BOM MUITO É LINUX O VIVA
// reverse.c // Enzo Ferber - dez 2011 #include <stdio.h> #include <stdlib.h> #include <string.h> #define LINES 101 #define LETTERS 1001 // reverse word from A to B void rword ( char *str, int a, int b ) { char *aux = (char *) malloc ( (b - a + 1) * sizeof ( char )); register int i; for ( i = a; i < b; i++ ) *(aux++) = str[i]; for ( i = a; i < b; i++ ) str[i] = *(--aux); // free memory free ( aux ); } // reverse the whole string void rstr ( char *str ) { char *backup = (char *) malloc ( strlen(str) * sizeof(char)); register int i, j; for ( i = 0, j = strlen(str) - 1; i < strlen(str); i++, j-- ) backup[i] = str[j]; strncpy ( str, backup, strlen(str) ); free ( backup ); } // main function ... int main ( int argc, char *argv[] ) { register int i = 0, j = 0, a, lines; char line[ LINES ][ LETTERS ], c; FILE *input; // arguments if ( argc < 2 ) { printf ( "Usage: %s <input_file>\n", argv[0] ); exit ( -1 ); } // try to open input file if( !(input = fopen(argv[1], "r"))) { printf ( "# Could not open file %s\n", argv[1] ); exit ( -1 ); } // read file while ( (c = fgetc(input)) && !feof(input) ) { if ( c != '\n' ) line[i][j++] = c; else { line[i][j] = 0x0; i++; j = 0; } } // store lines number lines = i; // reverse whole string, then words for ( i = 1; i < lines; i++) { rstr ( line[i] ); for ( j = 0; j < strlen(line[i]); j++ ) { for ( a = j; a <= strlen(line[i]); a++ ) { if ( line[i][a] == ' ' || line[i][a] == '{FONTE}' ) { rword(line[i], j, a); j = a; break; } } } } for ( i = 1; i < lines; i++ ) printf ( "Case #%d: %s\n", i, line[i] ); return 0; }
Calculando o número de Neper !
Método de Newton Modificado p/ Raízes Multiplas
Nenhum coment�rio foi encontrado.
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Atualizar Debian Online de uma Versão para outra
Dica para encontrar diversos jogos Indies criativos
Instalando Discord no Debian 13
Instalar driver Nvidia no Debian 13
Redimensionando, espelhando, convertendo e rotacionando imagens com script
Software livre - será que eu estou tão errado assim? (14)
Boot do PosRog so funciona em notebook (1)