Ir ao conteúdo
  • Cadastre-se
NightMarlon

Help Struct

Recommended Posts

Estou com problema na primeira parte, não estou conseguindo mostrar os 5 nomes pois estou errando na lógica, alguem por favor me ajude a compreender esta lógica, segue:

Defina uma estrutura que irá representar bandas de música.

Essa estrutura deve ter o nome da banda, que tipo de música ela toca, o número de integrantes e em que posição do ranking essa banda está dentre as suas 5 bandas favoritas.

Crie um looping para preencher as 5 estruturas de bandas criadas no exemplo passado.

Após criar e preencher, exiba todas as informações das bandas/estruturas.

Não se esqueça de usar o operador -> para preencher os membros das structs.

Crie uma função que peça ao usuário um número de 1 até 5.

Em seguida, seu programa deve exibir informações da banda cuja posição no seu ranking é a que foi solicitada pelo usuário.

Crie uma função em C que peça ao usuário um tipo de música e exiba as bandas com esse tipo de música no seu ranking. Que função da string.h você usaria para comparar as strings que representam o tipo de banda?

Crie uma função que peça o nome de uma banda ao usuário e diga se ela está entre suas bandas favoritas ou não.

Agora junte tudo e crie uma mega aplicação em que exibe um menu com as opções de preencher as estruturas e todas as opções das questões passadas.

segue o que consegui até o momento:


#include <conio.h>
#include <string.h>
#include <locale.h>

#define TAM 5

struct bandas{
char nome[20];
};

adicionar(struct bandas *B){
int i;
//for(i=0;i<TAM;i++){
printf("Digite a banda: ");
scanf("%s",&b->nome[0]);

//*b++;
printf("Digite a banda: ");
scanf("%s",&b->nome[1]);

// }
}

void mostra(struct bandas *B){
int j;
//for(j=0;j<TAM;j++){
printf("\nBanda: %s",&b->nome[0]);
//*b++;
printf("\nBanda: %s",&b->nome[1]);
//b++;
//}
}
rank(struct bandas *B){

int r;
printf("Digite o rank: ");
scanf("%d",&r);

}

int main(){

struct bandas *b;

adicionar(&B);
mostra(&B);

getch();
}
#include <stdio.h>

pela lógica o segundo printf não deveria de mostrar o que foi coletado no segundo scanf?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais progresso =D

Alguem poderia me ajudar nesta linha "scanf("%d",&b->num);", por que não posso solicitar a posição do ponteiro desta forma?


#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <locale.h>

#define TAM 5

struct bandas{
char *nome[30],*tipo[30];
int num;
};

void adicionar(struct bandas *B){
int i;
for(i=0;i<TAM;i++){
printf("Digite sua %dª banda favorita: ",i+1);
scanf("%s",&b->nome[i]);
printf("Tipo de música: ");
scanf("%s",&b->tipo[i]);
printf("Número de integrantes da banda: ");
//scanf("%d",&b->num);
}
}

void mostra(struct bandas *B){
int j;
for(j=0;j<TAM;j++){
printf("\nBanda: %s",&b->nome[j]);
printf("\nTipo: %s",&b->tipo[j]);
printf("\nIntegrantes: %d",b->num);
}
}
rank(struct bandas *B){

int r;
printf("Digite o rank: ");
scanf("%d",&r);

}

int main(){
setlocale(LC_ALL, "Portuguese");
struct bandas *b;

adicionar(&B);
mostra(&B);

getch();
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui pessoaal o//

(kkkkkkkk sozinho xD)


#include <conio.h>
#include <string.h>
#include <locale.h>

#define TAM 2

struct bandas{
char nome[30],tipo[30];
int num,r;
};

int adicionar(struct bandas *B){
int i;
printf("Digite suas %d bandas mais favoritas\n\n",TAM);
for(i=0;i<TAM;i++){
printf("%dª: ",i+1);
scanf("%s",&b[i].nome);
fflush(stdin);
printf("Tipo de música: ");
scanf("%s",&b[i].tipo);
fflush(stdin);
printf("Número de integrantes da banda: ");
scanf("%d",&b[i].num);
fflush(stdin);
printf("\n");
}
}

void mostra(struct bandas *B){
int j;
for(j=0;j<TAM;j++){
printf("\nBanda: %s",&b[j].nome);
printf("\nTipo: %s",&b[j].tipo);
printf("\nIntegrantes: %d",b[j].num);
}
}
rank(struct bandas *B){

int j,r;
printf("\n\nDigite a posição do ranking da banda que deseja exibir\n");
scanf("%d",&r);
printf("A banda da %dª posição é: \n",r);

printf("Banda: %s\n",b[r-1].nome);
printf("Tipo: %s\n",b[r-1].tipo);
printf("Integrantes: %d\n",b[r-1].num);

}


tipo(struct bandas *B){

int j;
char tipo[20];
printf("\n\nDigite o tipo de música que deseja exibir: ");
scanf("%s",&tipo);

printf("A(s) banda(s) do tipo %s é(são): \n",tipo);
for(j=0;j<TAM;j++){
if(strcmp(b[j].tipo,tipo) == 0)
{
printf("Banda: %s\n",b[j].nome);
printf("Tipo: %s\n",b[j].tipo);
printf("Integrantes: %d\n",b[j].num);
}
}
}

cbanda(struct bandas *B){

int j;
char cbanda[20];
printf("\n\nDigite a banda que deseja pesquisar se é uma das %d favoritas: ",TAM);
scanf("%s",&cbanda);

for(j=0;j<TAM;j++){
if(strcmp(b[j].nome,cbanda) == 0)
{
printf("\nA banda %s é uma das bandas favoritas!\n\n",cbanda);
printf("Banda: %s\n",b[j].nome);
printf("Tipo: %s\n",b[j].tipo);
printf("Integrantes: %d\n",b[j].num);
}
else{
printf("A banda não é uma das favoritas");
}
}
}

int main(){
setlocale(LC_ALL, "Portuguese");

struct bandas b[TAM];
int i;
do{
printf("**************************************************************************\n");
printf("*\tPara adicionar uma banda digite 1\t\t\t\t*\n");
printf("*\tPara mostrar a(s) banda(s) favorita(s) digite 2\t\t\t*\n");
printf("*\tPara exibir a banda por ranking digite 3\t\t\t*\n");
printf("*\tPara pesquisar por tipo de banda digite 4\t\t\t*\n");
printf("*\tPara pesquisar se a banda está nas favoritas digite 5\t\t*\n");
printf("*\tPara sair digite 0\t\t\t\t\t\t*\n");
printf("**************************************************************************\n");
scanf("%d",&i);

if(i==1){
adicionar(B);
}
if(i==2){
mostra(B);
}
if(i==3){
rank(B);
}
if(i==4){
tipo(B);
}
if(i==5){
cbanda(B);
}
getch();
}while(i!=0);

}
#include <stdio.h>

Fechou

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×