Boas!! Estou a fazer um programa para a faculdade da gestão de um hotel, mas tenho um problema com struct aninhadas.
typedef struct { int dia; int mes; int ano; }DATA;
typedef struct { char nome[50]; int codigo; int n_quartos; DATA chegada[11]; // Inserir no formato aaaa-mm-dd int n_noites; float preco; }RESERVA;
Como faco para por o DATA de chegada, mas que esta data fique com int dia, int mes, int ano de tipo DATA definidos. Até agora como podem reparar a chegada esta como um vetor, e para recever os dados da struct RESERVA estou a fazer isto:
int Fazer_Reserva(RESERVA *x) { int n; system ("cls"); for(n=1;n"); getch(); return(1); } } }
É lógico que já tenho definida uma tabela RESERVA reservasHotel[4000], desde onde se faz a chamada à funcao Fazer_Reserva()
Também parabéns pelo site esta mesmo bom e tem-me ajudado muito.
11 de janeiro de 2014 às 04:23
Anônimo disse...
Javier poderia colocar o enunciado do exercício para que eu possa lhe ajudar.
18 de janeiro de 2014 às 17:42
Anônimo disse...
#include
typedef struct aluno{ int matricula; float vNotas[5]; char nome[50]; }a1; struct disciplina{ int n; int V[100]; int Nalunos; }n; typedef struct aluno aluno;
aluno fillaluno(aluno, a1){ printf ("Digite a matricula desse aluno:"); scanf ("%d", &a1.matricula); printf("Digite a nota desse aluno:"); scanf("%.1f", &a1.vNotas[1]); printf("Digite o nome desse aluno:"); gets(a1.nome);
return (a1); };
struct Disciplina filldisciplina (Disciplina d1, int numAlunos){
printf("Digite a quantidade de alunos"); scanf("%d", &numAlunos); for (n = 0; n < numAlunos; n++){ printf("Digite o nome dos alunos"); gets(d1.V[n]); fillaluno(a1); }
return (numAlunos, d1); };
void mostrarDisciplina(Disciplina d1){ filldisciplina(d1); for (n = 0; n < numAlunos; n++); printf("o nome dos alunos eh: %s", d1.V[n]); printf("o numero de alunos matriculados no curso eh: %d", numAlunos); }
int main(){ struct disciplina pc1[10]; printf("Digite o nome dos alunos:"); gets(pc1); filldisciplina(d1); fillaluno(a1); mostrarDisciplina(void); return 0;
}
Alguem pode me dizer o que tem de errado aqui?
19 de janeiro de 2015 às 11:52
Anônimo disse...
Como faço para minha função ler os dados de uma struct?? Tenho que fazer um programa que gerencia um hotel e cadastrar um hospede em determinado quarto da escolha dele, fiz uma struct de cliente e outra para quartos, e tenho que mostrar o registro dos quartos e o registro de clientes cadastrados, então fiz duas funçoes que deveriam fazer isso,mas quando coloco puts(qrt[j].nomehospede),que deveria mostrar o nome do hospede cadastrado no quarto j, mostra uns simbolos doidos. Tentei fazer da forma indicada acima e não funcionou. estou usando o code::blocks para fazer o programa.
E como é que faz quando a função tá numa biblioteca e chama no programa principal?
29 de agosto de 2017 às 15:59
Anônimo disse...
Oi Anônimo tudo bem, Sou novo nessa área e tenho um trabalho para a faculdade e não faço a menor ideia como montar pode me ajudar? Segue o enunciado. Faça um programa em linguagem C que manipule uma estrutura chamada Veículo. A estrutura deve ter os campos marca, modelo, nome do proprietário, tamanho do tanque de combustível em litros. Faça 2 rotinas, uma para ler os dados do veículo, outra para mostrar seus dados. A função de leitura pode gerar os dados aleatoriamente se você preferir. Ou ainda preencha todas as entradas com valores constantes, escolhendo os dados de sua preferência. Gerar um vetor com 50 registros para uma concessionaria. Faça então as seguintes funções de pesquisa: •. Mostrar o nome do proprietário de todos os veículos de uma certa marca/modelo. Aproveite para contá-los também na mesma rotina. •. Calcular quanto custa para encher o tanque de combustível, para cada veículo do vetor. O valor do litro do combustível pode ser dado por parâmetro. Calcule também o total gasto pela concessionária para encher todos os tanques. Na função main(), faça: • Carregar os 50 veículos. • Chamar as funções de pesquisa. • Mostrar todos os resultados.
6 de junho de 2018 às 20:08
Conforme você estudou pelos tutoriais sobre funções em C,
sabe que para passar uma variável ou vetor para uma função, devemos declarar a
função com o tipo de dado esperado.
Algumas semelhanças continuam, conforme veremos nesse artigo.
Leia este tutorial no seu computador ou celular: Apostila C Progressivo
Como passar uma struct por argumento para uma função em C
Exercício: Defina uma struct de um carro. Crie um modelo de carro,
preencha seus dados e exiba eles através de uma função que recebe esse tipo de
struct.
Primeiro criamos a nossa struct, que será tipo CARRO, em
seguida uma função que recebe um dado do tal tipo CARRO, que vamos chamar de ‘car’.
Então, quando passamos uma struct do tipo CARRO para a
função, ele é vista dentro da função como a struct de nome ‘car’, bastando
acessar diretamente suas variáveis e exibi-las.
Dentro da main(),
criamos uma variável, ou struct do tipo CARRO, de nome ‘fusca’.
A única coisa, talvez, diferente é a maneira com a qual inicializamos
nossa struct: temos que preencher todos os termos da struct, na ordem.
Veja como ficou nosso código C
#include <stdio.h>
// Curso C Progressivo: www.cprogessivo.net
// O melhor curso de C! Online e gratuito !
// Apostila online, tutorial completo sobre
// a linguagem de programação C !
typedef struct carro
{
char modelo[30];
float potenciaMotor;
int anoFabricacao,
numPortas;
}CARRO;
void Exibe(CARRO car)
{
printf("Modelo: %s\n", car.modelo);
printf("Motor: %.1f\n", car.potenciaMotor);
printf("Ano: %d\n", car.anoFabricacao);
printf("%d portas\n", car.numPortas);
}
int main(void)
{
CARRO fusca = {"Fuscao preto", 1.5, 74, 2};
Exibe(fusca);
return 0;
}
Até aqui tudo ok, pois apenas lemos os membros de uma struct...se quisermos alterar os membros de uma estrutura, a coisa muda um pouco, conforme veremos no próximo tutorial de C.
postado por Programação Progressiva às 19:49 em 26 de mar. de 2013
9 Comentários
Fechar esta janela Ir para formulário de comentárioBoas!!
Estou a fazer um programa para a faculdade da gestão de um hotel, mas tenho um problema com struct aninhadas.
typedef struct
{
int dia;
int mes;
int ano;
}DATA;
typedef struct
{
char nome[50];
int codigo;
int n_quartos;
DATA chegada[11]; // Inserir no formato aaaa-mm-dd
int n_noites;
float preco;
}RESERVA;
Como faco para por o DATA de chegada, mas que esta data fique com int dia, int mes, int ano de tipo DATA definidos. Até agora como podem reparar a chegada esta como um vetor, e para recever os dados da struct RESERVA estou a fazer isto:
int Fazer_Reserva(RESERVA *x)
{
int n;
system ("cls");
for(n=1;n");
getch();
return(1);
}
}
}
É lógico que já tenho definida uma tabela RESERVA reservasHotel[4000], desde onde se faz a chamada à funcao Fazer_Reserva()
Também parabéns pelo site esta mesmo bom e tem-me ajudado muito.
11 de janeiro de 2014 às 04:23
Javier poderia colocar o enunciado do exercício para que eu possa lhe ajudar.
18 de janeiro de 2014 às 17:42
#include
typedef struct aluno{
int matricula;
float vNotas[5];
char nome[50];
}a1;
struct disciplina{
int n;
int V[100];
int Nalunos;
}n;
typedef struct aluno aluno;
aluno fillaluno(aluno, a1){
printf ("Digite a matricula desse aluno:");
scanf ("%d", &a1.matricula);
printf("Digite a nota desse aluno:");
scanf("%.1f", &a1.vNotas[1]);
printf("Digite o nome desse aluno:");
gets(a1.nome);
return (a1);
};
struct Disciplina filldisciplina (Disciplina d1, int numAlunos){
printf("Digite a quantidade de alunos");
scanf("%d", &numAlunos);
for (n = 0; n < numAlunos; n++){
printf("Digite o nome dos alunos");
gets(d1.V[n]);
fillaluno(a1);
}
return (numAlunos, d1);
};
void mostrarDisciplina(Disciplina d1){
filldisciplina(d1);
for (n = 0; n < numAlunos; n++);
printf("o nome dos alunos eh: %s", d1.V[n]);
printf("o numero de alunos matriculados no curso eh: %d", numAlunos);
}
int main(){
struct disciplina pc1[10];
printf("Digite o nome dos alunos:");
gets(pc1);
filldisciplina(d1);
fillaluno(a1);
mostrarDisciplina(void);
return 0;
}
Alguem pode me dizer o que tem de errado aqui?
19 de janeiro de 2015 às 11:52
Como faço para minha função ler os dados de uma struct??
Tenho que fazer um programa que gerencia um hotel e cadastrar um hospede em determinado quarto da escolha dele, fiz uma struct de cliente e outra para quartos, e tenho que mostrar o registro dos quartos e o registro de clientes cadastrados, então fiz duas funçoes que deveriam fazer isso,mas quando coloco
puts(qrt[j].nomehospede),que deveria mostrar o nome do hospede cadastrado no quarto j, mostra uns simbolos doidos.
Tentei fazer da forma indicada acima e não funcionou.
estou usando o code::blocks para fazer o programa.
4 de julho de 2015 às 18:20
aqui tem um modelo simples que eu fiz sobre a passagem de função usando structs
sem o atalho typedef.
#include
struct carros
{
int modelo,ano;
}carro;
void exibe(struct carros car)
{
printf("modelo: %i\n ",car.modelo);
printf("ano: %i",car.ano);
}
int main(void)
{
struct carros fusca= {5, 74};
exibe(fusca);
}
é so um modelinho simples, mas mostra que tanto com a typedef , ou sem, a passagem é sempre valida, aí é o programador que escolhe hehehe
14 de julho de 2015 às 10:14
não entendi esse car na função, alguem pode me explicar?
3 de março de 2016 às 08:18
"car" recebe o endereço de "fusca".
29 de outubro de 2016 às 15:51
E como é que faz quando a função tá numa biblioteca e chama no programa principal?
29 de agosto de 2017 às 15:59
Oi Anônimo tudo bem,
Sou novo nessa área e tenho um trabalho para a faculdade e não faço a menor ideia como montar pode me ajudar?
Segue o enunciado.
Faça um programa em linguagem C que manipule uma estrutura chamada Veículo. A estrutura deve ter os campos marca, modelo, nome do proprietário, tamanho do tanque de combustível em litros. Faça 2 rotinas, uma para ler os dados do veículo, outra para mostrar seus dados. A função de leitura pode gerar os dados aleatoriamente se você preferir. Ou ainda preencha todas as entradas com valores constantes, escolhendo os dados de sua preferência.
Gerar um vetor com 50 registros para uma concessionaria. Faça então as seguintes funções de pesquisa:
•. Mostrar o nome do proprietário de todos os veículos de uma certa marca/modelo. Aproveite para contá-los também na mesma rotina.
•. Calcular quanto custa para encher o tanque de combustível, para cada veículo do vetor. O valor do litro do combustível pode ser dado por parâmetro. Calcule também o total gasto pela concessionária para encher todos os tanques.
Na função main(), faça:
• Carregar os 50 veículos.
• Chamar as funções de pesquisa.
• Mostrar todos os resultados.
6 de junho de 2018 às 20:08