Ir ao conteúdo

Valdeir Medeiros

Membro Júnior
  • Posts

    6
  • Cadastrado em

  • Última visita

Reputação

0
  1. Olá, eu sou novo nesta área da programação gostaria que alguém pudesse me ajudar em um exercício: Deve-se fazer um programa que de acordo com o grau dado pelo usuário, que deve ser no máximo 10 e os coeficientes também dados por ele, imprime-o na tela. Esta parte eu consegui fazer, até este ponto ai abaixo. porém também é preciso calcular o valor desse polinômio, de acordo com um valor "inteiro" de x, dado pelo usuário. Eu gostaria se saber como deve ser feito essa parte final do código, para pedir o valor de X e calcula-lo, imprimindo na tela o valor do polinômio, agradeço desde já, quem puder me auxiliar. Segue o código: #include <stdio.h> #include <math.h> #define TAM 10 main() { float coef[TAM+1]; float x[TAM+1]; int grau, i, j; do { printf("Difite o grau do polinomio (o grau maximo eh %d): ", TAM); scanf("%d", &grau); if (grau < 0 || grau > TAM) { printf("Grau = %d eh invalido\n", grau); } } while (grau < 0 || grau > TAM); for (i = grau; i >= 0; i--) { printf("coeficiente de x^%d: ", i); scanf("%f", &coef[i]); } printf("\n\nPolinomio:\n"); printf("%.1fx^%d", coef[grau], grau); for (i = grau-1; i >= 0; i--) { if (coef[i] != 0) { if (coef[i] > 0) { if (i == 0) printf(" + %.1f", coef[i]); else if (i == 1) printf(" + %.1fx", coef[i]); else printf(" + %.1fx^%d", coef[i], i); } else { if (i == 0) printf(" - %.1f", -coef[i]); else if (i == 1) printf(" - %.1fx", -coef[i]); else printf(" - %.1fx^%d", -coef[i], i); } } } printf("\n\n"); system("pause"); }
  2. Eu formatei, agora são 2 destinos, 2 dias e 2 horários, devem formar 8 matrizes de 6x8 (6 filas x 8 poltronas). Ao passo que o usuário escolhe, deveria ser mostrado a ele o mapa de vagas disponíveis, quando é confirmada a fila e a poltrona, um outro mapa seria mostrado a ele com a sua vaga em OCUP. Na opção de cancelamento, o usuário informa a fila e a poltrona que deseja cancelar a reserva, se o usuário escolher uma poltrona inválida ou já reservada deve ser dada uma mensagem de erro adequada; Caso contrário a reserva deve ser cancelada, e uma mensagem deve ser dada informando que a reserva foi cancelada, juntamente com o mapa e a sua vaga disponivel. Este é o código que consegui desenvolver até agora. Código: #include <stdio.h> #include <stdlib.h> #include <locale.h> #define MAX_DESTINOS 8 #define MAX_DIAS 7 #define MAX_HORARIOS 4 #define MAX_FILAS 20 #define MAX_POLTRONAS 8 int opdestinos; int opdias; int ophorarios; int opfilas; int oppoltronas; int *****LeVetorArquivo(int *qdestinos, int *qdias, int *qhorarios, int *qfilas, int *qpoltronas) { FILE *fr; int *****v; int i, j, k, l, m; fr = fopen ("reserva.txt", "r"); if (fr == NULL) { perror("reserva.txt"); exit(-1); /* Abandona o programa */ } fscanf(fr, "%d %d %d %d %d", qdestinos, qdias, qhorarios, qfilas, qpoltronas); if ((*qdestinos < 1 || *qdestinos > MAX_DESTINOS)|| (*qdias < 1 || *qdias > MAX_DIAS) || (*qhorarios < 1 || *qhorarios > MAX_HORARIOS) || (*qfilas < 1 || *qfilas > MAX_FILAS) || (*qpoltronas < 1 || *qpoltronas > MAX_POLTRONAS)) { printf("Arquivo invalido\n"); exit(-2); } v = (int *****) malloc (*qdestinos * sizeof(int****)); for (i = 0; i < *qdestinos; i++) v[i] = (int ****) malloc (*qhorarios * sizeof(int***)); for (i = 0; i < *qdestinos; i++) for (j =0; j < *qdias; j++) v[i][j] = (int ***) malloc (*qhorarios * sizeof(int**)); for (i = 0; i < *qdestinos; i++) for (j =0; j < *qdias; j++) for (k =0; k < *qhorarios; k ++) v[i][j][k] = (int **) malloc (*qfilas * sizeof(int*)); for (i = 0; i < *qdestinos; i++) for (j =0; j < *qdias; j++) for (k =0; k < *qhorarios; k ++) for (l = 0; l < *qfilas; l++) v[i][j][k][l] = (int *) malloc (*qpoltronas * sizeof(int)); for (i = 0; i < *qdestinos; i++) for (j =0; j < *qdias; j++) for (k =0; k < *qhorarios; k ++) for (l = 0; l < *qfilas; l++) for (m = 0; m < *qpoltronas; m++) fscanf(fr, "%d", &v[i][j][k][l][m]); fclose(fr); return(v); } void EscreveVetorArquivo(int *****v, int qdestinos, int qdias, int qhorarios, int qfilas, int qpoltronas) { FILE *fw; int i, j, k , l, m; fw = fopen ("reserva.txt", "w"); if (fw == NULL) { perror("reserva.txt"); exit(-1); /* Abandona o programa */ } fprintf(fw, "%d %d %d %d %d\n\n", qdestinos, qdias, qhorarios, qfilas, qpoltronas); for (i = 0; i < qdestinos; i++) { for (j =0; j < qdias; j++) { for (k =0; k < qhorarios; k ++) { for (l = 0; l < qfilas; l++){ for (m = 0; m < qpoltronas; m++) { fprintf(fw, "%d ", v[i][j][k][l][m]); } fprintf(fw, "\n"); } fprintf(fw, "\n\n"); } } } fclose(fw); } void LiberaMemoria(int ***** v, int qdestinos, int qdias, int qhorarios, int qfilas){ int i, j, k, l; for (i = 0; i < qdestinos; i++) for (j = 0; j < qdias; j ++) for (k = 0; k < qhorarios; k++) for (l = 0; l < qfilas; l++) free(v[i][j][k][l]); for (i = 0; i < qdestinos; i++) for (j = 0; j < qdias; j ++) for (k = 0; k < qhorarios; k++) free(v[i][j][k]); for (i = 0; i < qdestinos; i++) for (j = 0; j < qdias; j ++) free(v[i][j]); for (i = 0; i < qdestinos; i++) free(v[i]); free(v); } /* Leitura do menu inicial */ int LeOpcaoMenu(void) { int op; system("cls"); printf("\n\nBem vindo ao sistema de venda de passagens aereas\n\n\n"); printf("\n\nOpcoes Disponiveis\n\n"); printf("1 - Fazer Reserva\n"); printf("2 - Cancelar Reserva\n"); printf("3 - Sair\n"); printf("\n\nOpcao desejada: "); scanf("%d", &op); return(op); } /* Leitura dos destinos */ int LeDestino(int qdestino, char destinos[2][20]) { int op, i; do { system("cls"); printf("\n\nDestinos Disponiveis\n\n"); for (i = 0; i < qdestino; i ++ ) { printf("%d - %s\n", i+1, destinos[i]); } printf("%d - Volta ao Menu Inicial\n", i+1); printf("\n\nOpcao desejada: "); scanf("%d", &op); if (op <1 || op > qdestino +1) { printf("\nOpcao invalida !! \n"); system("pause"); } }while (op <1 || op > qdestino+1); return(op); } /* Leitura dos dias */ int LeDia(int destino, char destinos[2][20], int qdias, char dias_semana[2][8]) { int op, i; do { system("cls"); printf("\n\nDias Disponiveis para o destino %s\n\n", destinos[destino-1]); for (i = 0; i < qdias; i ++ ) { printf("%d - %s\n", i+1, dias_semana[i]); } printf("%d - Volta ao Menu Inicial\n", i+1); printf("\n\nOpcao desejada: "); scanf("%d", &op); if (op <1 || op > qdias +1) { printf("\nOpcao invalida !! \n"); system("pause"); } }while (op <1 || op > qdias+1); return(op); } /* Leitura dos horários */ int LeHorario(int destino, char destinos[2][20], int dia, char dias_semana[2][8], int qhorario, char horarios[2][8]) { int op, i; do { system("cls"); printf("\nHorarios Disponiveis para o destino %s na %s:\n\n", destinos[destino-1], dias_semana[dia-1]); for (i = 0; i < qhorario; i ++ ) { printf("%d - %s\n", i+1, horarios[i]); } printf("%d - Volta ao Menu Inicial\n", i+1); printf("\n\nOpcao desejada: "); scanf("%d", &op); if (op <1 || op > qhorario+1) { printf("\nOpcao Invalida !! \n"); system("pause"); } }while (op <1 || op > qhorario+1); return(op); } /* Leitura das filas */ int LeFila(int destino, char destinos[2][20], int dia, char dias_semana[2][8], int horario, char horarios[2][8], int qfila, char filas[20][8], int qpoltrona, char poltronas[8][20]) { int op, i, j; do { system("cls"); printf("\nEscolha uma dentre as seguintes filas e poltronas:\n\n"); printf(" Painel de Ocupacoes\n"); for (i = 0; i < qfila; i ++ ) { printf("\n"); for (j = 0; j < qpoltrona; j ++ ) if(filas[20][8] == 1 && poltronas[8][20] == 1){ printf("OCUP", filas[i], poltronas[j]); } else printf("%s%s ", filas[i], poltronas[j]); } printf("\n\n%d - Volta ao Menu Inicial\n", i+1); printf("\n\nOpcao da fila desejada: "); scanf("%d", &op); if (op <1 || op > qfila+1) { printf("\nOpcao Invalida !! \n"); system("pause"); } }while (op <1 || op > qfila+1); return(op); } /* Leitura das poltronas */ int LePoltrona(int destino, char destinos[2][20], int dia, char dias_semana[2][8], int horario, char horarios[2][8], int fila, char filas[20][8], int qpoltrona, char poltronas[8][20]) { int op, i; do { printf("\nEscolha uma dentre as seguintes poltronas disponiveis:\n\n"); for (i = 0; i < qpoltrona; i ++ ) { } printf("%d - Volta ao Menu Inicial\n", i+1); printf("\n\nOpcao da poltrona desejada: "); scanf("%d", &op); if (op <1 || op > qpoltrona+1) { printf("\nOpcao Invalida !! \n"); system("pause"); } }while (op <1 || op > qpoltrona+1); return(op); } /* Impressão das opcões escolhidas pelo usuário */ void ReservaVagas(int qdestino, int qdias, int qhorarios, int qfila, int qpoltrona, char destinos[2][20], char dias_semana[2][8], char horarios[2][8], char filas[20][8], char poltronas[8][20]) { int p, d, h, f, a; p = LeDestino(qdestino, destinos); if (p <= qdestino) { d = LeDia(p, destinos, qdias, dias_semana); if (d <= qdias) { h = LeHorario(p, destinos, d, dias_semana, qhorarios, horarios); if (h <= qhorarios){ f = LeFila(p, destinos, d, dias_semana, h, horarios, qfila, filas, qpoltrona, poltronas); if (f <= qfila){ a = LePoltrona(p, destinos, d, dias_semana, h, horarios, f, filas, qpoltrona, poltronas); if (a <= qpoltrona){ printf("\n\nVaga reservada com sucesso!\nVoce fez reserva para viagem com destino a %s, %s, as %s, voce escolheu a poltrona %s na fila %s\n\n", destinos[p-1],dias_semana[d-1], horarios[h-1], poltronas[a-1], filas[f-1]); printf("Obrigado e tenha uma boa viagem!\n\n"); system("pause"); } } } } } } /* Impressão do cancelamento feito pelo usuário */ void CancelaReserva(int qdestino, int qdias, int qhorarios, int qfila, int qpoltrona, char destinos[2][20], char dias_semana[2][8], char horarios[2][8], char filas[20][8], char poltronas[8][20]) { int p, d, h, f, a; p = LeDestino(qdestino, destinos); if (p <= qdestino) { d = LeDia(p, destinos, qdias, dias_semana); if (d <= qdias) { h = LeHorario(p, destinos, d, dias_semana, qhorarios, horarios); if (h <= qhorarios){ f = LeFila(p, destinos, d, dias_semana, h, horarios, qfila, filas, qpoltrona, poltronas); if (f <= qfila){ a = LePoltrona(p, destinos, d, dias_semana, h, horarios, f, filas, qpoltrona, poltronas); if (a <= qpoltrona){ printf("\n\nCancelamento feito com sucesso!\nVoce cancelou sua viagem que seria para %s, %s, as %s, a sua poltrona %s, na fila %s esta livre agora.\n\n", destinos[p-1],dias_semana[d-1], horarios[h-1], poltronas[a-1], filas[f-1]); printf("Obrigado e volte sempre!\n\n"); system("pause"); } } } } } } int main() { int *****mat; int i, qdestinos, qdias, qhorarios, qfilas, qpoltronas, op; char destinos[2][20]={"Fortaleza CE", "Salvador BA"}; char dias_semana[2][8]={"Quarta", "Domingo"}; char horarios[2][8]={"09:00 h", "17:00 h"}; char filas[20][8]={"01", "02", "03", "04", "05", "06"}; char poltronas[8][20]={"01", "02", "03", "04", "05", "06", "07", "08"}; do { mat = LeVetorArquivo(&qdestinos, &qdias, &qhorarios, &qfilas, &qpoltronas); printf("\n\nArquivo Carregado.\n\n"); EscreveVetorArquivo(mat, qdestinos, qdias, qhorarios, qfilas, qpoltronas); op = LeOpcaoMenu(); switch (op) { case 1: system("cls"); ReservaVagas(2, 2, 2, 6, 8, destinos, dias_semana, horarios, filas, poltronas); break; case 2: system("cls"); CancelaReserva(2, 2, 2, 6, 8, destinos, dias_semana, horarios, filas, poltronas); break; case 3: system("cls"); printf("\n\nPROGRAMA FINALIZADO !!!\n\n"); system("pause"); break; default: printf("\nOpcao invalida.\n"); system("pause"); } } while (op != 3); LiberaMemoria(mat, qdestinos, qdias, qhorarios, qfilas); } Não, tenho certeza se ele não está lendo o arquivo "reserva.txt", ou se não está gravando na memoria as opções do usuário. arquivo reserva, com as matrizes: 2 2 2 6 8 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 Obs: 1 - OCULPADA 0 - LIVRE
  3. Essa parte com a alocação das 5 dimensões que vão ser usadas. A leitura dos dados para impressão na tela, o que acham de errado? #include <stdio.h> #include <stdlib.h> #include <locale.h> #define MAX_DESTINOS 8 #define MAX_DIAS 7 #define MAX_HORARIOS 4 #define MAX_FILAS 20 #define MAX_POLTRONAS 8 int ***** LeVetorArquivo(int *qdestinos, int *qdias, int *qhorarios, int *qfilas, int *qpoltronas, char Arq[]) { FILE *fr; int *****v; int i, j, k, l, m; fr = fopen (Arq, "r"); if (fr == NULL) { perror(Arq); exit(-1); /* Abandona o programa */ } fscanf(fr, "%d %d %d %d %d", qdestinos, qdias, qhorarios, qfilas, qpoltronas); if ((*qdestinos < 1 || *qdestinos > MAX_DESTINOS)|| (*qdias < 1 || *qdias > MAX_DIAS) || (*qhorarios < 1 || *qhorarios > MAX_HORARIOS) || (*qfilas < 1 || *qfilas > MAX_FILAS) || (*qpoltronas < 1 || *qpoltronas > MAX_POLTRONAS)) { printf("Arquivo invalido\n"); exit(-2); } v = (int *****) malloc (*qdestinos * sizeof(int ****)); for (i = 0; i < *qdestinos; i++) v[i] = (int ****) malloc (*qhorarios * sizeof(int ***)); for (i = 0; i < *qdestinos; i++) for (j =0; j < *qdias; j++) v[i][j] = (int ***) malloc (*qhorarios * sizeof(int **)); for (i = 0; i < *qdestinos; i++) for (j =0; j < *qdias; j++) for (k =0; k < *qhorarios; k ++) v[i][j][k] = (int **) malloc (*qfilas * sizeof(int *)); for (i = 0; i < *qdestinos; i++) for (j =0; j < *qdias; j++) for (k =0; k < *qhorarios; k ++) for (l = 0; l < *qfilas; l++) v[i][j][k][l] = (int *) malloc (*qpoltronas * sizeof(int)); for (i = 0; i < *qdestinos; i++) for (j =0; j < *qdias; j++) for (k =0; k < *qhorarios; k ++) for (l = 0; l < *qfilas; l++) for (m = 0; m < *qpoltronas; m++) fscanf(fr, "%d", &v[i][j][k][l][m]); fclose(fr); return(v); } int **AlocaMatrizInt(int nlin, int ncol){ int **mat; int i; mat = (int **) malloc (nlin * sizeof(int*)); for (i = 0; i < nlin; i++) mat[i] = (int *) malloc (ncol * sizeof(int)); return(mat); } void LeMatrizArquivo(int ***A, int *linA, int *colA, char Arq[]) { FILE *fr; int **mat; int i, j; fr = fopen (Arq, "r"); if (fr == NULL) { perror(Arq); exit(1); /* Abandona o programa */ } fscanf(fr, "%d %d", linA, colA); //Alocando memória para a matriz A mat = AlocaMatrizInt(*linA, *colA); //Leitura da matriz for (i = 0; i < *linA; i++) for (j = 0; j < *colA; j++) { fscanf(fr, "%d", &mat[i][j]); } *A = mat; fclose(fr); } void ImprimeMatriz(int **mat, int lin, int col, FILE *f) { int i, j; for (i = 0; i < lin; i++) { for (j = 0; j < col; j++) { fprintf(f, "%3d ", mat[i][j]); } fprintf(f, "\n"); } } void LiberaMemoria(int ** mat, int lin) { int i; for (i = 0; i < lin; i++) free(mat[i]); free(mat); } void EscreveMatrizArquivo(int **A, int lin, int col, char Arq[]) { FILE *fw; int i, j; fw = fopen (Arq, "w"); if (fw == NULL) { perror(Arq); exit(2); /* Abandona o programa */ } fprintf(fw, "#Matriz A\n"); fprintf(fw, "%d %d\n", lin, col); /* Dimensao da matriz */ ImprimeMatriz(A, lin, col, fw); } int main(int argc, char *argv[]) { int **A; int i, nlinA, ncolA; setlocale(LC_ALL,""); // Alterando para a localidade do sistema (português). system("color F1"); // mudando a cor do fundo e a cor da fonte if (argc != 3) { printf("Uso: %s <arquivo entrada> <arquivo saída> \n", argv[0]); return 1; } LeMatrizArquivo(&A, &nlinA, &ncolA, argv[1]); printf("\n\nImpressão Matriz A\n\n"); ImprimeMatriz(A, nlinA, ncolA, stdout); EscreveMatrizArquivo(A, nlinA, ncolA, argv[2]); LiberaMemoria(A, nlinA); system("pause"); }
  4. O arquivo de entrada será o mesmo de saída, para o usuário! Fiz essa primeira parte da leitura/impressão do arquivo de entrada: #include <stdio.h> #include <stdlib.h> #include <locale.h> #define MAX_DESTINOS 8 #define MAX_DIAS 7 #define MAX_HORARIOS 4 #define MAX_FILAS 20 #define MAX_POLTRONAS 8 int ***** LeVetorArquivo(int *qdestinos, int *qdias, int *qhorarios, int *qfilas, int *qpoltronas) { FILE *fr; int *****v; int i, j, k, l, m; fr = fopen ("reserva.txt", "r"); if (fr == NULL) { perror("reserva.txt"); exit(-1); /* Abandona o programa */ } fscanf(fr, "%d %d %d %d %d", qdestinos, qdias, qhorarios, qfilas, qpoltronas); if ((*qdestinos < 1 || *qdestinos > MAX_DESTINOS)|| (*qdias < 1 || *qdias > MAX_DIAS) || (*qhorarios < 1 || *qhorarios > MAX_HORARIOS) || (*qfilas < 1 || *qfilas > MAX_FILAS) || (*qpoltronas < 1 || *qpoltronas > MAX_POLTRONAS)) { printf("Arquivo invalido\n"); exit(-2); } v = (int *****) malloc (*qdestinos * sizeof(int ****)); for (i = 0; i < *qdestinos; i++) v[i] = (int ****) malloc (*qhorarios * sizeof(int ***)); for (i = 0; i < *qdestinos; i++) for (j =0; j < *qdias; j++) v[i][j] = (int ***) malloc (*qhorarios * sizeof(int **)); for (i = 0; i < *qdestinos; i++) for (j =0; j < *qdias; j++) for (k =0; k < *qhorarios; k ++) v[i][j][k] = (int **) malloc (*qfilas * sizeof(int *)); for (i = 0; i < *qdestinos; i++) for (j =0; j < *qdias; j++) for (k =0; k < *qhorarios; k ++) for (l = 0; l < *qfilas; l++) v[i][j][k][l] = (int *) malloc (*qpoltronas * sizeof(int)); for (i = 0; i < *qdestinos; i++) for (j =0; j < *qdias; j++) for (k =0; k < *qhorarios; k ++) for (l = 0; l < *qfilas; l++) for (m = 0; m < *qpoltronas; m++) fscanf(fr, "%d", &v[i][j][k][l][m]); fclose(fr); return(v); } void EscreveVetorArquivo(int *****v, int qdestinos, int qdias, int qhorarios, int qfilas, int qpoltronas) { FILE *fw; int i, j, k , l, m; fw = fopen ("reserva1.txt", "w"); if (fw == NULL) { perror("reserva1.txt"); exit(-1); /* Abandona o programa */ } fprintf(fw, "%d %d %d %d %d\n\n", qdestinos, qdias, qhorarios, qfilas, qpoltronas); for (i = 0; i < qdestinos; i++) { for (j =0; j < qdias; j++) { for (k =0; k < qhorarios; k ++) { for (l = 0; l < qfilas; l++){ for (m = 0; m < qpoltronas; m++) { fprintf(fw, "%d ", v[i][j][k][l][m]); } fprintf(fw, "\n"); } fprintf(fw, "\n\n"); } } } fclose(fw); } int main() { int *****v; int i, qdestinos, qdias, qhorarios, qfilas, qpoltronas; v = LeVetorArquivo(&qdestinos, &qdias, &qhorarios, &qfilas, &qpoltronas); EscreveVetorArquivo(v, qdestinos, qdias, qhorarios, qfilas, qpoltronas); for (i = 0; i < qfilas; i++) free(v[i]); free(v); printf("\n\n"); system("pause"); return 0; } "serão somente 2 destinos, 2 dias e 2 horários" Seguem os arquivos, reserva.txt e reserva1.txt : 2 2 2 6 8 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 O que acham, estou indo em um caminho correto?
  5. Eu consegui fazer apenas dessa forma: #include <stdio.h> #include <stdlib.h> int LeOpcaoMenu(void) { int op; system("cls"); printf("\n\nBem vindo ao sistema de venda de passagens aereas\n\n\n"); printf("\n\nOpcoes Disponiveis\n\n"); printf("1 - Fazer Reserva\n"); printf("2 - Cancelar Reserva\n"); printf("3 - Sair\n"); printf("\n\nOpção desejada: "); scanf("%d", &op); return(op); } int LeDestino(int qdestino, char destinos[8][20]) { int op, i; do { system("cls"); printf("\n\nDestinos Disponiveis\n\n"); for (i = 0; i < qdestino; i ++ ) { printf("%d - %s\n", i+1, destinos[i]); } printf("%d - Volta ao Menu Inicial\n", i+1); printf("\n\nOpcao desejada: "); scanf("%d", &op); if (op <1 || op > qdestino +1) { printf("\nOpcao invalida !! \n"); system("pause"); } }while (op <1 || op > qdestino+1); return(op); } int LeDia(int destino, char destinos[8][20], int qdias, char dias_semana[7][8]) { int op, i; do { system("cls"); printf("\n\nDias Disponiveis para o destino %s\n\n", destinos[destino-1]); for (i = 0; i < qdias; i ++ ) { printf("%d - %s\n", i+1, dias_semana[i]); } printf("%d - Volta ao Menu Inicial\n", i+1); printf("\n\nOpcao desejada: "); scanf("%d", &op); if (op <1 || op > qdias +1) { printf("\nOpcao invalida !! \n"); system("pause"); } }while (op <1 || op > qdias+1); return(op); } int LeHorario(int destino, char destinos[8][20], int dia, char dias_semana[7][8], int qhorario, char horarios[4][8]) { int op, i; do { system("cls"); printf("\nHorarios Disponiveis para o destino %s na %s:\n\n", destinos[destino-1], dias_semana[dia-1]); for (i = 0; i < qhorario; i ++ ) { printf("%d - %s\n", i+1, horarios[i]); } printf("%d - Volta ao Menu Inicial\n", i+1); printf("\n\nOpcao desejada: "); scanf("%d", &op); if (op <1 || op > qhorario+1) { printf("\nOpcao Invalida !! \n"); system("pause"); } }while (op <1 || op > qhorario+1); return(op); } int LeFila(int destino, char destinos[8][20], int dia, char dias_semana[7][8], int horario, char horarios[4][8], int qfila, char filas[20][8]) { int op, i; do { system("cls"); printf("\nEscolha uma dentre as seguintes filas:\n\n"); for (i = 0; i < qfila; i ++ ) { printf("%d - %s\n", i+1, filas[i]); } printf("%d - Volta ao Menu Inicial\n", i+1); printf("\n\nOpcao desejada: "); scanf("%d", &op); if (op <1 || op > qfila+1) { printf("\nOpcao Invalida !! \n"); system("pause"); } }while (op <1 || op > qfila+1); return(op); } int LePoltrona(int destino, char destinos[8][20], int dia, char dias_semana[7][8], int horario, char horarios[4][8], int fila, char filas[20][8], int qpoltrona, char poltronas[8][20]) { int op, i; do { system("cls"); printf("\nEscolha uma dentre as seguintes poltronas disponiveis:\n\n"); for (i = 0; i < qpoltrona; i ++ ) { printf("%d - %s\n", i+1, poltronas[i]); } printf("%d - Volta ao Menu Inicial\n", i+1); printf("\n\nOpcao desejada: "); scanf("%d", &op); if (op <1 || op > qpoltrona+1) { printf("\nOpcao Invalida !! \n"); system("pause"); } }while (op <1 || op > qpoltrona+1); return(op); } void ReservaVagas(int qdestino, int qdias, int qhorarios, int qfila, int qpoltrona, char destinos[8][20], char dias_semana[7][8], char horarios[4][8], char filas[20][8], char poltronas[8][20]) { int p, d, h, f, a; p = LeDestino(qdestino, destinos); if (p <= qdestino) { d = LeDia(p, destinos, qdias, dias_semana); if (d <= qdias) { h = LeHorario(p, destinos, d, dias_semana, qhorarios, horarios); if (h <= qhorarios){ f = LeFila(p, destinos, d, dias_semana, h, horarios, qfila, filas); if (f <= qfila){ a = LePoltrona(p, destinos, d, dias_semana, h, horarios, f, filas, qpoltrona, poltronas); if (a <= qpoltrona){ printf("\n\nVoce fez reserva para viagem com destino a %s, %s, as %s, voce escolheu a poltrona %s na %s\n\n", destinos[p-1],dias_semana[d-1], horarios[h-1], poltronas[a-1], filas[f-1]); system("pause"); } } } } } } void CancelaReserva(int qdestino, int qdias, int qhorarios, char destinos[8][20], char dias_semana[7][8], char horarios[4][8]) { int p, d, h; p = LeDestino(qdestino, destinos); if (p <= qdestino) { d = LeDia(p, destinos, qdias, dias_semana); if (d <= qdias) { h = LeHorario(p, destinos, d, dias_semana, qhorarios, horarios); if (h <= qhorarios){ printf("\n\nCancelamento Realizado com sucesso\nVoce cancelou a sua viagem para %s, que seria em uma %s, no horario das %s\n\n", destinos[p-1],dias_semana[d-1], horarios[h-1]); system("pause"); } } } } int main() { int op; char destinos[8][20]={"Rio de Janeiro RJ", "Sao Paulo SP", "Belo Horizonte MG", "Santa Catarina RS", "Salvador BA", "Recife PE", "Palmas TO", "Belem do Para PA "}; char dias_semana[7][8]={"Segunda", "Terca", "Quarta", "Quinta", "Sexta", "sábado", "Domingo"}; char horarios[4][8]={"09:00 h", "13:00 h", "17:00 h", "21:00 h"}; char filas[20][8]={"fila 1", "fila 2", "fila 3", "fila 4", "fila 5", "fila 6", "fila 7", "fila 8", "fila 9", "fila 10", "fila 11", "fila 12", "fila 13", "fila 14", "fila 15", "fila 16", "fila 17", "fila 18", "fila 19", "fila 20"}; char poltronas[8][20]={"1", "2", "3", "4", "5", "6", "7", "8"}; do { op = LeOpcaoMenu(); switch (op) { case 1: system("cls"); ReservaVagas(8, 7, 4, 20, 8, destinos, dias_semana, horarios, filas, poltronas); break; case 2: system("cls"); CancelaReserva(8, 7, 4, destinos, dias_semana, horarios); break; case 3: system("cls"); printf("\n\nPROGRAMA FINALIZADO !!!\n\n"); system("pause"); break; default: printf("\nOpcao invalida.\n"); system("pause"); } } while (op != 3); } Ao longo do programa precisaria mostrar ao usuário, as opções de vagas em forma de matriz (filas por poltronas) em que cada vaga seria representada por 4 dígitos, ex: 0102, 1ª fila, 2ª poltrona. Além de mostrar algumas das vagas já ocupadas, pelo texto OCUP. No fim, mostraria a matriz final com sua vaga secionada. É estas matrizes que eu não consegui fazer para se adequar ao código, necessitaria ser um vetor multidimensional (*****) para cada dimensão ser ocupada (destinos, dias, horários, filas e poltronas).
  6. Preciso de ajuda em uma atividade, que pede o seguinte: Crie um programa que simule a ''compra de passagens aéreas de uma empresa'', mostrando ao usuário um menu inicial com as opções de reserva e cancelamento, em seguida os destino disponíveis, os dias disponíveis, os horários disponíveis, a fila pretendida e por ultimo a poltrona desejada. No final, o programa deve mostrar ao usuário um mapa de lugares do voo desejado: caso o lugar esteja vago, mostre seu número, seguinte forma, o número da fila com dois dígitos seguindo do número da poltrona com dois dígitos. Ex: primeira poltrona na primeira fila, o número será 0101. Caso a poltrona já esteja ocupada, informe no lugar do código, imprimir “OCUP”. Se o usuário escolher uma poltrona inválida ou já reservada, mostre uma mensagem de erro. Caso escolha um lugar vago, mostre a mensagem, reserva foi efetuada com sucesso e retorne ao menu principal. O programa será feito com um vetor multidimensional, ele deve ler o ARQUIVO DE ENTRADA que contém o mapa de reservas. Na primeira linha do arquivo deve conter a quantidade de destinos (máximo 8), a quantidade de dias (máximo 7), a quantidade de horários (máximo de 4), a quantidade de filas (máximo de 20), e a quantidade de poltronas por fila (máximo de 8). O sistema informatizado deve ser capaz de fazer a venda semanal de lugares, e ao ser finalizado o mapa atual de reservas deve ser gravado e sobrescrito sobre o arquivo de entrada. OBS: Não devem ser utilizadas variáveis globais, não deve ser utilizada a biblioteca string.h. Não sei como fazer sem o uso da string.h, desde já agradeço quem puder me auxiliar, pois estou com muita dificuldade.

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!