ojoaootavio Postado Junho 11, 2012 Denunciar Share Postado Junho 11, 2012 http://olimpiada.ic.unicamp.br/pratique/pr...2/caca_palavrasEstou resolvendo esse problema e preciso terminar até a 3 feirajá fiz essa parte #include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>FILE *abreArquivo(char *arq, char *tipo){ //função para abrir arquivo. Retorna NULL caso não consiga abrir o arquivo FILE *pFile = fopen(arq, tipo); if (pFile==NULL){ printf("Arquivo %s não encontrado!", arq); } return pFile;}void fechaArquivo(FILE *pFile){ fclose(pFile);}char *mat, **pal, palavra[30]; char n; int i, j, lin, col, nPal;void parsingArquivoEntrada(char *arq){ //Abre arquivo para leitura FILE *pFile = abreArquivo(arq, "r"); if (pFile){ fscanf(pFile, "%d*c", &lin); fscanf(pFile, "%d*c", &col); fscanf(pFile, "%d*c", &nPal); mat = (char*) malloc(lin*col*sizeof(char)); pal = (char**) malloc(nPal*sizeof(char)); //para acessar a matriz definida com um vetor tem que usar o calculo //linha_acessar * colunas_matriz + coluna_acessar for (i=0; i < lin; i++){ for (j=0; j < col; j++){ fscanf(pFile, "%c", &mat[i*col+j]); } fscanf(pFile, "%c", &n); } for (i=0; i < nPal; i++){ fgets(palavra, 30, pFile); fscanf(pFile, "%s", palavra); pal = malloc (strlen(palavra) * sizeof(char)); strcpy(pal, palavra) ; printf("%s\n", pal); } for(i=0;i<lin;i++){ printf("\n\n"); for(j=0;j<col;j++){ printf(" %c ", mat[i*col+j]); } } printf("\n\n\n"); /* while (!feof(pFile)){ fscanf(pFile, "%c", &n); printf ("%c", n); } */ //Fecha arquivo fechaArquivo(pFile); }}void gravaArquivoSaida(char *arq, char *string){ //Abre arquivo para leitura FILE *pFile = abreArquivo(arq, "w"); if (pFile){ fprintf(pFile, "%s", string); //Fecha arquivo fechaArquivo(pFile); }}int main(int argc, char* argv[]){ char *str; if (argc < 3){ printf("Ow mane, esqueceu de um parametro de entrada!\n"); return 0; } else { parsingArquivoEntrada(argv[1]); str = "Teste 1\n0 1 2 3 4 5\n6 7 8 9 10\nfim"; gravaArquivoSaida(argv[2], str); str = "Teste 2\n0 1 2 3 4 5\n6 7 8 9 10\nfim"; gravaArquivoSaida(argv[2], str); } return 0;}A entrada é8 11 8abcdefghigghebkwaldorkftyawaldormftsimrlqsrcbyoarbedeyvklcbqwikomkstrebgadhrbyuiqlxcnbjfwaldorfbambibettyparalelepipedodagbertfrodrebeldeamarrarcomo prossigo com o código, alguém pode me ajudar a terminar? Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
ojoaootavio
http://olimpiada.ic.unicamp.br/pratique/pr...2/caca_palavras
Estou resolvendo esse problema e preciso terminar até a 3 feira
já fiz essa parte
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
FILE *abreArquivo(char *arq, char *tipo){
//função para abrir arquivo. Retorna NULL caso não consiga abrir o arquivo
FILE *pFile = fopen(arq, tipo);
if (pFile==NULL){
printf("Arquivo %s não encontrado!", arq);
}
return pFile;
}
void fechaArquivo(FILE *pFile){
fclose(pFile);
}
char *mat, **pal, palavra[30];
char n;
int i, j, lin, col, nPal;
void parsingArquivoEntrada(char *arq){
//Abre arquivo para leitura
FILE *pFile = abreArquivo(arq, "r");
if (pFile){
fscanf(pFile, "%d*c", &lin);
fscanf(pFile, "%d*c", &col);
fscanf(pFile, "%d*c", &nPal);
mat = (char*) malloc(lin*col*sizeof(char));
pal = (char**) malloc(nPal*sizeof(char));
//para acessar a matriz definida com um vetor tem que usar o calculo
//linha_acessar * colunas_matriz + coluna_acessar
for (i=0; i < lin; i++){
for (j=0; j < col; j++){
fscanf(pFile, "%c", &mat[i*col+j]);
}
fscanf(pFile, "%c", &n);
}
for (i=0; i < nPal; i++){
fgets(palavra, 30, pFile);
fscanf(pFile, "%s", palavra);
pal = malloc (strlen(palavra) * sizeof(char));
strcpy(pal, palavra) ;
printf("%s\n", pal);
}
for(i=0;i<lin;i++){
printf("\n\n");
for(j=0;j<col;j++){
printf(" %c ", mat[i*col+j]);
}
}
printf("\n\n\n");
/* while (!feof(pFile)){
fscanf(pFile, "%c", &n);
printf ("%c", n);
}
*/
//Fecha arquivo
fechaArquivo(pFile);
}
}
void gravaArquivoSaida(char *arq, char *string){
//Abre arquivo para leitura
FILE *pFile = abreArquivo(arq, "w");
if (pFile){
fprintf(pFile, "%s", string);
//Fecha arquivo
fechaArquivo(pFile);
}
}
int main(int argc, char* argv[]){
char *str;
if (argc < 3){
printf("Ow mane, esqueceu de um parametro de entrada!\n");
return 0;
} else {
parsingArquivoEntrada(argv[1]);
str = "Teste 1\n0 1 2 3 4 5\n6 7 8 9 10\nfim";
gravaArquivoSaida(argv[2], str);
str = "Teste 2\n0 1 2 3 4 5\n6 7 8 9 10\nfim";
gravaArquivoSaida(argv[2], str);
}
return 0;
}
A entrada é
8 11 8
abcdefghigg
hebkwaldork
ftyawaldorm
ftsimrlqsrc
byoarbedeyv
klcbqwikomk
strebgadhrb
yuiqlxcnbjf
waldorf
bambi
betty
paralelepipedo
dagbert
frod
rebelde
amarrar
como prossigo com o código, alguém pode me ajudar a terminar?
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.