Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal,mais uma vez rsrs
Tenho que fazer um código que leia duas strings com 5 nomes cada uma,e escrever os nomes que aparecem em AMBAS as listas. Eu fiz o teste a mão no meu código e me parece tudo ok,porem quando vou executa-lo ele le apenas o primeiro nome da primeira stringa e imprime um monte de coisa aleatória na tela ,não sei onde estou errando, a baixo o meu código:
*#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{
int i,j,k,l,cont,aux2,pos,cont2=0,cont3=0,sal[5],iaux;
char nom[5][50],nom2[5][50],aux[5][50];
printf("Digite os nomes da lista 1:\n");
for(i=0;i<5;i++){
scanf("%[^\n]s",nom);*printf("Digite os nomee da lista 2:\n");
for(i=0;i<5;i++){
* scanf("%[^\n]s",nom2**);*
}
iaux=0;
for(i=0;i<5;i++){
for(j=0;j<5;j++)
* if(strcmp(nom**,nom2[j])==0){*
* strcpy(aux[iaux++],nom**);*
}
}
for(i=0;i<50;i++){
* printf("Nome:%s\n",aux**); *
}
return 0;
}
>
Se é pra escrever o nome que aparece em duas listas, por que você realiza cópia?
E aquele for indo até 50?
Sim,eu tinha notado esse erro depois que postei a dúvida e como e contra as regras postar em seguida como 'atualização' eu esperei uma resposta(da próxima vou conferir o código com mais atenção antes de postar a dúvida,peço desculpas.)
O código atualizado é o seguinte:
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{
int i,j,k,l,cont,cont2=0,iaux;
char nom[5][50],nom2[5][50],aux[5][50];
printf("Digite os nomes da lista 1:\n");
for(i=0;i<5;i++){
scanf("%s",nom*);*
}
printf("Digite os nomee da lista 2:\n");
for(i=0;i<5;i++){
* scanf("%s",nom2**);*
}
iaux=0;
for(i=0;i<5;i++){
cont=0;
for(j=0;j<5;j++){
* if(strcmp(nom**,nom2[j])==0){*
cont++;
}
}
if(cont==5){
* strcpy(aux[iaux],nom**);*
iaux++;
cont2++;
}
}
for(i=0;i<cont2;i++){
* printf("Nome:%s\n",aux**); *
}
return 0;
}
Na verdade o postup proibido é quando vc quer evidenciar o tópico. Tipo aquela galera desesperada pra entregar uma lista com 50 exercícios que quer que outros escrevam código p/ eles passarem na matéria sem um mínimo de esforço.
Na verdade o postup proibido é quando você quer evidenciar o tópico. Tipo aquela galera desesperada pra entregar uma lista com 50 exercícios que quer que outros escrevam código p/ eles passarem na matéria sem um mínimo de esforço.
Entendi...mas quanto ao código,o que há de errado nele?
grato!
#include <stdio.h>
#include <string.h>
int main(void) {
char nomes_1[5][20] = {"luciano", "carlos", "alexandre", "marcelo", "lucas"};
char nomes_2[5][20] = {"joão", "lucas", "fabiano", "marcelo", "fernando"};
for (unsigned int i=0; i<5; i++) {
for(unsigned int j=0; j<5; j++) {
if (!strcmp(nomes_1[i], nomes_2[j])) {
printf("%s\n", nomes_1[i]);
break;
}
}
}
return 0;
}#include <stdio.h>
#include <string.h>
int main(void) {
char nomes_1[5][20] = {"luciano", "carlos", "alexandre", "marcelo", "lucas"};
char nomes_2[5][20] = {"joão", "lucas", "fabiano", "marcelo", "fernando"};
for (unsigned int i=0; i<5; i++) {
for(unsigned int j=0; j<5; j++) {
if (!strcmp(nomes_1[i], nomes_2[j])) {
printf("%s\n", nomes_1[i]);
break;
}
}
}
return 0;
}>
#include <stdio.h>
#include <string.h>
int main(void) {
char nomes_1[5][20] = {"luciano", "carlos", "alexandre", "marcelo", "lucas"};
char nomes_2[5][20] = {"joão", "lucas", "fabiano", "marcelo", "fernando"};
for (unsigned int i=0; i<5; i++) {
for(unsigned int j=0; j<5; j++) {
if (!strcmp(nomes_1[i], nomes_2[j])) {
printf("%s\n", nomes_1[i]);
break;
}
}
}
return 0;
}
Desculpe,não entendi essa linha:
if (!strcmp(nomes_1[i], nomes_2[j]))
Mais especificamente o '!' antes do strcmp.
>
Desculpe,não entendi essa linha:
if (!strcmp(nomes_1[i], nomes_2[j]))
Mais especificamente o '!' antes do strcmp.
é a mesma coisa que ( !strcmp(nomes_1[i], nomes_2[j] == 0 )
Se é pra escrever o nome que aparece em duas listas, por que você realiza cópia?
E aquele for indo até 50?