Ir ao conteúdo

Help Struct


NightMarlon

Posts recomendados

Postado

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?

Postado

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();
}

Postado

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

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!