K3nshin 0 Denunciar post Postado Novembro 17, 2008 Pessoal tem como me dar um help aki nesse codigo ta dificil de acertar esse =/ ta dando erro depois q eu preencho os vetores e nao consigo printar o resultado pois da erro no windows /*16.Faça um algoritmo que, lidas duas listas de nomes, compare-as e devolva o número de vezes que cada palavra da segunda lista aparece na primeira lista.*/ #include<stdio.h> #include<stdlib.h> #include<string.h> #define tam 5 typedef char lista1[tam][50]; typedef char lista2[tam][50]; void preencher (char *plista_1, char *plista_2); void comparar (char *plista_1, char *plista_2); main() { lista1 lista_1; lista2 lista_2; preencher (lista_1 , lista_2); comparar (lista_1 , lista_2); system("pause"); } void preencher (char *plista_1, char *plista_2) { int i; printf("Lista [01]\n"); for (i=1; i<=tam; i++) { printf("\t\tNome[%02d].: ",i); scanf ("%49[^\n]",&plista_1[i]); fflush(stdin); } printf("Lista [02]\n"); for (i=1; i<=tam; i++) { printf("\t\tNome[%02d].: ",i); scanf ("%49[^\n]",&plista_2[i]); fflush(stdin); } } void comparar(char *plista_1, char *plista_2) { int i; int aux; int cont = 0; for(i=1; i<=tam; i++) { for(aux=1; aux<=tam; aux++) { if((strcmp(plista_2[i],plista_1[aux])) == 0) { cont++; } } printf("\nO nome '%s' da segunda lista apareceu %d vezes na primeira lista", plista_2[i], cont); cont = 0; } } Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Novembro 17, 2008 Se você roda o programa, é porque você consegue compilar. listas.c:14: warning: return type defaults to 'int'listas.c: In function 'main': listas.c:18: warning: passing argument 1 of 'preencher' from incompatible pointer type listas.c:18: warning: passing argument 2 of 'preencher' from incompatible pointer type listas.c:19: warning: passing argument 1 of 'comparar' from incompatible pointer type listas.c:19: warning: passing argument 2 of 'comparar' from incompatible pointer type listas.c:22: warning: control reaches end of non-void function listas.c: In function 'comparar': listas.c:57: warning: passing argument 1 of 'strcmp' makes pointer from integer without a cast listas.c:57: warning: passing argument 2 of 'strcmp' makes pointer from integer without a cast listas.c:62: warning: format '%s' expects type 'char *', but argument 2 has type 'int' Arrume esses tipos. for (i=1; i<=tam; i++) Vetores começam do 0 e vão até N-1. fflush(stdin); Pare de fazer isso. if((strcmp(plista_2[i],plista_1[aux])) == 0) Não precisa encher de parênteses. #include<stdio.h> #include<stdlib.h> #include<string.h> #define tam 5 void preencher (char plista_1[][50], char plista_2[][50]); void comparar (char plista_1[][50], char plista_2[][50]); int main(){ char lista_1[tam][50]; char lista_2[tam][50]; preencher(lista_1 , lista_2); comparar(lista_1 , lista_2); return 0; } void preencher (char plista_1[][50], char plista_2[][50]){ int i; printf("Lista [01]\n"); for (i=0; i<tam; i++) { printf("\n\t\tNome[%d].: ",i); fgets(plista_1[i],50,stdin); } printf("Lista [02]\n"); for (i=0; i<tam; i++) { printf("\n\t\tNome[%d].: ",i); fgets(plista_2[i],50,stdin); } } void comparar (char plista_1[][50], char plista_2[][50]){ int i; int aux; int cont = 0; for(i=0; i<tam; i++) { for(aux=1; aux<=tam; aux++) if(strcmp(plista_2[i],plista_1[aux]) == 0) cont++; printf("\nO nome '%s' da segunda lista apareceu %d vezes na primeira lista", plista_2[i], cont); cont = 0; } } Compartilhar este post Link para o post Compartilhar em outros sites
K3nshin 0 Denunciar post Postado Novembro 17, 2008 import obrigado vou dar uma testada aki o q você me aconselha a usar no lugar do fflush(stdin) ??? Compartilhar este post Link para o post Compartilhar em outros sites
K3nshin 0 Denunciar post Postado Novembro 17, 2008 Import apos analisar o seu codigo verifiquei q estava errando ao declara o vetor de string e conforme você me falow inicializei a variavel do for = 0 segue o novo codigo funcionando perfeitamente e do jeito q eu queria com ponteiro de matriz http://forum.imasters.com.br/public/style_emoticons/default/clap.gif /*16.Faça um algoritmo que, lidas duas listas de nomes, compare-as e devolva o número de vezes que cada palavra da segunda lista aparece na primeira lista.*/ #include<stdio.h> #include<stdlib.h> #include<string.h> #define tam 5 typedef char lista1[tam][50]; typedef char lista2[tam][50]; void preencher (char (*plista_1)[50], char (*plista_2)[50]); void comparar (char (*plista_1)[50], char (*plista_2)[50]); main() { lista1 lista_1; lista2 lista_2; preencher (lista_1 , lista_2); comparar (lista_1 , lista_2); printf("\n"); system("pause"); } void preencher (char (*plista_1)[50], char (*plista_2)[50]) { int i; printf("Lista [01]\n"); for (i=0; i<tam; i++) { printf("\t\tNome[%02d].: ",i+1); scanf ("%49[^\n]",plista_1[i]); fflush(stdin); } printf("Lista [02]\n"); for (i=0; i<tam; i++) { printf("\t\tNome[%02d].: ",i+1); scanf ("%49[^\n]",plista_2[i]); fflush(stdin); } } void comparar (char (*plista_1)[50], char (*plista_2)[50]) { int i; int aux; int cont = 0; for(i=0; i<tam; i++) { for(aux=0; aux<tam; aux++) { if(strcmp(plista_2[i],plista_1[aux]) == 0) { cont++; } } printf("O nome [ %10s ] apareceu [ %02d ] vezes na primeira lista\n", plista_2[i], cont); cont = 0; } } Compartilhar este post Link para o post Compartilhar em outros sites