-
Posts
4 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
posts postados por Artefactho
-
-
Mano, sou um velho de 40 anos aprendendo a programar, entrei para a faculdade "tarde" creio que nunca é tarde pra aprender.
valeu Irmão. (tenho 40 mas digito que nem um mulecote kkkkk;
#include <stdio.h> int main () { printf ("Obrigado devair1010\n Ajudou Muito!\n "); return (0); }
- 1
- 1
-
2 horas atrás, devair1010 disse:
@Artefactho seu código está bom , e para voltar ao menu é desse jeito mesmo que você colocou , um loop while mesmo , mas o que acontece é que você colocou o comando return uma linha antes do ideal , que seria depois do Loop while , e esses if's poderiam ser substituídos por um switch , que os case's dele fariam as comparações de Qual opção foi pedida pelo Usuário , e nesse caso o Default seria a opção Inválida que você pretende colocar nesse código , e seu código com algumas modificações poeria ser assim :
#include <stdio.h> #include <windows.h> #include <stdlib.h> #define cls system("cls || clear"); #define TAM 01 void saindo(); struct livro { int codigo; char autor[30]; char titulo[50]; char editora[30]; }; int letras[8][5] ={{15,16,14, 1,30}, /* letra S */ {14,17,31,17,17}, /* letra A */ {14, 4, 4, 4,14}, /* letra I */ {17,25,21,19,17}, /* letra N */ {30,17,17,17,30}, /* letra D */ {14,17,17,17,14}, /* letra O */ { 0, 0, 0, 0, 0}, /* letra */ { 1, 2, 4, 0,16}, /* letra ! */ }; int main() { struct livro ficha[TAM]; int busca, i, j, acha, op; op = 32768; while( op != 0 ) { cls printf("1 - Inserir um Novo Cadastro\n"); printf("2 - Mostrar todos os cadastros\n"); printf("0 - Encerrar\n"); printf("Digite a opcao desejada: "); scanf("%d", &op); fflush(stdin); if (op == 1) { system("cls"); for (i=0; i<TAM; i++) { printf("Digite o codigo do livro da posicao %d:", i+1 ); scanf("%d", &ficha[i].codigo); fflush(stdin); printf("Digite o titulo do livro: "); scanf("%50[^\n]s", &ficha[i].titulo); fflush(stdin); printf("Digite o nome do autor: "); scanf("%30[^\n]s", &ficha[i].autor); fflush(stdin); printf("Digite o nome da editora: "); scanf("%30[^\n]s", &ficha[i].editora); fflush(stdin); } } else { if (op == 2) { system("cls"); for (i=0; i<TAM; i++) { printf("\nCODIGO: %d\n", ficha[i].codigo ); printf("TITULO: %s\n", ficha[i].titulo); printf("AUTOR: %s\n", ficha[i].autor); /*printf("ÁREA: %s\n", ficha.area);*/ /*printf("ANO: %d\n", ficha.ano);*/ printf("EDITORA: %s\n\n", ficha[i].editora); } } else { if (op == 3) { system("cls"); printf("Digite o codigo que deseja buscar: "); scanf ("%d", &busca); i = 0; acha = 0; while ((i < TAM) && (acha == 0)) { if (ficha[i].codigo == busca) acha = 1; else i++; } if (acha == 1) { printf("\nCODIGO: %d\n", ficha[i].codigo ); printf("TITULO: %s\n", ficha[i].titulo); printf("AUTOR: %s\n", ficha[i].autor); printf("EDITORA: %s\n\n", ficha[i].editora); } else printf("\n Registro não encontrado"); } else { if (op ==4) { system("cls"); for (i=0;i<TAM-1;i++) { for (j=i+1;j<TAM;j++) { { ficha[i] = ficha[j]; } } } for (i=0;i<TAM;i++) { printf("\n CODIGO: %d, TITULO:%s\n\n", ficha[i].codigo, ficha[i].titulo); } } else { if( op != 0 ) { printf("\n\t Opcao Invalida !\n Espere 3 Segundos para voltar ao Menu\n"); Sleep(3000); } } } } } } saindo(); printf("\n\n\n\n\n"); return 65535; } void saindo(){ int w,px,py,x; /* variáveis simples */ HANDLE hOut; /* controle dos dispositivos do pc */ hOut= GetStdHandle(STD_OUTPUT_HANDLE); /* pega a saída padrão */ CONSOLE_SCREEN_BUFFER_INFO SBInfo; /* informações sobre a buffer da tela */ GetConsoleScreenBufferInfo(hOut, &SBInfo);/* pega a posição do cursor do console */ px = SBInfo.dwCursorPosition.X; /* pX será a posição da coluna do cursor no console */ py = SBInfo.dwCursorPosition.Y; /* pY será a posição da linha do cursor no console */ int y1=py+10,x1=20,y2=y1,x2=x1,j,i,a,b; /*y1=linha inicial y2 para recuperar a linha inicial*/ for(i=0;i<8;i++){ /* sao 8 letras */ /*textcolor_2(rand()%15,rand()%15);*/ for(j=0;j<5;j++){ /*o caractere é de 5 linhas */ x1 = x2; a=letras[i][j]; /*pega o numero da 1 linha do caractere */ for(b=0;b<5;b++){ /*aqui eh um numero de apenas 8 bits */ //gotoxy_2(x1,y1); SetConsoleCursorPosition( GetStdHandle(STD_OUTPUT_HANDLE),(COORD){x1,y1}); if(a % 2 != 0){ /*se bit 0 igual 1 */ printf("%c",219); /*coloca espaço invertido senão coloca espaço normal */ } else{ printf(" "); /*senão coloca espaço normal */ } a=a/2; /*dividindo numero por 2 desloca os bits para direita*/ x1--; Sleep(10); } y1++; /*muda para proxima linha */ x1=x2; /*volta para a coluna inicial */ } /*proxima linha */ x2=x2+6; /*avança 8 colunas posicionando para o prox caract */ y1=y2; /*volta para linha inicial */ } /*imprimiu o primeiro caractere */ }
Obrigado por responder,
ficou legal, pois o menu agora aparece porém matou a opçaõ 2.
agora ele deixou de ler os dados de entrada da opção 2 .
- 1
-
Olá, senhores (as)
sou sprendiz de C e no código abaixo gostaria de saber como fazer para que sempre que o usuário desejar executar as opção 1 ou 2 (exceto 0), o programa deve realizar executar o solicitado e, logo após isso, o programa deve retornar ao menu, dando ao usuário a possibilidade de executar novamente alguma das opções listadas no menu. A outra coisa seria como reportar uma msg de erro caso digite um valor diferente de 1,2 ou 0.
#include <stdio.h> #include <stdlib.h> #define TAM 05 struct livro { int codigo; char autor[30]; char titulo[50]; char editora[30]; }; int main() { struct livro ficha[TAM]; int busca, i, j, acha, op; op = 0; while (op !=5) { printf("1 - Inserir um Novo Cadastro\n"); printf("2 - Mostrar todos os cadastros\n"); printf("0 - Encerrar\n"); printf("Digite a opção desejada: "); scanf("%d", &op); fflush(stdin); if (op == 1) { system("cls"); for (i=0; i<TAM; i++) { printf("Digite o cádigo do livro da posição %d:", i+1 ); scanf("%d", &ficha.codigo); fflush(stdin); printf("Digite o título do livro: "); scanf("%50[^\n]s", &ficha.titulo); fflush(stdin); printf("Digite o nome do autor: "); scanf("%30[^\n]s", &ficha.autor); fflush(stdin); printf("Digite o nome da editora: "); scanf("%30[^\n]s", &ficha.editora); fflush(stdin); } } else { if (op == 2) { system("cls"); for (i=0; i<TAM; i++) { printf("\nCÓDIGO: %d\n", ficha.codigo ); printf("TÍTULO: %s\n", ficha.titulo); printf("AUTOR: %s\n", ficha.autor); /*printf("ÁREA: %s\n", ficha.area);*/ /*printf("ANO: %d\n", ficha.ano);*/ printf("EDITORA: %s\n\n", ficha.editora); } } else { if (op == 3) { system("cls"); printf("Digite o código que deseja buscar: "); scanf ("%d", &busca); i = 0; acha = 0; while ((i < TAM) && (acha == 0)) { if (ficha.codigo == busca) acha = 1; else i++; } if (acha == 1) { printf("\nCÓDIGO: %d\n", ficha.codigo ); printf("TÍTULO: %s\n", ficha.titulo); printf("AUTOR: %s\n", ficha.autor); printf("EDITORA: %s\n\n", ficha.editora); } else printf("\n Registro não encontrado"); } else { if (op ==4) { system("cls"); for (i=0;i<TAM-1;i++) { for (j=i+1;j<TAM;j++) { { ficha = ficha[j]; } } } for (i=0;i<TAM;i++) { printf("\n CÓDIGO: %d, TÍTULO:%s\n\n", ficha.codigo, ficha.titulo); } } } } } return (0); } }
- 1
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
Como fazer MENU de opções aparecer em todas as telas ?
em C/C#/C++
Postado
@KXSY Obrigado pelo seu tempo e ajuda. fui testar e ta dando uns erros mas vou ver como corrijo isso e depois te passo feedback. obrigado
@arfneto Muito Bom, obrigado pela explicação e pelo code, vou testar., algumas coisa ainda não estão muito claras para mim no que diz respeito a performance, segurança e eficiência em C.
O começo parece ser duro mas o legal e que to ralando pra começar a codar sozinho.
Creio que com tudo que você apresentou e suficiente para melhorar minha base, não consigo acrescetar nada pela falta de know how mas de fato o conteúdo e a didática apresentada somou muito.
Obrigado