Exercícios sobre structs em Linguagem C

Usando os conhecimentos ensinados em nossa apostila de C, sobre:

Resolva as seguintes questões:

00. 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.

01. 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.

02. 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.

03. 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?

04. 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.

05. 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.


7 comentários:

Anônimo disse...

o melhor site sobre programação

Alef Alcântara disse...

Vocês poderiam colocar um gabarito com os exercícios resolvidos, pra a gente tirar dúvida, corrigir erros e tal... mas o conteúdo do site é excelente!

Anônimo disse...

Bom dia a todos!
este é o exercício final de structs
quem quiser implementar mais alguma função faça e poste pra gente.como esperado ficou um pouco extenso.


#include
#include
#include

typedef struct banda
{
char nome_banda[20];
char estilo_musical[15];
int n_integrantes;
int position_ranking;
}banda;

void limpaBuffer(void)
{
char c;
while(c=getchar()!='\n' && c !=EOF);
}

void preferencia(banda *pt)
{
int i;
int cont;

for(cont=0;cont<3;cont++)
{
fflush(stdin);
do{
system("cls");
printf("\nNome da banda: ");
gets(pt[cont].nome_banda);
i=strlen(pt[cont].nome_banda);
if(i>19)
pt==(NULL);
}while(i>19);

printf("\nEstilo musical: ");
gets(pt[cont].estilo_musical);
fflush(stdin);

printf("\nNumero de integrantes: ");
scanf("%d",&pt[cont].n_integrantes);

printf("\nPosicao no ranking: ");
scanf("%d",&pt[cont].position_ranking);
}
}

void exibe_preferencia(banda *exib)
{
int cont;
for(cont=0;cont<3;cont++)
{
printf("\n\nBanda: %s",exib[cont].nome_banda);
printf("\nEstilo: %s",exib[cont].estilo_musical);
printf("\nIntegrantes: %d",exib[cont].n_integrantes);
printf("\nPosicao: %d",exib[cont].position_ranking);
}
}
void procura(banda *busca)
{
fflush(stdin);
char musica2[50];
int compara=0,cont;

printf("\nInforme seu tipo de musica: ");
gets(musica2);
fflush(stdin);

for(cont=0;cont<100;cont++)
{
if(strcmp(busca[cont].estilo_musical,musica2)==0){
compara=1;
printf("\nBanda: %s",busca[cont].nome_banda);
}
if(busca[cont].nome_banda=='\0')
break;
}
if(compara==1)
printf("\nencontrado");
else
printf("\nausente");
}


main()
{
banda p[3];//variavel do tipo banda.
char musica[15];

preferencia(p);
procura(p);
exibe_preferencia(p);

getch();
return 0;
}

Ricardo Gonçalves disse...


1) Elabora o programa 'nº-TesteM6' com as seguintes condições:

a) Define uma estrutura que irá representar bandas de música. Essa estrutura deve ter o nome da
2 valores banda, o ano de constituição, a idade média dos músicos e tipo de música que tocam.

b) Cria uma função para preencher os dados relativos a cinco bandas.

3 valores

c) Cria uma função que mostre toda a informação relativa às cinco bandas.

3 valores

d) Cria uma função que peça ao utilizador um número de 1 até 5. Em seguida, o programa deve
3 valores exibir informações da banda dessa posição.

e) Crie uma função em que peça ao utilizador um tipo de música e de seguida mostre as bandas que
5 valores tocam esse tipo de música.

Apostila C Progressivo disse...

Olá Ricardo,

E aí, já fez seu exercício?
Alguma dúvida em específico?

Se quiser falar, ao invés de só copiar e colar sua questão, pode também, sem problemas ;)

Anônimo disse...

Alguém tem a solução completa?

Anônimo disse...

00-typedef struct{
char nome[100];
char tipoMusic[50];
int numInt;
int rankPos;

}Bandas;

01-
int main(){

Bandas preferidas[5];

Bandas * banda= &preferidas;

int i;

for(i=0;i<5;i++){

fflush(stdin);
printf("Banda n: %d\n", i+1);
printf("Introduza o nome:\n");
scanf("%s",banda->nome);
printf("Introduza o tipo:\n");
scanf("%s",banda->tipoMusic);
printf("Intro numInte:\n");
scanf("%d",&banda->numInt);
printf("Intro rank position:\n");
scanf("%d",&banda->rankPos);
}
for(i=0;i<5;i++){
printf("Banda n: %d\n", i+1);
printf("Nome:%s\n",banda->nome);
printf("tipo:%s\n",banda->tipoMusic);
printf("numIntegrantes:%d\n",banda->numInt);
printf("Rank position:%d\n",banda->rankPos);

}
02-
Num1a5(&preferidas);
}
void Num1a5(Bandas *rank){
int num;
printf("Introduza numeros 1 a 5:\n");
scanf("%d",&num);
if(num==rank->rankPos){

printf("Nome:%s\n",rank->nome);
printf("tipo:%s\n",rank->tipoMusic);
printf("numIntegrantes:%d\n",rank->numInt);
printf("Rank position:%d\n",rank->rankPos);
}else{
printf("Nao encontrei nenhum rank\n");
}
}
Resolvi até aqui... no 3 usaria o strcmp...

Gostou desse tutorial de C?
Sabia que o acervo do portal C Progressivo é o mesmo, ou maior que, de um livro ou curso presencial?
E o melhor: totalmente gratuito.

Mas para nosso projeto se manter é preciso divulgação.
Para isso, basta curtir nossa página no Facebook e/ou clicar no botão +1 do Google.
Contamos e precisamos de seu apoio.