Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

K3nshin

Pq não consigo compilar ?

Recommended Posts

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.