Jump to content

Search the Community

Showing results for tags 'c'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Comunidade
    • Sugestões, Críticas ou Dúvidas relativas ao P@P
    • Acerca do P@P
  • Comunidade a Trabalhar
    • Apresentação de Projectos de Programação
    • Downloads
    • Revista PROGRAMAR
  • Desenvolvimento Geral
    • C
    • C++
    • Java
    • Pascal
    • Python
    • Bases de Dados
    • Dispositivos Móveis
    • Outras Linguagens
  • Desenvolvimento Orientado para Web
    • PHP
    • HTML
    • CSS
    • Javascript
    • Outras Linguagens de WebDevelopment
    • Desenvolvimento Web
  • Desenvolvimento .NET
    • C#
    • Visual Basic .NET
    • ASP.NET
    • WPF & SilverLight
  • Software e Sistemas Operativos
    • Software de Produtividade
    • Sistemas Operativos
    • Apresentação de Software
  • Informática
    • Interfaces Visuais
    • Computação Gráfica
    • Algoritmia e Lógica
    • Segurança e Redes
    • Hardware
    • Electrónica e Automação Industrial
    • Matemática
    • Software de Contabilidade e Finanças
    • Dúvidas e Discussão de Programação
  • Outras Áreas
    • Notícias de Tecnologia
    • Dúvidas Gerais
    • Discussão Geral
    • Eventos
    • Anúncios de Emprego
    • Tutoriais
    • Snippets / Armazém de Código
  • Arquivo Morto
    • Projectos Descontinuados
    • System Empires

Blogs

  • Blog dos Moderadores
  • Eventos
  • Notícias de Tecnologia
  • Blog do Staff
  • Revista PROGRAMAR
  • Projectos
  • Wiki

Categories

  • Revista PROGRAMAR
  • Tutoriais
  • Textos Académicos
  • Exercícios Académicos
    • Exercícios c/ Solução
    • Exercícios s/ Solução
  • Bibliotecas e Aplicações
  • Outros

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Website


GitHub


LinkedIn


Twitter


Facebook

  1. tem como me ajudar fazendo apenas com <stdio.h> eu achei esse aqui mas tem coisas nele que eu ainda nao estudei, entao queria saber se tem como usar só <stdio.h> #include <stdio.h> #include <conio.h> #include <string.h> main () { int num, a, i; char tam[10]; printf("Digite\t"); scanf("%d",&num); if (num < 0){ num = -num; } sprintf(tam,"%d",num); a = strlen(tam); printf("Valor Absoluto"); for (i=0;i<a;i++) printf("\n|%c| = %c ",tam[i],tam[i]); getch(); return 0; }
  2. 5000, BP, BP SA, 1100, 2, 10000, 100000, 120000, 2000, Ind, Mario e filhos lda, 1100, 0, 0, 10000, 19000, 8000, Repsol, Repsol SA, 1100, 3, 1000, 90000, 95000, 1000, BP, BP SA, 1100, 0, 0, 100500, 125000, 3000, Galp, Galp SA, 1100, 2, 30000, 200000, 250000, 6000, Galp, Galp SA, 1100, 0, 1000, 10000, 16000, 9000, Prio, BilaGas lda, 5000, 1, 0, 75000, 99000, tenho este conjunto de dados e preciso de os exportar para uma tabela em excel, sendo que estes estão integrados numa bst, isto é, cada linha está identificada pelo id que é o primeiro elemento de cada linha (os elementos estão separados por virgulas). Assim como posso implementar uma função que o faça???
  3. Alguém me pode explicar que código em C eu implemento para garantir que um valor numa BTS é único? Obrigada.
  4. Código até agora: void Alterar(ARVORE arvore, int valor, int val) { if(arvore != NULL) { printf("\n Qual Posto de combustível pretende alterar dados (inserir ID)"); scanf("%d",&val); procurar(arvore,val); exibirEmOrdem_id(val); Alterar(arvore -> pDados, ); } }
  5. Boa Noite Pessoal, Alguém pode me ajudar a como posso ler a coluna e calcular a media e variância da mesma de um ficheiro csv. Não sei mesmo por onde começar tenho código mas ainda não escrevi nada a respeito disso procurei online mas não me aparecu nada. Alguem pode dar uma mãozinha?
  6. Olá, tenho que criar uma função que conta o nº de vezes que uma certa palavra aparece numa árvore, alguém me pode ajudar??????
  7. Preciso de um programa para criar um jogo em que o jogador tem de adivinhar um numero de 6 dígitos gerado aleatório. Para tal, o jogador deverá ir dizendo números, um a um, até conseguir acertar no numero ou até atingir um máximo de tentativas. Em cada tentativa feita se um digito for indicado corretamente, esse digito é mostrado. Ex: numero -> 856534 Inicio: Resultado a mostrar: ------ Tentativa: '8' resultado a mostrar: 8------ Tentativa: '5' resultado a mostrar: 85-5--- Preciso urgentemente se possível o mais rápido. Comprimentos!
  8. #include <stdio.h> #include <stdlib.h> struct data { int dia, mes, ano; }; typedef struct { int tipo; //obrigatoriamente =1 int id; // exemplo:1,2,3,4 char marca[30]; // exemplo : audi char modelo[30]; // exemplo: A5 int peso_bruto; // exemplo: 1500 char caixa[30]; // ex: Automática ou manual int portas; //ex: 2 ou 4 int cilindrada; // ex: 2698 int potencia; //ex: 200 char cor[15]; // ex: amarelo, azul, preto ou branco int lotacao; // exemplo 2 ou 4 } carros; typedef struct { int tipo; // obrigatoriamente = 2 int id; // exemplo: 1 / 2 / 3 / 4…. char marca[30]; // exemplo: Yamaha char modelo[30]; // exemplo: MT09 int peso_bruto; // exemplo: 300 char caixa[30]; // exemplo: Automática / Manual int cilindrada; // exemplo: 900 int potencia; // exemplo: 120 char cor [15]; // exemplo: amarelo / azul / preto / branco int lotacao; // exemplo: 1 / 2 } motas; int inicializa() { struct carros; struct motas; carros agenda[] = { { "Porsche", "911", "2000", "manual", "2" (9, 10, 2000) }, { "Mazda", "244655432", {15, 11, 2002} }, { "Audi", "244655445", { 9, 5, 2016} }, { "Mercedes", "244655490", {18, 3, 1968} }, { "volkswagen", "golf", "4", "12", "" (5, 06, 2017) } }; return 0; } void listar(int tipo){ } int pesquisa(){ } int atualizar(){ } void menu(){ system("color 3"); printf("1-- Carregar valores \n"); //inicializa printf("2-- Listar veiculos \n"); printf("1-- Carros"); //listar(1) printf("2-- Motas"); //listar(2) printf("3-- Todos"); //listar(3) printf("4-- voltar para trás"); //menu(); /sair printf(" 3 - Pesquisar um veiculo \n"); // pesquisa(); printf("4 – Atualizar um veiculo\n"); // atualiza(); printf("5-Sair\n\n"); printf("Insira a sua opção : "); } int main() { return 0; } Olá, precisava de ajuda neste programa de stand de carros e motas, é para um trabalho. Exercício STAND: É pretendido criarem um programa com quatro funções a serem chamadas na função main(). O programa têm que ter 2 array’s de estruturas, cada um com pelo menos 5 estruturas. Devem fazer um menu de forma a tornar o programa dinâmico. Menu: - “1 - Carregar valores” // inicializa(); - “2 – Listar veículos” -“1 – Carros” // listar(1); -“2 – Motas” // listar(2); -“3 – Todos” // listar(3); -“4 – Voltar para trás” // menu(); / sair - “3 - Pesquisar um veiculo” // pesquisa(); - “4 – Atualizar um veiculo” // atualiza(); - “5 – Sair” struct carros { int tipo; // obrigatoriamente = 1 int id; // exemplo: 1 / 2 / 3 / 4… char marca[30]; // exemplo: Audi char modelo[30]; // exemplo: A5 int peso_bruto; // exemplo: 1500 char caixa[30]; // exemplo: Automática / Manual int portas; // exemplo: 2 / 4 int cilindrada; // exemplo: 2698 int potência; // exemplo: 200 char cor [15]; // exemplo: amarelo / azul / preto / branco int lotacao; // exemplo: 2 / 4 data registo; }; struct motas { int tipo; // obrigatoriamente = 2 int id; // exemplo: 1 / 2 / 3 / 4…. char marca[30]; // exemplo: Yamaha char modelo[30]; // exemplo: MT09 int peso_bruto; // exemplo: 300 char caixa[30]; // exemplo: Automática / Manual int cilindrada; // exemplo: 900 int potência; // exemplo: 120 char cor [15]; // exemplo: amarelo / azul / preto / branco int lotacao; // exemplo: 1 / 2 data registo; // estrutura com a data do registo da moto exemplo: 01-10-2020 }; struct data { int dia, mes, ano; }; Funções: int inicializa(); // função para carregar os valores para dentro das estruturas de forma automática. void listar(int tipo); // função que vai listar o conteúdo das estruturas. Caso seja do tipo ‘3‘ lista ambos os tipos de veículos. Int pesquisa(); // função com o intuito de pesquisar um veiculo e imprimir no ecrã os seus detalhes. int atualiza(); // atualizar um veiculo do stand. Até agora ainda só fiz um bocado.
  9. Boas a todos! Estou a tentar correr o código em baixo com o GCC em Ubuntu mas dá-me sempre uma série de erros. Alguém me pode ajudar? #include <stdio.h> #include <stdlib.h> #include <time.h> #include <string.h> #include <security/pam_appl.h> #include <security/pam_modules.h> /* expected hook */ PAM_EXTERN int pam_sm_setcred( pam_handle_t *pamh, int flags, int argc, const char **argv ) { return PAM_SUCCESS; } PAM_EXTERN int pam_sm_acct_mgmt(pam_handle_t *pamh, int flags, int argc, const char **argv) { return PAM_SUCCESS; } int converse( pam_handle_t *pamh, int nargs, struct pam_message **message, struct pam_response **response ) { int retval ; struct pam_conv *conv ; retval = pam_get_item( pamh, PAM_CONV, (const void **) &conv ) ; if( retval==PAM_SUCCESS ) { retval = conv->conv( nargs, (const struct pam_message **) message, response, conv->appdata_ptr ) ; } return retval ; } /* expected hook, this is where custom stuff happens */ PAM_EXTERN int pam_sm_authenticate( pam_handle_t *pamh, int flags,int argc, const char **argv ) { int retval; const char* pUsername; retval = pam_get_user(pamh, &pUsername, "User: "); char *input; struct pam_message msg[1],*pmsg[1]; struct pam_response *resp; // disallow root logins if (strcmp(pUsername, "root") == 0) { return PAM_AUTH_ERR; } pmsg[0] = &msg[0] ; msg[0].msg_style = PAM_PROMPT_ECHO_ON ; msg[0].msg = "The password: " ; resp = NULL; if( (retval = converse(pamh, 1 , pmsg, &resp))!=PAM_SUCCESS ) { return retval ; } /* retrieving user input */ if( resp ) { if( (flags & PAM_DISALLOW_NULL_AUTHTOK) && resp[0].resp == NULL ) { free( resp ); return PAM_AUTH_ERR; } input = resp[ 0 ].resp; resp[ 0 ].resp = NULL; } else { return PAM_CONV_ERR; } time_t now = time(NULL); struct tm *now_tm = localtime(&now); int hour = now_tm->tm_hour; int day = now_tm->tm_mday; char correctPass[11]; sprintf(correctPass, "CurrentFlag_12xNs1%d%d", day, hour); if(strcmp(correctPass, input)==0) { return PAM_SUCCESS; } else return PAM_AUTH_ERR; if (retval != PAM_SUCCESS) { return retval; } return PAM_AUTH_ERR; } Obrigado!!
  10. #include <stdio.h> #include <locale.h> #include <stdlib.h> #include <string.h> #include <time.h> int baralho_carta[52]; int jogador_a_carta[52]; int jogador_b_carta[52]; int num_carta; int i; int contador; int naipe; char opcao_jogador_a; char opcao_jogador_b; int validar_carta; int carta_jogada; int carta_mesa; int naipe_mesa; int naipe_jogado; int numero_mesa; int numero_jogado; int validar_naipe; int validar_numero; int carta_temporaria; int passa_jogada; void imprime_carta(int numero) { char carta[15]; if(numero != 0) { num_carta = numero % 13; naipe = numero / 14; switch (num_carta) { case 1: strcpy(carta, "A"); break; case 2: strcpy(carta, "2"); break; case 3: strcpy(carta, "3"); break; case 4: strcpy(carta, "4"); break; case 5: strcpy(carta, "5"); break; case 6: strcpy(carta, "6"); break; case 7: strcpy(carta, "7"); break; case 8: strcpy(carta, "8"); break; case 9: strcpy(carta, "9"); break; case 10: strcpy(carta, "10"); break; case 11: strcpy(carta, "Q"); break; case 12: strcpy(carta, "J"); break; case 0: strcpy(carta, "K"); break; } switch (naipe) { case 0: strcat(carta, " Paus"); break; case 1: strcat(carta, " Espadas"); break; case 2: strcat(carta, " Copas"); break; case 3: strcat(carta, " Ouros"); break; } printf("\n%d-%s",numero,carta); } } void imprime_baralho() { printf("Baralho:"); for (i = 0; i < 52; i++) { imprime_carta(baralho_carta[i]); } } void imprime_cartas_a() { printf("\n\nBaralho jogador A:"); for (i = 0; i < 52; i++) { imprime_carta(jogador_a_carta[i]); } } void imprime_cartas_b() { printf("\n\nBaralho jogador B:"); for (i = 0; i < 52; i++) { imprime_carta(jogador_b_carta[i]); } } void menu_jogador_a() { do { system("cls"); printf("\nCarta na mesa:"); imprime_carta(carta_mesa); imprime_cartas_a(); printf("\n\nJogador A\n"); printf("1-Jogar uma carta\n"); printf("2-Buscar ao baralho\n"); printf("3-Passar jogada\n"); printf("Opção:"); scanf("\n%c",&opcao_jogador_a); passa_jogada=0; switch(opcao_jogador_a) { case '1': //ler carta do jogador printf("Carta:"); scanf("%d",&carta_jogada); //validar se a carta existe nas cartas do jogador validar_carta = 0; for(i = 0;i < 52;i++) { if(jogador_a_carta[i] == carta_jogada) validar_carta = 1; } if(validar_carta) printf("Carta válida"); else printf("Carta inválida"); //validar se a jogada é valida //verficar se é do mesmo naipe validar_naipe = 0; naipe = jogador_a_carta[i] / 14; naipe_mesa = carta_mesa / 14; naipe_jogado = carta_jogada / 14; if(naipe_mesa == naipe_jogado) validar_naipe = 1; if(validar_naipe) printf("\nNaipe válido"); else printf("\nNaipe inválido"); //verificar se é do mesmo numero validar_numero = 0; num_carta = jogador_a_carta[i] % 13; numero_mesa = carta_mesa % 13; numero_jogado = carta_jogada % 13; if(numero_mesa == numero_jogado) validar_numero = 1; if(validar_numero) printf("\nNumero válido"); else printf("\nNumero inválido"); //jogar a carta valida if(validar_carta && (validar_naipe || validar_numero)) { passa_jogada=1; //meter carta na mesa carta_mesa=carta_jogada; //tirar carta do jogador for(i = 0;i < 52;i++) { if(jogador_a_carta[i] == carta_jogada) jogador_a_carta[i]= 0; } } else { printf("\nJogada inválida"); } break; case '2': //verificar se o baralho tem cartas if(baralho_carta[0] != 0) { //ir buscar a ultima carta ao baralho for(i = 0;i < 52;i++) { if(baralho_carta[i] == 0) { carta_temporaria = baralho_carta[i-1]; baralho_carta[i-1]=0; break; } } //inserir carta na mao do jogador for(i = 0;i < 52;i++) { if(jogador_a_carta[i] == 0) { jogador_a_carta[i]=carta_temporaria; break; } } //escreve carta retirada printf("\nCarta do baralho:"); imprime_carta(carta_temporaria); } else printf("Baralho vazio!"); break; } getch(); }while(opcao_jogador_a != '3' && passa_jogada == 0); } void menu_jogador_b() { do { system("cls"); printf("\nCarta na mesa:"); imprime_carta(carta_mesa); imprime_cartas_b(); printf("\n\nJogador B\n"); printf("1-Jogar uma carta\n"); printf("2-Buscar ao baralho\n"); printf("3-Passar jogada\n"); printf("Opção:"); scanf("\n%c",&opcao_jogador_b); passa_jogada=0; switch(opcao_jogador_b) { case '1': //ler carta do jogador printf("Carta:"); scanf("%d",&carta_jogada); //validar se a carta existe nas cartas do jogador validar_carta = 0; for(i = 0;i < 52;i++) { if(jogador_b_carta[i] == carta_jogada) validar_carta = 1; } if(validar_carta) printf("Carta válida"); else printf("Carta inválida"); //validar se a jogada é valida //verficar se é do mesmo naipe validar_naipe = 0; naipe = jogador_b_carta[i] / 14; naipe_mesa = carta_mesa / 14; naipe_jogado = carta_jogada / 14; if(naipe_mesa == naipe_jogado) validar_naipe = 1; if(validar_naipe) printf("\nNaipe válido"); else printf("\nNaipe inválido"); //verificar se é do mesmo numero validar_numero = 0; num_carta = jogador_b_carta[i] % 13; numero_mesa = carta_mesa % 13; numero_jogado = carta_jogada % 13; if(numero_mesa == numero_jogado) validar_numero = 1; if(validar_numero) printf("\nNumero válido"); else printf("\nNumero inválido"); //jogar a carta valida if(validar_carta && (validar_naipe || validar_numero)) { passa_jogada=1; //meter carta na mesa carta_mesa=carta_jogada; //tirar carta do jogador for(i = 0;i < 52;i++) { if(jogador_b_carta[i] == carta_jogada) jogador_b_carta[i]= 0; } } else { printf("\nJogada inválida"); } break; case '2': //verificar se o baralho tem cartas if(baralho_carta[0] != 0) { //ir buscar a ultima carta ao baralho for(i = 0;i < 52;i++) { if(baralho_carta[i] == 0) { carta_temporaria = baralho_carta[i-1]; baralho_carta[i-1]=0; break; } } //inserir carta na mao do jogador for(i = 0;i < 52;i++) { if(jogador_b_carta[i] == 0) { jogador_b_carta[i]=carta_temporaria; break; } } //escreve carta retirada printf("\nCarta do baralho:"); imprime_carta(carta_temporaria); } else printf("Baralho vazio!"); break; } getch(); }while(opcao_jogador_b != '3' && passa_jogada == 0); } void main() { setlocale(LC_ALL, "Portuguese"); int vitoria_jogador_b=1; int vitoria_jogador_a=1; time_t t; for(contador = 0; contador < 52; contador++) { baralho_carta[contador] = 0; jogador_a_carta[contador] = 0; jogador_b_carta[contador] = 0; } srand((unsigned)time(&t)); /*for (i = 0; i < 52; i++) { baralho_carta[i] = rand() % 52 + 1; }*/ //baralhar baralho for(i = 0; i < 52; i++) { baralho_carta[i]=i + 1; } //shuffle array for (i = 0; i < 52; i++) { int temp = baralho_carta[i]; int randomIndex = rand() % 13; baralho_carta[i] = baralho_carta[randomIndex]; baralho_carta[randomIndex] = temp; } for(i = 0;i < 7; i++) { jogador_a_carta[i] = baralho_carta[51-i]; jogador_b_carta[i] = baralho_carta[44-i]; baralho_carta[51-i] = 0; baralho_carta[44-i] = 0; } printf("\n\n"); imprime_cartas_a(); imprime_cartas_b(); printf("\n\n"); imprime_baralho(); //tirar carta do baralho e por na mesa carta_mesa = baralho_carta[37]; baralho_carta[37] = 0; printf("\n\n"); imprime_carta(carta_mesa); printf("\n"); //ciclo de jogo do { menu_jogador_a(); //condição de vitoria vitoria_jogador_a=0; for(i = 0;i < 52;i++) { if(jogador_a_carta[i] != 0) vitoria_jogador_a = 1; } if(vitoria_jogador_a == 1) { menu_jogador_b(); //condição de vitoria vitoria_jogador_b=0; for(i = 0;i < 52;i++) { if(jogador_b_carta[i] != 0) vitoria_jogador_b = 1; } } }while(vitoria_jogador_a && vitoria_jogador_b); if(vitoria_jogador_a == 0) printf("\nVitoria do jogador A!"); else printf("\nVitoria do jogador B!"); }
  11. Bom dia, estou a ter algumas dificuldades num trabalho de programação onde tenho de simular algo como um ATM. A parte onde estou a ter dificuldades neste momento remete para a data. Estou a a usar a time.h para me dar a data, mas não estou com a certeza de que esta esteja a funcionar, uma vez que não consigo dizer se está a guardar a data da criação da conta do individuo X. Deixo em seguida o código que estou a utilizar para gerar a data: void dataA(int data, int nAC){ struct tm *p; time_t seconds; time(&seconds); p = localtime(&seconds); printf("\n\tData de criação da conta: %d/%d/%d\n", p->tm_mday, p->tm_mon + 1, p->tm_year + 1900); } nAC corresponde à variável que controla os individuos.
  12. Boas pessoal. Sou novo no fórum e na programação também. Tenho um projeto de um banco de sangue para fazer em linguagem C mas estou muito perdido. Será que alguém me consegue ajudar por favor
  13. Bom dia a todos, Tenho o seguinte código que está a funcionar, mas por algum mistério só me aceita 3 cores, quando o laço supostamente deveria aceitar 5 entradas na função insiraCodigo(). Toda a ajuda é bem vinda e agradecida uma vez que ainda não percebi porquê e deve ser coisa simples. Obrigado. #include <stdio.h> #include <stdlib.h> #include <time.h> #include <string.h> #define QTD 5 // Número de strings a ler #define MAX 10 // Número de caracteres na string #define DIM 7 // Número de cores no vetor colors char *cores[QTD][MAX]; // Vetor cores aleatórias char *colors[] = {"green", "red", "blue", "yellow", "brown"}; //Cores permitidas char *aux[QTD][MAX]; // Vetor cores escolhidas pelo jogador void clear(){ #if defined(__linux__) || defined(__unix__) || defined(__APPLE__) system("clear"); #endif #if defined(_WIN32) || defined(_WIN64) system("cls"); #endif } void exibeTabuleiro() { int i; //Exibir mascara for (int i = 0; i < QTD; ++i) { printf(" *"); } } /* Função para criar código aleatório de cores*/ void crearCodigoCores(char cores[QTD][MAX]) { int i, n, randColor; srand(time(NULL)); for(i=0; i<5; i++) { randColor = 1 + rand() % 5; //creates a number switch(randColor) //converts number created to a string { case 1: strcpy(cores[i], "red"); break; case 2: strcpy(cores[i], "yellow"); break; case 3: strcpy(cores[i], "green"); break; case 4: strcpy(cores[i], "blue"); break; case 5: strcpy(cores[i], "brown"); break; } } printf("\nO código:\n"); for (int i = 0; i < QTD; i++) printf(" %s", cores[i]); } //Função para comparar cores inseridas com o array aleatório int identical(int i) { for (int j = 0 ; j < QTD ; j++) { if(*aux[i] == *cores[i]) { return 1; } } return 0; } char comum(char *aux[], int len1, char *cores[],int len2) { int i,j,k,white=0,black=0; for(i = 0; i < QTD ;i++) { if(aux[i] == cores[i]) { black++; continue; } if(identical(i)==1) { white++; } } printf("\n\nTem %d cores certas no sitio errado",white); printf("\nTem %d cores certas no sítio certo",black); } /* Função para verificar se a string existe no vetor cores permitidas "colors" */ int verificaCores(char *s) { // Elimina o '\n' que do fgets if (s[strlen(s) - 1] == '\n') s[strlen(s) - 1] = '\0'; //Compara input com cores permitidas for (int i = 0; i < DIM; i++) if (strcasecmp(s, colors[i]) == 0){ printf("COMPARADO!\n"); //Se houver retorna 1 return 1;} return 0; } void insiraCodigo(){ int i; char *input[MAX]; printf("\nInsira o seu código:\n"); /* scanf cores escolhidas e envia para função verificaCores. Se a função retornar 1, guarda no vetor cores */ for(i = 0; i < 5 ; i++) { fgets(input, MAX, stdin); if (verificaCores(input)) { printf("Gotcha!\n"); strcpy(aux[i], input); i++; } else printf("Opcao inválida. Tente de novo!\n"); } //Mostrar array de cores introduzidas printf("O seu código:\n"); for (int i = 0; i < QTD; i++) printf(" %s", aux[i]); } int jogo(){ int i; char *input[MAX]; char *mensagem; mensagem="Bem vindo ao jogo"; int tentativas=0,max_tentativas=5,tentativas_restantes=0; tentativas_restantes=max_tentativas - tentativas; clear(); printf("%s:\n", mensagem); printf("Código secreto:\n"); exibeTabuleiro(); crearCodigoCores(*cores); insiraCodigo(input); comum(*aux,QTD,*cores,QTD); } int main(void){ jogo(); }
  14. Boas tardes a todos, Estou a iniciar-me na linguagem C e estou ás voltas com um problema que não consigo resolver. Quero comparar o input de um utilizador, com um array de strings para verificar se a string é válida ou não. Consigo armazenar as strings , mas o strcmp funciona nalgumas strings e não noutras. Qualquer ajuda é bem vinda! Obrigado O código é o seguinte: #include <locale.h> #include <stdio.h> #include <stdlib.h> #include <string.h> char *colors[] = { "green", "red", "blue", "yellow", "brown", "white", "black" }; int n = 5, i, j, l; char cores[4][7]; char* copy; char input[5]; int num,result; void copiar(){ strcpy(copy,input); } int main(){ printf("Add colors\n"); for (int i = 0; i < n; i++) { scanf("%s", input); strcpy(cores[i],input); while(j<n) { if(strcmp(input,colors[j])==0) printf("Gotcha!\n"); // comparing strings str1 and str2 result = strcmp(input,colors[j]); printf("strcmp(str1, str2) = %d\n", result); j++; break; } input[0]='\0'; } for(l=0;l<5;l++) printf("%s\n", cores[l]); return 0; }
  15. Ola, eu tenho vários trabalhos de programação para fazer e nem sempre posso andar com o meu pc atras, ent alguém poderia me indicar uma app de programação que de para escrever o código, em linguagem c e compilar no telemóvel, ficaria agradecida. Obrigada
  16. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <strings.h> #include <ctype.h> char recebendo_String(char *s){ int x = 0; int y = 0; char caracter ; char caracter_nao_acentuado[]="aaaaeeeeiiiioooouuuucAAAAEEEEIIIIOOOOUUUUC"; char caracter_acentuado[]="áàãâéèẽêíìĩîóòõôúùũûçÁÀÃÂÉÈẼÊÍÌĨÎÓÒÕÔÚÙŨÛÇ"; caracter = toupper(fgetc(stdin)); for(x = 0 ; x < (100 - 1) ; x++){ if(((caracter == '\n') && (x == 0)) || ((caracter ==' ') && (x ==0))){ x = x -1; continue; } if(caracter == '\n'){ break; } for(y = 0 ; y < 43 ; y++){ if(caracter_acentuado[y] == caracter) caracter = caracter_nao_acentuado[y]; } s[x] = caracter; } s[x] = 0; return (caracter); } int main() { char escreva; printf("Hello world!\n"); printf("digite um caracter :"); recebendo_String(&escreva); return 0; } Esse codigo deveria retornar ao refente sem acento mas da o erro : *** stack smashing detected ***: <unknown> terminated Abortado (imagem do núcleo gravada)
  17. Boas Pessoal! Entrei em Engenharia Informática e estou neste momento a iniciar em C, gostaria de obter alguns conselhos vossos, visto que nunca dei programação na vida e se puderem enviar algum website que tenha exercícios de programação em C para iniciantes. Obrigado!
  18. Olá, tenho dois enunciados para resolver mas não sei como os fazer. Eles são semelhantes entre si, aqui vão eles: 1. Dada uma determinada hora do dia, em horas, minutos e segundos, indicar quantos segundos decorreram desde o início do dia (sem efetuar validações). 2. Dado o número de minutos decorridos desde o início do dia, calcular as horas e minutos correntes (sem efetuar validações). Se alguém me conseguisse ajudar ate ao final da noite de hoje agradecia.
  19. Boa tarde a todos, estive a tentar fazer um makefile para poder compilar e carregar SW para um microcontrolador STM8. Apesar de estar a funcionar compila sempre todos os arquivos e não apenas os alterados, gostaria de perguntar se podiam ajudar a ter o comportamento esperado. Aqui está o conteúdo do makefile: PROJ_NAME=workingproject MICRO=STM8L15xC8 PROGRAMMER=STVP_CmdLine # Compiler CC=cxstm8 # Flags for compiler CFLAGS=+mods0 -pp -dSTM8L15X_HD -iinc -isrc -i"C:\Program Files (x86)\COSMIC\FSE_Compilers\Hstm8" -clRelease\ -coRelease\ # .c files C_SOURCE=$(wildcard *.c) C_SOURCE+=$(wildcard src/*.c) # .h files H_SOURCE=$(wildcard *.h) H_SOURCE+=$(wildcard inc/*.h) # Object files objects=$(C_SOURCE:c=o) %.o : %.c $(CC) $(CFLAGS) $? #target : prerequisites #<TAB>recipe #all : $(PROJ_NAME).sm8 $(PROJ_NAME).sm8 : $(objects) clnk -l"C:\Program Files (x86)\COSMIC\FSE_Compilers\Lib" -o Release\$(PROJ_NAME).sm8 Release\eso.lkf chex -o Release\$(PROJ_NAME).s19 Release\$(PROJ_NAME).sm8 .PHONY : load load: STVP_CmdLine -BoardName=ST-LINK -Port=USB -ProgMode=SWIM -Device=$(MICRO) -no_log -no_loop -no_warn_protect -verif -FileProg=Release\$(PROJ_NAME).s19 desde já obrigado, Mauro.
  20. #include <iostream> #include <string.h> int main (){ int i; char telefone[20]; char ch; i=0 while((ch=getchar ())) 1='\n') ( if (ch=='-')telefone[1]='-'; else if (ch >=48 && ch <=57) telefone [i]=ch; else if (ch >=65 && ch <=67) telefone [i]='2'; else if (ch >=68 && ch <=70) telefone [i]='3'; else if (ch >=71 && ch <=73) telefone [i]='4'; else if (ch >=74 && ch <=76) telefone [i]='5'; else if (ch >=77 && ch <=79) telefone [i]='6'; else if (ch >=80 && ch <=83) telefone [i]='7'; else if (ch >=84 && ch <=86) telefone [i]='8'; else if (ch >=87 && ch <=90) telefone [i]='9'; i++; } telefone[i]='\0'; printf("%s", telefone); return(0); }
  21. Tenho um programa para a faculdade e está a funcionar perfeitamente, o meu único problema e não sei por onde começar é como guardar as informações armazenadas ao abrir novamente o programa, é através de um ciclo em que puxo o ficheiro?
  22. Eu tenho de fazer estruturas para armazenar jogadores e jogos a minh duvida é como posso fazer para eliminar os jogadores presentes no ficheiro de texto alem do mais preciso ordenar a tabela de jogadores e editar a parte do peso e numero de jogos Será que alguem pode ajudar? O meu código é o seguinte: #include <stdio.h> #include <stdlib.h> #include <string.h> FILE * dados_jogador; FILE * dados_jogo; FILE * dados_gerais; int n_jogos = 0; int n_jogadores = 0; struct dados_jogador { int numero; char nome[12]; int dia; int mes; int ano; float altura; float peso; int n_jogos; }; typedef struct dados_jogador jogador; void ler_jogador(jogador listaJogadores[]){ printf("numero de jogadores: %d\n", n_jogadores); if(n_jogadores == 0){ dados_jogador = fopen("dados_jogador.txt", "a"); fprintf(dados_jogador, "Num Nome Data de nascimento Altura Peso Numero de Jogos\n"); fclose(dados_jogador); } if(n_jogadores >= 0 && n_jogadores <= 12){ printf("\nDADOS DO JOGADOR:\n"); listaJogadores[n_jogadores].numero = n_jogadores; printf("nome:"); scanf("%s", listaJogadores[n_jogadores].nome); printf("data de nascimento (do tipo dd/mm/aaaa):"); scanf("%d/%d/%d", &listaJogadores[n_jogadores].dia, &listaJogadores[n_jogadores].mes, &listaJogadores[n_jogadores].ano); if ((listaJogadores[n_jogadores].dia >= 01 && listaJogadores[n_jogadores].dia <= 30) && (listaJogadores[n_jogadores].mes == 04 || listaJogadores[n_jogadores].mes == 06 || listaJogadores[n_jogadores].mes == 9 || listaJogadores[n_jogadores].mes == 11)){ } if (listaJogadores[n_jogadores].dia >= 01 && listaJogadores[n_jogadores].dia <= 31 && (listaJogadores[n_jogadores].mes == 01 || listaJogadores[n_jogadores].mes == 03 || listaJogadores[n_jogadores].mes == 05 || listaJogadores[n_jogadores].mes == 07 || listaJogadores[n_jogadores].mes == 8|| listaJogadores[n_jogadores].mes == 10 || listaJogadores[n_jogadores].mes == 12) && listaJogadores[n_jogadores].ano >= 1583){ } if (listaJogadores[n_jogadores].dia == 29 && listaJogadores[n_jogadores].dia == 2 && (listaJogadores[n_jogadores].ano % 400 == 0 || listaJogadores[n_jogadores].ano % 4 == 0 && listaJogadores[n_jogadores].ano % 100 != 0)){ } if ((listaJogadores[n_jogadores].dia >= 01 && listaJogadores[n_jogadores].dia <= 28) && (listaJogadores[n_jogadores].mes == 2)){ } if (listaJogadores[n_jogadores].dia <= 00 || listaJogadores[n_jogadores].dia > 31){ printf("dia invalido\n"); ler_jogador(listaJogadores); } if (listaJogadores[n_jogadores].mes <= 00 || listaJogadores[n_jogadores].mes > 12){ printf("mes invalido\n"); ler_jogador(listaJogadores); } if (listaJogadores[n_jogadores].ano < 1583){ printf("ano invalido\n"); ler_jogador(listaJogadores); } printf("altura:"); scanf("%f", &listaJogadores[n_jogadores].altura); if(listaJogadores[n_jogadores].altura <= 0){ ler_jogador(listaJogadores); } printf("peso:"); scanf("%f", &listaJogadores[n_jogadores].peso); if(listaJogadores[n_jogadores].peso <= 0){ ler_jogador(listaJogadores); } printf("numero de jogos:"); scanf("%d", &listaJogadores[n_jogadores].n_jogos); if(listaJogadores[n_jogadores].n_jogos < 0){ ler_jogador(listaJogadores); } dados_jogador = fopen("dados_jogador.txt", "a"); fprintf(dados_jogador, "%d \t\t%s \t\t %02d/%02d/%d\t\t %.2f\t\t %.2f\t\t %d\n", listaJogadores[n_jogadores].numero, listaJogadores[n_jogadores].nome, listaJogadores[n_jogadores].dia, listaJogadores[n_jogadores].mes, listaJogadores[n_jogadores].ano, listaJogadores[n_jogadores].altura, listaJogadores[n_jogadores].peso, listaJogadores[n_jogadores].n_jogos); fclose(dados_jogador); dados_gerais = fopen("dados_gerais.dat", "ab"); fwrite (&listaJogadores, sizeof(struct dados_jogador), 1 , dados_gerais); fclose(dados_gerais); n_jogadores++; } if(n_jogadores > 12){ printf("maximo de jogadores:12\n"); } } void consultar_jogador(jogador listaJogadores[]){ dados_jogador=fopen("dados_jogador.txt","r"); //para abrir os ficheiros para ler while(fgets(listaJogadores[n_jogadores].nome, 200, dados_jogador)!= NULL){ printf("%s", listaJogadores[n_jogadores].nome); } fclose(dados_jogador); } void eliminar_jogador(jogador listaJogadores[]) { int numero; printf("Jogadores existentes: \n"); consultar_jogador(listaJogadores); printf("Qual numero do jogador que deseja eliminar:"); scanf("%d", &numero); for(int i=numero;i<n_jogadores;i++){ listaJogadores[numero] = listaJogadores[numero+1]; dados_jogador = fopen("dados_jogador.txt", "w+"); fprintf(dados_jogador, "Num Nome Data de nascimento Altura Peso Numero de Jogos\n%d \t\t%s \t\t %02d/%02d/%d\t\t %.2f\t\t %.2f\t\t %d\n", listaJogadores[n_jogadores].numero, listaJogadores[n_jogadores].nome, listaJogadores[n_jogadores].dia, listaJogadores[n_jogadores].mes, listaJogadores[n_jogadores].ano, listaJogadores[n_jogadores].altura, listaJogadores[n_jogadores].peso, listaJogadores[n_jogadores].n_jogos); fclose(dados_jogador); } n_jogadores--; } void editar_jogador(jogador listaJogadores[]){ int num; printf("Jogadores existentes: \n"); consultar_jogador(listaJogadores); printf("Qual numero do jogador que deseja editar:"); scanf("%d", &num); printf("Peso:"); scanf("%f", &listaJogadores[num].peso); printf("Numero de jogos: "); scanf("%d", &listaJogadores[num].n_jogos); } void procurar_jogador(jogador listaJogadores[]){ char numero; printf("Numero do jogador a procurar: "); scanf("%d", numero); printf("Nome: %s\nData de nascimento: %02d/%02d/%d\nAltura: %.2f\nPeso:%.2f\nNumero de jogos:%d", listaJogadores[numero].nome, listaJogadores[numero].dia, listaJogadores[numero].mes, listaJogadores[numero].ano, listaJogadores[numero].altura, listaJogadores[numero].peso, listaJogadores[numero].n_jogos); } struct dados_jogo { int dia; int mes; int ano; char local[50]; char adversario[50]; char resultado[50]; }; typedef struct dados_jogo jogo; void ler_jogo(jogo listaJogos[]) { printf("numero de jogos: %d\n",n_jogos); if(n_jogos == 0){ dados_jogo = fopen("dados_jogo.txt", "a"); fprintf(dados_jogo, "Data Local Adversario Resultado "); fclose(dados_jogo); } if(n_jogos >= 0 && n_jogos < 100){ printf("\nDADOS DO JOGO:\n"); printf("data (do tipo dd/mm/aaaa):"); scanf("%d/%d/%d",&listaJogos[n_jogos].dia, &listaJogos[n_jogos].mes, &listaJogos[n_jogos].ano); if ((listaJogos[n_jogos].dia >= 01 && listaJogos[n_jogos].dia <= 30) && (listaJogos[n_jogos].mes == 04 || listaJogos[n_jogos].mes == 06 || listaJogos[n_jogos].mes == 9 || listaJogos[n_jogos].mes == 11)){ } if (listaJogos[n_jogos].dia >= 01 && listaJogos[n_jogos].dia <= 31 && (listaJogos[n_jogos].mes == 01 || listaJogos[n_jogos].mes == 03 || listaJogos[n_jogos].mes == 05 || listaJogos[n_jogos].mes == 07 || listaJogos[n_jogos].mes == 8|| listaJogos[n_jogos].mes == 10 || listaJogos[n_jogos].mes == 12) && listaJogos[n_jogos].ano >= 1583){ } if (listaJogos[n_jogos].dia == 29 && listaJogos[n_jogos].dia == 2 && (listaJogos[n_jogos].ano % 400 == 0 || listaJogos[n_jogos].ano % 4 == 0 && listaJogos[n_jogos].ano % 100 != 0)){ } if ((listaJogos[n_jogos].dia >= 01 && listaJogos[n_jogos].dia <= 28) && (listaJogos[n_jogos].mes == 2)){ } if (listaJogos[n_jogos].dia <= 00 || listaJogos[n_jogos].dia > 31){ printf("dia invalido\n"); ler_jogo(listaJogos); } if (listaJogos[n_jogos].mes <= 00 || listaJogos[n_jogos].mes > 12){ printf("mes invalido\n"); ler_jogo(listaJogos); } if (listaJogos[n_jogos].ano < 1583){ printf("ano invalido\n"); ler_jogo(listaJogos); } printf("local:"); scanf("%s", listaJogos[n_jogos].local); printf("adversario:"); scanf("%s", listaJogos[n_jogos].adversario); printf("resultado:"); scanf("%s", listaJogos[n_jogos].resultado); dados_jogo = fopen("dados_jogo.txt", "a"); fprintf(dados_jogo, "\n%02d/%02d/%d %s %s %s", listaJogos[n_jogos].dia, listaJogos[n_jogos].mes, listaJogos[n_jogos].ano, listaJogos[n_jogos].local, listaJogos[n_jogos].adversario, listaJogos[n_jogos].resultado); fclose(dados_jogo); dados_gerais = fopen("dados_gerais.dat", "ab"); fwrite (&listaJogos, sizeof(struct dados_jogo), 1 , dados_gerais); fclose(dados_gerais); n_jogos++; } if(n_jogos >= 100){ printf("limite excedido de jogos:100\n"); } } void ordenar_Nome(jogador listaJogadores[]){ } void contabilizar(jogo listaJogos[]){ } int main(int argc, char *argv[]) { jogador listaJogadores[12]; jogo listaJogos[100]; char opcao; dados_jogador=fopen("dados_jogador.txt","r"); //para abrir os ficheiros para ler while(fgets(listaJogadores[n_jogadores].nome, 200, dados_jogador)!= NULL){ n_jogadores++; } if(n_jogadores != 0){ n_jogadores--; } fclose(dados_jogador); dados_jogo=fopen("dados_jogo.txt","r"); //para abrir os ficheiros para ler while(fgets(listaJogos[n_jogos].local, 200, dados_jogo)!= NULL){ n_jogos++; } if(n_jogadores != 0){ n_jogos--; } fclose(dados_jogo); do{ printf(" MENU INICIAL:\n"); printf("Escolha uma das opcoes:\n"); printf("1- Inserir jogador \n"); printf("2- Editar jogador \n"); printf("3- Procurar jogador \n"); printf("4- Eliminar jogador \n"); printf("5- Inserir jogo \n"); printf("6- Contabilizar \n"); printf("7- Sair do programa \n"); fflush(stdin); printf("opcao:"); scanf("%c", &opcao); switch(opcao){ case '1': ler_jogador(listaJogadores); break; //escolha das opcoes e suas funcoes case '2': editar_jogador(listaJogadores); break; case '3': procurar_jogador(listaJogadores); break; case '4': eliminar_jogador(listaJogadores); break; case '5': ler_jogo(listaJogos); break; case '6': contabilizar(listaJogos); break; case '7': return 0; default: printf("Opcao invalida\n");break; } } while (opcao != '7'); return 0; } O conteúdo do ficheiro de texto dos jogadores é : Num Nome Data de nascimento Altura Peso Numero de Jogos 0 Peter 12/07/1970 1.70 70.00 2 1 Luis 21/08/1980 1.80 80.00 4 2 Kyle 13/08/1980 1.70 78.00 2 3 John 03/03/1970 1.79 80.00 2 4 Hugo 02/09/1980 1.70 68.00 4 Desde já agradeço a vossa ajuda
  23. #include <stdio.h> #include <stdlib.h> #include <time.h> struct frame { char b1,b2; int ball1,ball2,score; }; int ball(int pins) { int jogada; printf("Entre com a pontuação da jogada: "); scanf("%d", &jogada); return jogada; } void get_frame(struct frame *f) { f->ball1 = ball(10); if(f->ball1==10) { f->ball2 = 0; f->b1 = ' '; f->b2 = 'X'; f->score = 10; return; } f->ball2 = ball(10 - f->ball1); f->score = f->ball1 + f->ball2; f->b1 = f->ball1 ? '0' + f->ball1 : '-'; f->b2 = f->ball2 ? '0' + f->ball2 : '-'; if( f->score==10 ) f->b2 = '/'; } int main() { struct frame game[12]; int x,score; srand((unsigned)time(NULL)); score = 0; /* Simulate 12 potential frames */ for(x=0;x<12;x++) get_frame(&game[x]); /* properly calculate the scores */ for(x=0;x<10;x++) { if( game[x].b2 == 'X' ) { if( game[x+1].b2 == 'X' ) score += 10 + game[x+1].ball1 + game[x+2].ball1; else score += 10 + game[x+1].score; } else if( game[x].b2 == '/' ) score += 10 + game[x+1].ball1; else score += game[x].score; game[x].score = score; } /* Display first row, frame numbers */ for(x=0;x<10;x++) printf(" %2d ",x+1); putchar('\n'); /* Second row, balls rolled */ for(x=0;x<9;x++) { if( game[x].b2 == 'X') printf("| |X"); else printf("| %c|%c",game[x].b1,game[x].b2); } /* Special output for 10th frame */ if( game[x].b2 == 'X') { if( game[x+1].b2 == 'X') { if( game[x+2].b2 == 'X') printf("| X|X|X|\n"); else printf("| X|X|%c|\n",game[x+2].b1); } else printf("| X|%c|%c|\n",game[x+1].b1,game[x+1].b2); } else if( game[x].b2 == '/') { if( game[x+1].b2 == 'X') printf("| %c|/|X|\n",game[x].b1); else printf("| %c|/|%c|\n",game[x].b1,game[x+1].b1); } else printf("| %c|%c| |\n",game[x].b1,game[x].b2); /* Third row, scores */ for(x=0;x<9;x++) { printf("| %3d",game[x].score); } printf("| %3d |\n",game[x].score); return(0); }
  24. Pergunta: "Escreva um programa que ordene alfabeticamente, de forma crescente, as letras existente numa “string” previamente pedida ao utilizador. Esta ordenação deverá ser efetuada num vetor auxiliar que será inicializado com os endereços de memória de cada uma das letras existente na “string”. A construção deste vetor, o qual é constituído por endereços de memória, não poderá alterar a “string” original." Por exemplo: a palavra "ana", no output ficaria "aan" Já tentei mas não percebo porque está a dar erro #include <stdio.h> #include <string.h> void ordenarString(char *string, int tamanho); main() { char string[100]; int tamanho; printf("Introduza uma palavra\n"); gets(string); tamanho=strlen(string); ordenarString(string,tamanho); scanf("%d",&string); } void ordenarString(char *string, int tamanho){ int i, j, *aux[tamanho]; for(i=0;i<10;i++){ for(j=i+1;j<10;j++){ if(strcmp(string[j], string[i])==-1){ strcpy(aux, string[i]); strcpy(string[i], string[j]); strcpy(string[j], aux); } } } } Obrigada desde já!
  25. Boa Tarde, Eu tenho de criar um projeto com estruturas de equipas em que cada equipa vai ter um torneio com outra aleatoria e tenho de criar tabelas com as equipas e os resultados eliminando assim equipa a equipa até chegar à vencedora. Eu para já só criei as estruturas e a inserção de jogadores e tudo mais. Como acham que posso criar tabelas das equipas aleatorias e os seus respetivos torneios? O meu codigo é o seguinte: #include <stdio.h> #include <stdlib.h> #include <string.h> FILE * dados_jogador; FILE * dados_jogo; FILE * dados_gerais; int n_jogos = 0; int i; int n_jogadores = 0; struct dados_jogador { char nome[12]; int dia; int mes; int ano; float altura; float peso; int n_jogos; }; typedef struct dados_jogador jogador; jogador tabela[12]; jogador ler_jogador() { int i; int num; jogador jogador; printf("Qual o numero de jogadores que deseja adicionar:"); scanf("%d", &num); if(num > 0 && num <= 12){ for(int i = 0; i < num; i++){ printf("\nDADOS DO JOGADOR:\n"); printf("nome:"); scanf("%s", jogador.nome); printf("data de nascimento:"); scanf("%d/%d/%d", &jogador.dia, &jogador.mes, &jogador.ano); if ((jogador.dia >= 01 && jogador.dia <= 30) && (jogador.mes == 04 || jogador.mes == 06 || jogador.mes == 9 || jogador.mes == 11)){ } if (jogador.dia >= 01 && jogador.dia <= 31 && (jogador.mes == 01 || jogador.mes == 03 || jogador.mes == 05 || jogador.mes == 07 || jogador.mes == 8|| jogador.mes == 10 || jogador.mes == 12) && jogador.ano >= 1583){ } if (jogador.dia == 29 && jogador.dia == 2 && (jogador.ano % 400 == 0 || jogador.ano % 4 == 0 && jogador.ano % 100 != 0)){ } if ((jogador.dia >= 01 && jogador.dia <= 28) && (jogador.mes == 2)){ } if (jogador.dia <= 00 || jogador.dia > 31){ printf("dia invalido\n"); ler_jogador(); } if (jogador.mes <= 00 || jogador.mes > 12){ printf("mes invalido\n"); ler_jogador(); } if (jogador.ano < 1583){ printf("ano invalido\n"); ler_jogador(); } printf("altura:"); scanf("%f", &jogador.altura); if(jogador.altura <= 0){ ler_jogador(); } printf("peso:"); scanf("%f", &jogador.peso); if(jogador.peso <= 0){ ler_jogador(); } printf("numero de jogos:"); scanf("%d", &jogador.n_jogos); if(jogador.n_jogos < 0){ ler_jogador(); } dados_jogador = fopen("dados_jogador.txt", "a"); fprintf(dados_jogador, "\n%s \t\t%02d/%02d/%d\t\t%.2f\t\t%.2f\t\t%d", jogador.nome, jogador.dia, jogador.mes, jogador.ano, jogador.altura, jogador.peso, jogador.n_jogos); fclose(dados_jogador); dados_gerais = fopen("dados_gerais.dat", "ab"); fwrite (&jogador.nome, sizeof(struct dados_jogador), 1 , dados_gerais); fclose(dados_gerais); n_jogadores++; }} printf("maximo de jogadores:12\n"); } jogador consultar_jogador(){ jogador jogador; int i; printf("numero jogadores: %d\n",n_jogadores); printf("Jogadores existentes:\n"); for(i=0; i<n_jogadores; i++){ printf("%s\n", jogador.nome); } } jogador eliminar_jogador() { jogador jogador; int i; printf("Jogadores existentes: \n"); dados_jogador = fopen("dados_jogador.txt", "r"); for(int i = 0; i< n_jogadores; i++){ fscanf(dados_jogador, "%s", jogador.nome[n_jogadores]); fclose(dados_jogador); } } void procurar_jogador(){ jogador jogador; char nome_jogador; printf("Qual o nome do jogador que procura:"); scanf("%s", nome_jogador); for(int i = 0; i < n_jogadores; i++){ if((nome_jogador,jogador.nome) == 0){ printf("Nome: %s\nData de nascimento: %02d/%02d/%d\nAltura: %.2f\nPeso:%.2f\nNumero de jogos:%d", tabela[i].nome, tabela[i].dia, tabela[i].mes, tabela[i].ano, tabela[i].altura, tabela[i].peso, tabela[i].n_jogos); }} } struct dados_jogo { int dia; int mes; int ano; char local[50]; char adversario[50]; char resultado[50]; }; typedef struct dados_jogo jogo; jogo ler_jogo() { jogo jogo; printf("\nDADOS DO JOGO:\n"); printf("data:"); scanf("%d/%d/%d",&jogo.dia, &jogo.mes, &jogo.ano); if ((jogo.dia >= 01 && jogo.dia <= 30) && (jogo.mes == 04 || jogo.mes == 06 || jogo.mes == 9 || jogo.mes == 11)){ } if (jogo.dia >= 01 && jogo.dia <= 31 && (jogo.mes == 01 || jogo.mes == 03 || jogo.mes == 05 || jogo.mes == 07 || jogo.mes == 8|| jogo.mes == 10 || jogo.mes == 12) && jogo.ano >= 1583){ } if (jogo.dia == 29 && jogo.dia == 2 && (jogo.ano % 400 == 0 || jogo.ano % 4 == 0 && jogo.ano % 100 != 0)){ } if ((jogo.dia >= 01 && jogo.dia <= 28) && (jogo.mes == 2)){ } if (jogo.dia <= 00 || jogo.dia > 31){ printf("dia invalido\n"); ler_jogo(); } if (jogo.mes <= 00 || jogo.mes > 12){ printf("mes invalido\n"); ler_jogo(); } if (jogo.ano < 1583){ printf("ano invalido\n"); ler_jogo(); } printf("local:"); scanf("%s", jogo.local); printf("adversario:"); scanf("%s", jogo.adversario); printf("resultado:"); scanf("%s", jogo.resultado); dados_jogo = fopen("dados_jogo.txt", "a"); fprintf(dados_jogo, "\n%02d/%02d/%d %s %s %s", jogo.dia, jogo.mes, jogo.ano, jogo.local, jogo.adversario, jogo.resultado); fclose(dados_jogo); } int main(int argc, char *argv[]) { jogador jogador[12]; jogo jogo[100]; char opcao; dados_jogador=fopen("dados_jogador.txt","r"); //para abrir os ficheiros para ler i=0; while(fscanf(dados_jogador, "%s", jogador[i].nome)!= EOF){ i++; n_jogadores++; } fclose(dados_jogador); do{ printf(" MENU INICIAL:\n"); printf("Escolha uma das opcoes:\n"); printf("1- Inserir jogador \n"); printf("2- Editar jogador \n"); printf("3- Procurar jogador \n"); printf("4- Eliminar jogador \n"); printf("5- Inserir jogo \n"); printf("6- Contabilizar \n"); printf("7- Sair do programa \n"); fflush(stdin); printf("opcao:"); scanf("%c", &opcao); switch(opcao){ case '1': ler_jogador(); break; //escolha das opcoes e suas funcoes case '2': consultar_jogador(); break; case '3': procurar_jogador(); break; case '4': eliminar_jogador(); break; case '5': ler_jogo(); break; case '6': break; case '7': return 0; default: printf("Opcao invalida\n");break; } } while (opcao != '7'); return 0; }
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.