Ir ao conteúdo
  • Cadastre-se

C Algoritmo de Matriz em C


Posts recomendados

Faça um programa em C para armazenar em uma matriz os compromissos(com espaços) de uma agenda pessoal. Cada dia do mês deve conter 24 horas, onde para cada uma destas 24 horas podemos associar um tarefa específica (compromisso agendado). O programa deve ter um menu onde o usuário indica o dia do mês que deseja alterar e a hora, entrando em seguida com o compromisso, ou então, o usuário pode também consultar a agenda, fornecendo o dia e a hora para obter o compromisso armazenado.

  • Haha 4
Link para o post
Compartilhar em outros sites

Seria compromissos uma "string"?

E agenda uma rara matriz de caracteres [12][31][24][X] com 4 dimensões.

 

Há desperdício de memória nessa abordagem, porém ganha em desempenho e facilitada de programação.

Se precisar de compromisso às 16 horas de hoje, é bem fácil!

 

&agenda[3][29][15][0]

Link para o post
Compartilhar em outros sites

@Web Melo

50 minutos atrás, Web Melo disse:

isso mesmo seria compromisso uma string, tem como resolver isso em C?

 

Oih! É sim possível. Exceto se não tem os saberes necessário que, a propósito, são o básico de matrizes.

 

Você estudou, ou estudará, pra esse exercício?

 

 

 

 

 

Link para o post
Compartilhar em outros sites

@mauro_b Estou estudando tentei fazer mas fiquei embolado.

@mauro_b Aqui está o meu código:

 

#include<stdio.h>//entrada e saida de dados
#include<stdlib.h>//operações e conversões de dados
#include<locale.h>//reconhecer o portugues
//funcao principal
main(){
//codigo fonte
setlocale(LC_ALL, "portuguese");//setando o idioma
char compromisso[31][24][100];
bool sair = false;
int op;
while(!sair){
printf("Bem-vindo à agenda de compromissos:\n Digite 1 para inserir;\nDigite 2 para consultar;\nDigite 0 para sair.\n");
scanf("%d",&op);
if(op == 1){// add compromisso
bool diaValido = false;
int dia = 0;
while(!diaValido){
printf("Entre com o dia do mês:\n");
scanf("%d",&dia);
if(dia > 0 && dia <=31){
diaValido = true;
}else{
printf("Dia inválido, favor digitar novamente.");
}
}

bool horaValida = false;
int hora = 0;
while(!horaValida){
printf("Entre com a hora:\n");
scanf("%d",&hora);
if(hora >= 0 && hora <= 24){
horaValida = true;
}else{
printf("Hora inválida, favor digitar novamente.");
}
}
dia--;
printf("Digite o compromisso:\n");
scanf("%s",&compromisso);
compromisso[dia][hora]= compromisso;

} else if(op == 2){
bool diaValido = false;
int dia = 0;
while(!diaValido){
printf("Entre com o dia do mês:\n");
scanf("%d",&dia);
if(dia > 0 && dia <=31){
diaValido = true;
}else{
printf("Dia inválido, favor digitar novamente.");
}
}

bool horaValida = false;
int hora = 0;
while(!horaValida){
printf("Entre com a hora:\n");
scanf("%d",&hora);
if(hora >= 0 && hora <= 24){
horaValida = true;
}else{
printf("Hora inválida, favor digitar novamente.");
}
}
dia--;
printf("O compromisso é: %s",compromisso[dia][hora]);
}else if(op == 0){
sair = true;
}else{
printf("Opção inválida, digite novamente");
}
}
system("pause");
}

 

Link para o post
Compartilhar em outros sites

@Web Melo  Estudarei sua resposta e no que posso ajudar em sua lógica.

Por ora, adianto que imaginei um código menor, isso porque não pensei nos  detalhes do exercício.

 

Até mais.

 

  

 

Link para o post
Compartilhar em outros sites

@mauro_b Na hora que o usuário digita o compromisso eu tenho que armazenar na posição dia e hora da matriz isso que eu nao estou conseguindo fazer. Porque como vou armazenar uma cadeia de caracteres em uma matriz?

Link para o post
Compartilhar em outros sites

 

1 hora atrás, Web Melo disse:

@mauro_b Na hora que o usuário digita o compromisso eu tenho que armazenar na posição dia e hora da matriz isso que eu nao estou conseguindo fazer. Porque como vou armazenar uma cadeia de caracteres em uma matriz?

Você usa a função ‘scanf’ com especificador conjunto de caracteres.

 

 

Sim, notei esse problema quando digito um compromisso com espaços a função captura somente a primeira ‘string’, mas isso que significa o especificador "%s". Então eu troquei para o correto "%[^\n]". Esse captura até o fim da linha.

 

Inverti as proposições nas três verificações [mês, dia, hora] sua pergunta originalmente era se um dado na data está valido, eu troquei para SE um dado é invalido. Acredito que assim fica mais entendível para o computador (humano e máquina).

 

 

@Web Melo Quer seu programa aqui on INBOX?


 

A demais coias estão ótimas, para mim.

  • Curtir 1
Link para o post
Compartilhar em outros sites

@Web Melo Mandei!

Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 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...

Aprenda a ler resistores e capacitores

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!