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

    Jogo poker

    Boa tarde, Estou com uma ideia para desenvolver um jogo de Poker fechado, onde o objetivo é fazer o melhor jogo. Neste jogo, uma mão é formada por 5 cartas, a mão de jogo pode ser formada por 1, 2, 3, 4 ou as 5 cartas, que posteriormente as mesmas combinadas poderão ditar a mão vencedora. O baralho a ser usado é de 52 cartas. O número de jogadores máximos são 6, estando estes na mesma mesa, entregando-se uma carta para cada jogador, sendo necessárias 5 voltas de distribuição na mesa até que todos os jogadores tenham as suas 5 cartas, porém antes de começar a distribuição das cartas, todos os jogadores devem pagar uma aposta inicial (min. 2 fichas) para receber cartas. Depois da aposta inicial ser paga e as cartas serem distribuídas, começam as apostas de jogo, em que o jogador pode escolher ficar em jogo ou sair. Para permanecer em jogo, terá de pagar o dobro do valor colocado inicialmente (2 fichas) e o mesmo terá também hipótese de realizar uma troca de cartas que tem na mão, ou seja, escolher as cartas que não lhe agradam ou que não ajudam na sua mão, jogar fora e pedir novas cartas. Quando o jogador optar por sair o mesmo perde o valor da sua aposta inicial. A mesa recebe 5 cartas também, em que uma delas é revelada no momento das apostas iniciais. A mesa só irá a jogo com uma jogada mínima de: A-K, caso contrário os restantes dos jogadores ganham todos, independentemente da mão apresentada. Caso a mesa vá a jogo, a mão vencedora será sempre a maior mão, de acordo com as combinações possíveis no jogo de Poker, todos os jogadores jogam contra a casa/mesa.. Para este problema gostaria de usar um sistema de ponteiros, não sei como começar.
  2. Tombes010

    Jogo da sueca em C

    Foi-me pedido para desenvolver um programa em C que crie um baralho de cartas e os jogadores para um jogo da sueca, os escreva e eventualmente faça o jogo decorrer Este foi o enunciado que me deram: estrutura s_carta e o tipo t_carta - face (1 carater) de entre "A7KQJ65432" - naipe (1 carater) de entre "ECOP" - pontos (1 inteiro) de entre 11 10 4 3 2 0 - ordem (1 inteiro) entre 0 e 39 estrutura s_jogador e o tipo t_jogador - nome (vetor de 10 carateres) - vcartas [mão] (vetor de 10 t_carta) - ncartas [qtd de cartas q tem na mão] (1 inteiro) Na main vou precisar de declarar: - baralho (vetor de 40 t_carta) - vjogadores (vetor de 4 t_jogador) Funções necessárias criarBaralho - ver exame de 5 de Setembro de 2022, ex 5. - ver faces_e_naipes.c do moodle e adaptar escCarta - recebe UMA t_carta e escreve a carta no ecran (ex: AP - Ás de Paus) (a função é um único printf) - Nota no final, para por com cores e com símbolos é esta a única função que deve ser alterada escCartas - recebe um vetor de cartas e a sua qtd de elementos e escreve as cartas do vetor no ecran. - Usa a função escCarta escBaralho - recebe um vetor de 40 cartas e escreve as cartas do vetor no ecran (10 em cada linha). criarJogadores - recebe o vetor com 4 jogadores e preenche-o com o respetivo nome (hardcoded usando strcpy) e coloca as respetivas ncartas a 0. escJogador - recebe UM jogador - Escreve o nome do jog e o vetor de cartas q tem na mao escJogadores - recebe o vetor de (4) jogadores (e o índice do 1º jogador a ser escrito - para a parte opcional ) Funções para baralhar e ordenar vetores de t_cartas Ir ver o programa e5_ordenacao_de_estruturas.c E adaptar a ordenação/desordenação de uma turma por 'idade' crescente para ordenar/desordenar um baralho por 'ordem' crescente Funções para partir o baralho - rodar o vetor de t_carta uma casa - rodar o vetor de t_carta n casas (usa a anterior) (está feito na aula sobre vetores para vetores de inteiros) Função para dar - recebe o vetor baralho (já baralhado e partido) e o vetor de jogadores. - recebe tb o índice do jogador que dá. - Altera tb o ncartas de cada jogador para 10. - devolve uma t_carta (o trunfo) (pode ser ou não por referência) Na main vou: - declarar baralho (vetor de 40 t_carta) - declarar vjogadores (vetor de 4 t_jogador) - criar o baralho - criar os jogadores - escrever o baralho (originalmente ordenado) - escolher à sorte o índice do jogador que baralha - escrever o nome do jogador que baralha - baralhar as cartas - escrever baralho baralhado - determinar índice do jogador que parte - escrever o nome do jogador que parte - tirar n à sorte entre 0 e 39 - partir o baralho por esse nº - escrever baralho partido - determinar índice do jogador que dá - escrever o nome do jogador que dá - dar as cartas - escrever os jogadores (cada um com as resp cartas desordenadas) - escrever o trunfo - ordenar as cartas de cada jogador - escrever os jogadores (cada um com as resp cartas ordenadas) Consegui fazer até escCartas, mas fiquei preso no escrever o baralho Este é o meu código até agora: #include<stdio.h> #include<stdlib.h> #include<time.h> #include<string.h> ///Carta typedef struct s_carta { char naipe; char face; int ordem; int pontos; } t_carta; ///Jogador typedef struct s_jogador { int nome[10]; //Nome do jogador int vcartas[10]; //Vetor de 10 cartas que corresponde ao seu baralho int ncartas; //Número de cartas que o jogador tem na mão }t_jogador; ///Criar baralho void criarBaralho(t_carta baralho[]) { char naipes[]="ECOP"; // Espadas, Copas, Ouros, Paus char faces []="A7KJQ65432"; //int pontos={11,10,4,3,2,0,0,0,0,0}; caso queira passar para a parte não obrigatória for(int i=0;i<40;i++) { baralho[i].naipe=naipes[i/10]; baralho[i].face=faces [i%10]; baralho[i].ordem=i; //baralho[i].pontos=pontos[i%10]; } } ///Escrever Carta void escCarta(t_carta carta) { printf("%c%c", carta.face, carta.naipe); } ///Escrever um vetor de Cartas void escVetorDecartas (t_carta vCartas[], int n) { for (int i=0;i<n;i++)escCarta(vCartas[i]); } ///Escrever Baralho void escBaralho ( Seria possível alguém me ajudar com este tópico?
  3. Estou a fazer um jogo de cartas da sueca e já consegui mostrar o baralho, "partir" e mostrar a mão de cada player o meu problema está em organizar as cartas de acordo com o naipe e a grandeza e fazer com que eles "joguem" a carta e assistam a jogada anterior. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #define DECK_NSUITS 4 #define DECK_NVALUES 10 #define DECK_SIZE (DECK_NSUITS * DECK_NVALUES) #define HAND_COUNT 4 #define HAND_SIZE (DECK_SIZE / HAND_COUNT) #define card_suit(card) ((card >> 8) & 0xff) #define card_value(card) (card & 0xff) #define card_compose(suit, value) (((suit & 0xff) << 8) | (value & 0xff)) #define card_swap(card1, card2) do { if (*card1 != *card2) { *card1 ^= *card2; *card2 ^= *card1; *card1 ^= *card2; } } while (0) void deck_build(short * deck) { int suit = 0, value = 0; for (suit = 1; suit <= DECK_NSUITS; suit++) for (value = 1; value <= DECK_NVALUES; value++) deck[(suit - 1) * DECK_NVALUES + value - 1] = card_compose(suit, value); } void card_output(short card) { switch (card_suit(card)) { case 1 : printf("%c", 3); break; case 2 : printf("%c", 4); break; case 3 : printf("%c", 5); break; case 4 : printf("%c", 6); break; } switch (card_value(card)) { case 1 : printf("A "); break; case 8 : printf("Q "); break; case 9 : printf("J "); break; case 10 : printf("K "); break; default : printf("%-2d", card_value(card)); } } void deck_shuffle(short * deck) { int i = 0, r = 0; for (i = 0; i < DECK_SIZE; i++) { r = rand() % (DECK_SIZE - i); card_swap(&deck[r], &deck[i + r]); } } int main() { short deck[DECK_SIZE]; short hands[HAND_COUNT][HAND_SIZE]; int i, j; /* start randon number genereation */ srand(time(NULL)); /* deck build */ deck_build(deck); /* deck destribution to the players hands */ for (i = 0; i < HAND_COUNT; i++) memcpy(hands[i], &deck[i * HAND_SIZE], HAND_SIZE * sizeof(short)); /* hand presentation */ printf("BARALHO:\n"); for (i = 0; i < HAND_COUNT; i++) { for (j = 0; j < HAND_SIZE; j++) { card_output(hands[i][j]); } printf("\n"); } printf("\n"); /* deck shuffle */ deck_shuffle(deck); /* deck destribution to the players hands */ for (i = 0; i < HAND_COUNT; i++) memcpy(hands[i], &deck[i * HAND_SIZE], HAND_SIZE * sizeof(short)); /* player que baralha */ int num = (rand() % (4)) + 1; printf("player%d baralha:\n", num); /* hand presentation */ for (i = 0; i < HAND_COUNT; i++) { for (j = 0; j < HAND_SIZE; j++) { card_output(hands[i][j]); } printf("\n"); } printf("\n");printf("\n"); /* parte a hand */ if(num == 4){ printf("player1 parte:\n"); }else{ printf("player%d parte:\n", num+1); } for (i = 0; i < HAND_COUNT; i++) { for (j = 0; j < HAND_SIZE; j++) { card_output(hands[i][j+1]); } printf("\n"); } printf("\n");printf("\n"); /* dá a hand */ if(num+1==4){ printf("player1 da:\n"); } else if(num+1==5){ printf("player2 da:\n"); }else{ printf("player%d da:\n", num+2); } for (i = 0; i < HAND_COUNT; i++) { printf("player%d: ", i+1); for (j = 0; j < HAND_SIZE; j++) { card_output(hands[i][j+1]); } printf("\n"); } return 0; } Uma ideia do resultado final https://photos.app.goo.gl/fcQN1EwvhGpZ2U749 (foi a única maneira que arranjei de partilhar uma imagem) Também já arranjei muito código daqui mas fui alterando para o que precisava
  4. Boas malta, Estou com uma dificuldade em adicionar uma estrutura a um vetor (estrutura) através do memcpy e não estou a perceber o porquê. As estruturas estão definidas no vecloc.h bem como as funções e suas implementações num ficheiro .c, mas coloquei aqui para uma simplificação visual. Talvez não esteja a perceber bem como aceder a diferentes estruturas através do vector vecloc->data, alguém me consegue dar alguma sugestão ou conteúdo ou mesmo explicar-me esta parte? Desde já agradeço qualquer ajuda! #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdbool.h> #include "vecloc.h" /* typedef struct{ int fileIdx; int line; long offset; } Location; typedef struct{ int space; int count; Location *data; } VecLoc; * */ VecLoc *vlCreate( void ) { VecLoc* v = malloc(sizeof(VecLoc)); if(v == NULL) return NULL; v->data = malloc(sizeof(Location)); if(v->data == NULL) { free(v); return NULL; } v->space = 1; v->count = 0; v->data = NULL; return v; } Location* vector_get_dataPos(VecLoc* v, int pos) { if(pos > v->count) return NULL; return v->data + pos * sizeof(Location); } int vlAdd( VecLoc *vec, Location *loc ) { if(vector_has_space(vec) == false) { vec->data = realloc(vec->data, (vec->space + VECTOR_INCREMENT_DATA) * sizeof(Location)); if(vec->data == NULL) return 0; vec->space += VECTOR_INCREMENT_DATA; printf("Vector Count is now %d\n", vec->count); } int newDataPos = vec->count ; Location* newData = vector_get_dataPos(vec, newDataPos); memcpy(newData, loc, sizeof(Location)); vec->count++; return 1; } int main() { Location locToCopy; locToCopy.fileIdx = 1; locToCopy.line = 2; locToCopy.offset = 0; Location* locPtr = &locToCopy; //VecLoc *vlCreate( void ); VecLoc* ptrVec = vlCreate(); int x = vlAdd(ptrVec, locPtr); if(x) { printf("Vetor Space = %d\n", ptrVec->space); printf("Vetor Count = %d\n", ptrVec->count); printf("Vetor Location fileIDX = %d\n", ptrVec->data->fileIdx); printf("Vetor Location line = %d\n", ptrVec->data->line); printf("Vetor Location offset = %d\n",(int) ptrVec->data->offset); } return 0; }
  5. Para quem tiver interesse, finalmente algumas novidades na linguagem: https://thephd.dev/c23-is-coming-here-is-what-is-on-the-menu. Resta aguardar pelos compiladores para começar a aproveitar algumas das inovações 🙂
  6. Boa noite, Pretendo elaborar um código para a execução do jogo Yahtzee no Visual Studio e gostaria de obter alguma sugestão de por onde começar e conselhos relativamente à sua elaboração. Obg
  7. Riqui

    Emotiv insight

    Olá pessoal, estou a realizar um projeto para a escola envolvendo o Emotiv Insight, o projeto é uma mão biónica, porém não tenho ideia por onde começar, não sei como e onde começar a programação do sensor (por algumas pesquisas penso que poderei usar o python, mas não tenho a certeza), se poderem dar umas dicas, partilharem alguma experiência estarei imensamente grato. Cumprimentos
  8. Estou a desenvolver um programa que regista 5 tempos de 3 atletas,Os valores dos tempos, em segundos, são registados sob a forma de uma matriz T 3x5, onde cada linha diz respeito a um atleta e cada coluna a uma sessão de treino. E depois calcula a média de tempo que cada um faz. No fim determina o melhor tempo que cada um fez nesses 5 tempos
  9. Preciso de ajuda para fazer um programa/algoritmo que faça a marcação de faltas dos estudantes na sala de aula, consultas de faltas e apresentação de justificativo usando C, n consigo de jeito nenhum. Quem puder ajudar eu agradeceria, sou novato nessa área, meu primeiro ano e tem sido difícil mas com o esforço eu chego lá
  10. Boa tarde, estou a tentar fazer um algoritmo em que diga qual nos 3 valores é maior, mas está-me sempre a dar erro. Alguém pode ajudar?? #include <stdlib.h> #include <math.h> #include <stdio.h> void main() { int num1,num2,num3,maior; printf("digite tres numeros : "); scanf("%d%d%d",&num1,&num2,&num3); int result if (num1>num2)(num1>num3) result=num1; if (num2>num1)(num2>num3) result=num2; if (num3>num2)(num2>num1) result=num3; result 0 }
  11. #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { int dividendo, divisor, resto, temp_div, contaDigitos, quo_temp; char str_div[100] ; char aux_div[100]; char quo_aux_div[100]; char quo_div[100]; printf("Dividendo: "); scanf(" %d", &dividendo); printf("Divisor: "); scanf(" %d", &divisor); int aux = dividendo; while (aux != 0){ contaDigitos++; aux/=10; } int array_dividendo[contaDigitos]; for (int i = 0; i < contaDigitos; ++i) { array_dividendo[contaDigitos-1-i] = dividendo % 10; dividendo/=10; } for (int i = 0; i < contaDigitos; ++i) { sprintf(aux_div, "%d", array_dividendo[i]); strcat(str_div, aux_div); temp_div = atoi(str_div); if(temp_div >= divisor) { quo_temp = temp_div / divisor; sprintf(quo_aux_div, "%d", quo_temp); strcat(quo_div, quo_aux_div); printf("\nQuociente: %d", quo_temp); resto = temp_div - (quo_temp * divisor); sprintf(str_div, "%d", resto); } } int quociente = atoi(quo_div); printf("\nQuociente: %d", quociente); printf("\nResto: %d", resto); return 0; } Boa noite, estou a ter um erro a imprimir o quociente no fim do ciclo for , mas não percebo o porquê alguém me podia ajudar sff
  12. Boa noite, Estou usando Visual Studio 2019 e estou com varios problemas.. Estou fazendo um teste de bibliotecas giflib com addon https://github.com/grimfang4/SDL_gifwrap, para SDL2. para correr gifs animados em SDL2. usando o exemplo base do gifwrap o programa corre e compila, mas tendo logo a partida 2 problemas, tenho que usar main.c (C, quando quero usar cpp) e include tem que ser #include "SDL_gifwrap/SDL_gifwrap.c", onde deveria ser .h, mas se colocar .h o programa simplesmente nao compila. O erro aqui apresentado com .h é o mesmo de quando tento compilar com main.cpp. LNK2019. main.c/cpp neste caso so roda se for c. //BEGIN PROGRAM HEAD //BEGIN INCLUDES //local headers //#include "helper.h" #include <gif_lib.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include "SDL_gifwrap/SDL_gifwrap.h" //should be SDL_gifwrap.c #include "sdl.h" #include <SDL_image.h> //END INCLUDES //BEGIN GLOBALS SDL_Window* Window; SDL_Renderer* Renderer; //SDL_Window* Window = NULL; //SDL_Renderer* Renderer = NULL; SDL_Texture* texture_; SDL_Rect gif; GIF_Image* gifA = NULL; Uint16 i = 0; int br; int bg; int bb; int logging = 0; //END GLOBALS //BEGIN FUNCTION PROTOTYPES void draw_current_gif_frame(void); //END FUNCTION PROTOTYPES //BEGIN MAIN FUNCTION int main(int argc, char* argv[]) { (void)argc; (void)argv; SDL_Init(SDL_INIT_EVERYTHING); //TTF_Init(); Window = SDL_CreateWindow("SDL2 gif stress", 50, 50, 350, 350, 0); //Renderer = SDL_CreateRenderer(Window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC); Renderer = SDL_CreateRenderer(Window, -1, SDL_RENDERER_ACCELERATED); SDL_SetRenderDrawColor(Renderer, 255, 0, 0, 255); SDL_RenderClear(Renderer); //BEGIN GIF int error; // GifFileType * gif2 = DGifOpenFileName("c-exec.gif", &error); char gifname[50]; if (argc < 2) sprintf(gifname, "33.gif"); else sprintf(gifname, argv[1]); GifFileType* gif2 = DGifOpenFileName(gifname, &error); if (DGifSlurp(gif2) == GIF_ERROR) { DGifCloseFile(gif2, &error); } // // SDL_Log("%d",gif2->SColorMap->Colors->Red); br = gif2->SColorMap->Colors->Red; // SDL_Log("%d",gif2->SColorMap->Colors->Green); bg = gif2->SColorMap->Colors->Green; // SDL_Log("%d",gif2->SColorMap->Colors->Blue); bb = gif2->SColorMap->Colors->Blue; if (gifA = GIF_LoadImage(gifname)) i = 0; SDL_Event event; int running = 1; int pause = 0; //BEGIN TIMING int delay; unsigned int startTime, currentTime, frameTime = 0; startTime = SDL_GetTicks(); delay = gifA->frames[i]->delay; //END TIMING //END INIT //BEGIN MAIN LOOP while (running) { //BEGIN EVENT LOOP while (SDL_PollEvent(&event)) { if (event.type == SDL_QUIT) { running = 0; } else { SDL_SetWindowTitle(Window, "SDL 2 - Animated GIF"); } } //END EVENT LOOP currentTime = SDL_GetTicks(); frameTime = currentTime - startTime; startTime = currentTime; if (delay <= 0) { i++; if (i > gifA->num_frames - 1) i = 0; delay = gifA->frames[i]->delay; } delay -= frameTime; /*}*/ //BEGIN RENDERING draw_current_gif_frame(); //END RENDERING SDL_Delay(33); } //END MAIN LOOP //BEGIN CLEAN UP if (texture_ != NULL) SDL_DestroyTexture(texture_); if (gifA != NULL) GIF_FreeImage(gifA); SDL_DestroyRenderer(Renderer); SDL_DestroyWindow(Window); //TTF_Quit(); SDL_Quit(); //exit_(); //END CLEAN UP return EXIT_SUCCESS; } //END MAIN FUNCTION void draw_current_gif_frame() { gif.x = (gifA->frames[i]->left_offset);// *current_scale) + gif_canvas.dst.x; gif.y = (gifA->frames[i]->top_offset);// * current_scale) + gif_canvas.dst.y; gif.w = (gifA->frames[i]->width);// * current_scale); gif.h = (gifA->frames[i]->height);// * current_scale); // SDL_SetRenderDrawColor(Renderer, br, bg, bb, 255); SDL_RenderFillRect(Renderer, &gif); //SDL_RenderClear(Renderer); texture_ = SDL_CreateTextureFromSurface(Renderer, gifA->frames[i]->surface); SDL_RenderCopy(Renderer, texture_, NULL, &gif); SDL_RenderPresent(Renderer); } agradeco a ajuda, pois estou mentalmente bloqueado, possivelmente por algo simples. P.S ja cheguei a add extern"C" no include mas tambem não ajudou. Obrigado
  13. Bom dia a todos, Tenho mais uma duvida num programa que realizei, que não consigo que faça a parte do "if" para indicar se existe mulher ou homem, indica sempre o valor da média igual nas duas categorias. Abaixo apresento o que me aparece quando compilo. Já pensei se era da função igual que utilizo no "if" mas se colocar apenas um igual, não dá qualquer valor, já tentei de diversas formas, mas sinceramente não estou a conseguir descodificar o problema, será que me podem ajudar, se faz favor? Envio abaixo o código que fiz: #include<stdio.h> #include<stdlib.h> #include<string.h> #include<locale.h> #include<ctype.h> #include<math.h> int main(){ setlocale(LC_ALL, "Portuguese"); int numero, num_pecas, operario, total_pecas=0, cont_M=0, cont_F=0; char sexo; float salario_minimo=600.0, salario, total_pag=0, media_M=0, media_F=0, salario_maior=0, maior; for(operario=1;operario<=2;operario++){ printf("Indique o número do %dº operário: ", operario); scanf("%d",&numero); printf("Indique o número de peças fabricadas no mês pelo %dº operário: ", operario); scanf("%d",&num_pecas); printf("Indique o sexo do operário (F-Feminino ou M-Masculino): "); scanf("%c%*c",&sexo); if(num_pecas<=30.00){ printf("\nO número do operário é de Classe 1 e "); salario=salario_minimo; } if(num_pecas>30.0 && num_pecas<=50.0){ printf("\nO número do operário é de Classe 2 e "); salario=salario_minimo+(salario_minimo*(3.0/100.0)*(num_pecas-30.0)); } if(num_pecas>50.0){ printf("\nO número do operário é de Classe 3 e "); salario=salario_minimo+(salario_minimo*(5.0/100.0)*(num_pecas-30.0)); } printf("o seu salário é de %.2f.\n", salario); printf("\n"); total_pag+=salario; total_pecas+=num_pecas; if(sexo='M'){ media_M+=num_pecas; cont_M++; } if(sexo='F'){ media_F+=num_pecas; cont_F++; } if(operario==1){ salario_maior=salario; maior=numero; }else{ if(salario>salario_maior){ salario_maior=salario; maior=numero; } } } printf("\nO total da folha de pagamentos da fábrica é de %.2f.\n", total_pag); printf("O número total de peças fabricadas no mês é de %d.\n",total_pecas); if(cont_M==0){ printf("Não há nenhum homem!\n"); }else{ media_M=media_M/cont_M; printf("A média de peças fabricadas por homens é de %.2f.\n",media_M); } if(cont_F==0){ printf("Não há nenhuma mulher!\n"); }else{ media_F=media_F/cont_F; printf("A média de peças fabricadas por mulheres é de %.2f.\n",media_F); } printf("O número do operário com maior salário é %.2f.\n", maior); system("pause"); return 0; } Obrigada.
  14. Boa tarde, Preciso da vossa ajuda se faz favor com um exercício que estou a tentar fazer de um livro, mas infelizmente não tem solução completa e já tentei de diferentes formas e não consigo perceber como colocar o programa a funcionar. O enunciado é pedido o seguinte: Através disto fiz o seguinte código: #include<stdio.h> #include<stdlib.h> #include<locale.h> #include<string.h> #include<ctype.h> #include<math.h> int main(){ setlocale(LC_ALL, "Portuguese"); float hora,minutos; printf("Indique uma hora com minutos se parado por virgula: "); scanf("%f",&hora); minutos=(int)hora*60; printf("A hora indicada em minutos é %f.\n",minutos+(hora-(int)hora)); system("pause"); return 0; } No entanto, não estava a funcionar porque a parte fracionária não adicionava á parte inteira conforme pretendido e verifiquei a solução e indica o seguinte: Mas infelizmente não estou a conseguir perceber a razão da multiplicação dos minutos com 100 e tentei usar a função "modf", mas penso que não está a funcionar. #include<stdio.h> #include<stdlib.h> #include<locale.h> #include<string.h> #include<ctype.h> #include<math.h> int main(){ setlocale(LC_ALL, "Portuguese"); float hora,z, y; int minutos,conversao; printf("Indique uma hora com minutos se parado por virgula: "); scanf("%f",&hora); z=modf(hora,&y); minutos=hora-y; conversao=(y*60.0)+(minutos*100.0); printf("A hora indicada em minutos é %d.\n",conversao); system("pause"); return 0; } Será que me conseguem ajudar com este exercício? Obrigada.
  15. Suelen

    Algarismos de número

    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; }
  16. 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???
  17. Alguém me pode explicar que código em C eu implemento para garantir que um valor numa BTS é único? Obrigada.
  18. 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, ); } }
  19. 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?
  20. 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??????
  21. 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!
  22. #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.
  23. 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!!
  24. #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!"); }
  25. 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.
×
×
  • 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.