Jump to content

Search the Community

Showing results for tags 'c'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Bem-vindos ao Portugal-a-Programar
    • Sugestões, Críticas ou Dúvidas relativas ao P@P
    • Acerca do P@P
  • Comunidade a Trabalhar
    • Wiki P@P
    • Apresentação de Projectos de Programação
    • Downloads
  • Revista PROGRAMAR
    • Revista PROGRAMAR
  • Desenvolvimento Geral
    • C
    • C++
    • Java
    • Haskell
    • Pascal
    • Python
    • Bases de Dados
    • Visual Basic Clássico
    • Visual Basic for Applications (VBA)
    • 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
    • Automação Industrial
    • Matemática
    • Dúvidas e Discussão de Programação
    • Notícias de Tecnologia
  • Outras Áreas
    • 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...

Found 5,013 results

  1. LuisLopes72

    Programa Para Contar Palavras

    Programa para contar palavras. O gcc faz o executável e não dá erro. Executando o executável dá erro e "estoura" . O que estou a fazer mal. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> typedef struct _BTree { char palavra1[128]; //nossa chave char palavra2[128]; char token[5]; //classificados double prob; //certeza struct _BTree *left, *right; } BTree; BTree *LerFicheiro(); BTree *EscreverFicheiro(); BTree *btree_insert(BTree *root, BTree *nova); void PrintInOrder(BTree *root); int main() { BTree *tree = NULL; //vamos medir o tempo clock_t start, end; double cpu_time_used; start = clock(); //ler ficheiro e carregamos para a arvore binaria tree = LerFicheiro(); //que tempo demoramos a ler? end = clock(); cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC; printf("Demoramos %lf", cpu_time_used); PrintInOrder(tree); } BTree *btree_insert(BTree *root, BTree *nova) { if(root) { if(strcmp(nova->palavra1, root->palavra1) <0) root->left = btree_insert( root->left, nova); if(strcmp(nova->palavra1, root->palavra1) >0) root->right = btree_insert( root->right, nova); } else { root =(BTree*) malloc( sizeof (BTree)); //printf("%-20s %-20s %-5s %lf\n", nova->palavra1, nova->palavra2, nova->token, nova->prob); strcpy(root->palavra1, nova->palavra1); strcpy(root->palavra2, nova->palavra2); strcpy(root->token, nova->token); root->prob = nova->prob; root->left = root->right = NULL; } return root; } BTree * LerFicheiro() { BTree *tree; //arvore completa que vai ser devolvida BTree *nova = (BTree *) malloc(sizeof(BTree)); //nodo auxiliar FILE *ficheiro =fopen("slate-tagged.txt","r"); int contador = 0; while (fscanf (ficheiro, "%s %s %s %lf", nova->palavra1, nova->palavra2, nova->token, &nova->prob) != EOF) //fim do ficheiro { //condiçao para ignorar simbolos if((('a' <= nova->palavra1[0]) && (nova->palavra1[0] <= 'z')) || (('A' <= nova->palavra1[0]) && (nova->palavra1[0] <= 'Z'))){ tree = btree_insert(tree, nova); } else{ continue; } } fclose(ficheiro); return tree; } BTree * EscreverFicheiro() { BTree *tree; //arvore completa que vai ser devolvida BTree *nova = (BTree *) malloc(sizeof(BTree)); //nodo auxiliar FILE *ficheiro =fopen("saida.txt","r"); int contador = 0; while (fscanf (ficheiro, "%s %s %s %lf", nova->palavra1, nova->palavra2, nova->token, &nova->prob) != EOF) //fim do ficheiro { //condiçao para ignorar simbolos if((('a' <= nova->palavra1[0]) && (nova->palavra1[0] <= 'z')) || (('A' <= nova->palavra1[0]) && (nova->palavra1[0] <= 'Z'))){ tree = btree_insert(tree, nova); } else{ continue; } } fclose(ficheiro); return tree; } void PrintInOrder(BTree *root){ if(root!=NULL) { PrintInOrder(root->left); printf(" %s - %s - %s - %lf \n", root->palavra1, root->palavra2, root->token, root->prob); printf("\n"); PrintInOrder(root->right); } }
  2. João Victor Maciel

    Programa de cadastro de uma oficina em C

    Estou aprimorando um código antigo meu e to tentando adicionar novas funções nele, exibir todos os cadastros, alterar e excluir. Só que no meio disso esbarrei em alguns problemas: 1- na hora que vou realizar cadastros e depois faço a busca específica do cadastro ele está sobrescrevendo um cadastro anterior e misturando os dados 2- minha função emitir tudo só mostra um cadastro 3- não estou entendendo como posso fazer as funções alterar e excluir O que está comentado são as coisa que não fiz ainda. Na função de emitir todas os fread comentado foram tentativas de fazer a emissão sem usar o while. Vou deixar o que já fiz aqui em baixo #include <stdio.h> #include <stdlib.h> #include <windows.h> #include <locale.h> struct carro{ char placa[10], marca[50], modelo[50], ano[10]; }; struct cliente{ struct carro y; char nome[100], CPF[20], RG[20], endereco[200]; }; struct manutencao{ char data[15], mecanico[50], itens[200], valor[50], placa[15]; }; void cabecalho(); void cadastrarCliente(struct cliente x, struct carro y); void cadastarServ(struct manutencao z, struct carro y); void buscarOrdem(struct carro y, struct cliente x, struct manutencao z); void emitirTudo(struct carro y, struct cliente x, struct manutencao z); //void alterarCad(struct carro y, struct cliente x, struct manutencao z); //void excluirOrdem(struct carro y, struct cliente x, struct manutencao z); int main() { setlocale(LC_ALL, "portuguese"); struct cliente x; struct carro y; struct manutencao z; int op, wo; do{ cabecalho(); printf("\t\t\t\t###########################################\n"); printf("\t\t\t\t##\t1 - CADASTRAR CLIENTE ##\n"); printf("\t\t\t\t##\t2 - CRIAR ORDEM DE SERVIÇO ##\n"); printf("\t\t\t\t##\t3 - BUSCAR ORDEM DE SERVIÇO ##\n"); printf("\t\t\t\t##\t4 - MAIS OPÇÕES ##\n"); printf("\t\t\t\t##\t5 - SAIR ##\n"); printf("\t\t\t\t###########################################\n"); printf("\t\t\t\t\tDIGITE UMA OPÇÂO --> "); scanf("%d", &op); switch(op) { case 1: cadastrarCliente(x, y); break; case 2: cadastrarServ(z, y); break; case 3: buscarOrdem(y, x, z); break; case 4: do { cabecalho(); printf("\t\t\t\t###########################################\n"); printf("\t\t\t\t##\t1 - EXIBIR TODAS AS ORDENS ##\n"); printf("\t\t\t\t##\t2 - ALTERAR CADASTRO ##\n"); printf("\t\t\t\t##\t3 - EXCLUIR ORDEM ##\n"); printf("\t\t\t\t##\t4 - VOLTAR ##\n"); printf("\t\t\t\t###########################################\n"); printf("\t\t\t\t\tDIGITE UMA OPÇÃO -> "); scanf("%d", &wo); switch (wo) { case 1: emitirTudo(y, x, z); break; case 2: //alterarCad(y, x, z); break; case 3: //excluirOrdem(y, x, z); break; case 4: printf("\t\t\t\t\tVOLTANDO..."); Sleep(300); break; default: printf("\t\t\t\t\tOPÇÃO INVÁLIDA!!!"); getch(); break; } } while (wo != 4); break; case 5: printf("\t\t\t\t\tSAINDO...\n"); Sleep(400); break; default: printf("\t\t\t\t\tOPÇÃO INVÁLIDA!!!"); getch(); break; } }while(op != 5); }; void cadastrarCliente(struct cliente x,struct carro y){ FILE *fp; FILE *f; fp = fopen("cliente.txt", "ab"); f = fopen("carro.txt", "ab"); if(fp == NULL){ printf("\t\t\t\t\tNÃO FOI POSSÍVEL CRIAR O ARQUIVO!!\n"); } else{ do{ cabecalho(); fflush(stdin); printf("NOME DO CLIENTE: "); gets(x.nome); printf("CPF: "); gets(x.CPF); printf("RG: "); gets(x.RG); printf("ENDEREÇO: "); gets(x.endereco); fwrite(&x, sizeof(struct cliente),1,fp); printf("INFORME A PLACA DO CARRO: "); gets(y.placa); printf("MARCA DO CARRO: "); gets(y.marca); printf("MODELO: "); gets(y.modelo); printf("ANO DE FABRICAÇÃO: "); gets(y.ano); fwrite(&y, sizeof(struct carro), 1, f); fclose(f); fclose(fp); printf("DESEJA CONTINUAR REALIZANDO CADASTROS? [ S / N ]"); }while(getch() == 's'); } } void cadastrarServ(){ FILE *fs; FILE *fp; struct manutencao z; struct carro y; char placa[15]; int tam, i, w = 0; fs = fopen("manutenção.txt", "ab"); fp = fopen("carro.txt", "r+b"); if(fs == NULL){ printf("\t\t\t\t\tNÃO FOI POSSÍVEL CRIAR O ARQUIVO!!\n"); } else{ do{ cabecalho(); fflush(stdin); printf("DIGITE A DATA DA MANUTENÇÃO: "); gets(z.data); printf("INFORME O MECÂNICO QUE FARA A MANUTENÇÃO: "); gets(z.mecanico); printf("ITENS QUE SERÃO UTILIZADOS NA MANUTEÇÃO: "); gets(z.itens); printf("VALOR TOTAL DO SERVIÇO: "); gets(z.valor); do { printf("DIGITE A PLACA: "); gets(placa); //PESQUISA DENTRO DO ARQUIVO SE A PLACA INFORMADA ESTÁ CADASTRADA fseek(fp, 0, SEEK_END); tam = ftell(fp)/sizeof(struct carro); rewind(fp); for(i = 0; i < tam; i++) { fseek(fp, i* sizeof (struct carro), SEEK_SET); fread(&y, sizeof(struct carro), 1, fp); if (strcmp(placa, y.placa)== 0) { w = 1; strcpy(z.placa, placa); } } if(w == 0) { printf("\nPLACA NÃO CADASTRADA!!\n"); } fwrite(&z, sizeof(struct manutencao), 1, fs); } while(w != 1); fclose(fp); fclose(fs); printf("DESEJA CONTINUAR REALIZANDO CADASTROS? [ S / N ]"); } while(getch() == 's'); } } void buscarOrdem(struct carro y, struct cliente x, struct manutencao z) { FILE *fp; FILE *fs; FILE *f; char placa[10]; int j, t, v = 0; fp = fopen("cliente.txt", "r+b"); fs = fopen("manutenção.txt", "r+b"); f = fopen("carro.txt", "r+b"); if(fp, fs, f == NULL) { printf("\t\t\t\t\tNÃO FOI POSSÍVEL ABRIR O ARQUIVO!!\n"); getch(); } else { cabecalho(); fflush(stdin); do { printf("DIGITE A PLACA DO CARRO: "); gets(placa); //BUSCA A ORDEM DE SERVIÇO BASEADO NA PLACA INFORMADA fseek(f, 0, SEEK_END); t = ftell(f)/sizeof(struct carro); rewind(f); for(j = 0; j < t; j++){ fseek(f, j* sizeof(struct carro), SEEK_SET); fread(&y, sizeof(struct carro), 1, f); if(strcmp(placa, y.placa)== 0){ v = 1; strcpy(y.placa, placa); //CASO A PLACA ESTIVER CADASTRADA, O PROGRAMA IRÁ IMPRIMIR printf("MODELO: %s\n", y.modelo); printf("MARCA: %s\n", y.marca); printf("ANO DE FABRICAÇÃO: %s\n", y.ano); fread(&x, sizeof(struct cliente), 1, fp); printf("NOME DO CLIENTE: %s\n", x.nome); printf("CPF: %s\n", x.CPF); printf("RG: %s\n", x.RG); printf("ENDEREÇO: %s\n", x.endereco); fread(&z, sizeof(struct manutencao), 1, fs); printf("DATA DE INÍCIO DA MANUTENÇÃO: %s\n", z.data); printf("MECÂNICO: %s\n", z.mecanico); printf("ITENS UTILIZADOS: %s\n", z.itens); printf("VALOR FINAL: %s\n",z.valor); } } if(v == 0){ printf("CARRO NÃO CADASTRADO!!\n\n"); } }while(v != 1); fclose(f); fclose(fp); fclose(fs); getch(); } } void emitirTudo(struct carro y, struct cliente x, struct manutencao z) { FILE *fp; FILE *fs; FILE *f; int retorno, cont = 0; fp = fopen("cliente.txt", "r+b"); fs = fopen("manutenção.txt", "r+b"); f = fopen("carro.txt", "r+b"); if (fp, fs, f == NULL) { printf("\t\t\t\t\tNÃO FOI POSSÍVEL ABRIR OS ARQUIVOS!!\n"); getch(); } else { retorno = fread(&x, sizeof(struct cliente), 1, fp); retorno = fread(&y, sizeof(struct carro), 1, f); retorno = fread(&z, sizeof(struct manutencao), 1, fs); while( retorno == 0 ) { system("cls"); cabecalho(); cont++; //fread(&x, sizeof(struct cliente), 1, fp); printf("NOME DO CLIENTE: %s\n", x.nome); printf("CPF: %s\n", x.CPF); printf("RG: %s\n", x.RG); printf("ENDEREÇO: %s\n", x.endereco); //fread(&y, sizeof(struct carro), 1, f); printf("PLACA DO CARRO: %s\n", y.placa); printf("MODELO: %s\n", y.modelo); printf("MARCA: %s\n", y.marca); printf("ANO DE FABRICAÇÃO: %s\n", y.ano); //fread(&z, sizeof(struct manutencao), 1, fs); printf("DATA DO INÍCIO DA MANUTENÇÃO: %s\n", z.data); printf("MECÂNICO: %s\n", z.mecanico); printf("ITENS UTILIZADOS: %s\n", z.itens); printf("VALOR FINAL: %s\n",z.valor); retorno = fread(&x, sizeof(struct cliente), 1, fp); retorno = fread(&y, sizeof(struct carro), 1, f); retorno = fread(&z, sizeof(struct manutencao), 1, fs); printf("--------------------------------------------------------------------------\n\n\n"); } fclose(fp); fclose(fs); fclose(f); getch(); } } /* void alterarCad(struct carro y, struct cliente x, struct manutencao z) { FILE *fp; FILE *fs; FILE *f; char placa[10]; int j, t, v = 0; fp = fopen("cliente.txt", "rb"); f = fopen("carro.txt", "rb"); fs = fopen("manutenção.txt", "rb"); if (fp, fs, f == NULL) { printf("\t\t\t\t\tNÃO FOI POSSÍVEL ABRIR OS ARQUIVOS!!\n"); getch(); } else { cabecalho(); fflush(stdin); do { printf("DIGITE A PLACA DO CARRO PARA ALTERAR O CADASTRO: "); gets(placa); fseek(f, 0, SEEK_END); t = ftell(f)/sizeof(struct carro); rewind(f); for(j = 0; j < t; j++){ fseek(f, j* sizeof(struct carro), SEEK_SET); fread(&y, sizeof(struct carro), 1, f); if(strcmp(placa, y.placa)== 0){ v = 1; strcpy(y.placa, placa); } } printf("DESEJA REALIZAR OUTRAS ALTERAÇÕES? [ S / N ]"); }while(getch() == 's'); } } */ void cabecalho() { system("cls"); printf("\t\t\t########################################################\n"); printf("\t\t\t## ##\n"); printf("\t\t\t## SISTEMA DE CADASTRO DE MANUTENÇÃO E VENDAS ##\n"); printf("\t\t\t## ##\n"); printf("\t\t\t########################################################\n\n"); }
  3. Flames

    Troco minimo com notas e moedas

    Pessoal existe alguma alternativa à seguinte forma de algoritmo que apliquei? (reduzindo linhas de código e eventualmente aumentando eficiencia) #include <stdio.h> #include <stdlib.h> int main() { int troco,n50,n20,n10,n5,n2,n1; /*inserir a quantia */ printf("insira o troco"); scanf("%d",&troco); /*calculo de 50 */ n50=troco/50; troco=troco%50; /*calculo de 20 */ n20=troco/20; troco=troco%20; /*calculo de 10 */ n10=troco/10; troco=troco%10; /*calculo de 5 */ n5=troco/5; troco=troco%5; /*calculo de 2 */ n2=troco/2; troco=troco%2; /*calculo de 1 */ n1=troco/1; troco=troco%1; printf("%d nota de 50\n%d nota(s) de 20\n%d nota(s) de 10\n%d nota(s) de 5\n%d moeda(s) de 2\n%d moeda de 1",n50,n20,n10,n5,n2,n1); return 0; } Eu tentei pensar num for mas a sequencia 50,20,10,5,2,1 não é uma sequencia mt facil a primeira vista porque de 50 para 20 nao é metade mas ja 20 para 10 e 10 para 5 é metade não sei como aplicar aqui um for... Desculpem a ignorância e obrigado desde já
  4. Samuel Barroca

    Jogo do galo em C

    Tenho que fazer o jogo do galo em c Tenho que seguir este programa. Alguém me ajuda? #include <stdio.h> #include <stdlib.h> #include <time.h> #define LINHAS 3 #define COLUNAS 3 char matrix[COLUNAS][LINHAS]; void delay(unsigned int mseconds){ clock_t goal=mseconds+clock(); while(goal>clock()); } void InitMatrix(void){ char i,j; for(i=0;i<LINHAS;++i){ for(j=0;j<COLUNAS;++j){ matrix[j]=0; } } } void printMatrix(void){ char i,j; for(i=0;i<LINHAS;++i){ for(j=0;j<COLUNAS;++j){ printf(" %d ",matrix[j]); if(j<(COLUNAS-1)) printf("|"); } printf("\n"); if(i<(LINHAS-1)){ for(j=0;j<COLUNAS;++j){ if(j<COLUNAS-1) printf("----"); else printf("---"); } } printf("\n"); } } char makeMove(char position, char player){ //devolve 0 caso tenha sido uma jogada inválida //devolve 1 caso tenha sido uma jogada válida //Valida a jogada e afecta a matriz com a jogada } char checkVictory(char player){ //devolve 0 caso não exista vitória. //devolve 1 caso tenha vencido o player 1 //devolve 2 caso tenha vencido o player 2 } void main(void){ char jogada; InitMatrix(); printMatrix(); printf("Insere a jogada -> "); scanf("%d",&jogada); printf("Jogaste %d",jogada); }
  5. 3xpl0it

    Criar array a partir de ficheiro txt

    Tenho um ficheiro txt: 2 0 0 1 2 Q W E Onde a primeira linha indica o tamanho da matriz, qual a melhor forma de criar uma matriz de matriz[2][2] com: matriz[0][0]= 0 matriz[1][0]= 1 (..) A ultima linha será lida para caso seja Q fazer algo a matriz, caso seja W fazer outra coisa (...) Qual a melhor forma de criar o codigo? Penso que não será na base de structs certo? Pensei em criar primeiro um array para colocar todas as linhas do do tipo string, e depois trabalhar linha a linha passando para as posições da matriz. Mas estou completamente perdido...
  6. Marcos

    ScoreBoard de jogo em c

    Olá. Estou a fazer um jogo ( Space Invaders ) em c, e queria criar uma espécie de scoreboard que regista-se a pontuação do jogador e compara-se com pontuações anteriores para saber se entrava no Top 5. Como só recentemente aprendi ficheiros em c, queria saber se alguém me ajudava neste problema.
  7. Olá boa tarde, Tenho um programa C para desenvolver. O programa trata-se da gestão de uma ala de um hospital, e a minha duvida é a seguinte, quando peço o nº de sns, tenho de fazer uma verificação se o número tem os 9 dígitos, e gostava de saber se alguém tem alguma ideia de como fazer esta verificação. Obrigado, Pedro Ferreira😀
  8. lucasvitor978@gmail.com

    Conversão binário/hexadecimal

    Crie um unico projeito (main.c,funcoes.cprototipos.h) que contenha as seguintes funçoes a) leia um numero inteiro e o trasforme em binario b)leia um numero inteiro e o trasforme em hexadecimal c) leia um numero binairo e o trasforme em hexadecimal
  9. maria eduarda

    Erro em swap de variáveis

    O código diz respeito à troca de duas variáveis, mas não entendo por que o valor final que o programa mostra é apenas o primeiro digitado. Por exemplo, se digito A=10 e B=15 quero que mostre A =15 e B =10, mas mostra A =10 e B = 10. Não percebo o erro. int main() { int x, y, *ptr1, *ptr2; cout << "\nDigite o x:"; cin >> x; cout << "\nDigite o y: "; cin >> y; ptr1 = &x; ptr2 = &y; y = *ptr1; x = *ptr2; printf("\nO valor de X: %d\n", x); printf("\nO valor de Y: %d\n", y); }
  10. rubenndf91

    [Resolvido] Como voltar ao menu anterior

    Boa tarde eu estou a fazer uma agenda electronica em c(visual studio) e tenho uma duvida que nao consigo resolver. eu quero voltar de um submenu para o menu inicial mas nao estou a conseguir. coloco em baixo com cor vermelha ao que me refiro. agradeço desde já obs. o menu prinicipal está no fundo oid submenu(dados *contacto) { char op; do { system("cls"); printf("\n\tEscolha uma opcao\n\n\t"); printf("1- Mostrar lista\n\n\t"); printf("2- Acrescentar um registo na agenda\n\n\t"); printf("3- Apagar um registo da agenda\n\n\t"); printf("4- Qual eh o telefone e o endereco\n\t de e-mail de um NOME de aluno que conste na agenda\n\n\t"); printf("5- Qual o telefone, a morada, e o\n\t codigo postal de um NOME de um aluno que conste na agenda\n\n\t"); printf("6- Qual o telefone e o endereco de\n\t e-mail de um NUMERO de um aluno que conste na agenda\n\n\t"); printf("7- Qual o telefone, a morada, e o\n\t codigo postal de um NUMERO de um aluno que conste na agenda\n\n\t"); printf("8- Ordenar a agenda por ordem crescente\n\t do numero de aluno, para todos os registos da agenda\n\n\t"); printf("9- Voltar ao menu principal\n\n\t"); printf("\n\tSelecione a opcao --> "); op = getchar(); switch (op) { case '1': system("cls"); mostrar(contacto); system("pause"); break; case '2': system("cls"); adicionar(contacto); break; case '3': system("cls"); eliminar(contacto); break; case '4': system("cls"); pesquisar1(contacto); break; case '5': system("cls"); pesquisar2(contacto); eliminar(contacto); break; case '6': system("cls"); //pesquisar3(contacto); system("pause"); break; case '7': system("cls"); //pesquisar4(contacto); system("pause"); break; case'8': system("cls"); //ordenar(contacto); system("pause"); break; case '9': system("cls"); // voltar ao menu...como? break; } } while (op != '0'); } void abrir(dados *contacto) { FILE *f; char nome[1000], morada[1000], postal[1000], email[1000], nfich[20]; int numero,telefone, FP, AM1, SD, ALGA, CM; printf("insira o caminho do ficheiro\n"); scanf("%s", &nfich); f = fopen(nfich, "r"); if (f == NULL) { printf("erro ao abrir ficheiros"); } else { while (!feof(f)) { fscanf(f, " %s %s %s %s %d %d %d %d %d", &nome,&numero, &morada, &postal, &email, &telefone, &FP, &AM1, &SD, &ALGA, &CM); strcpy(contacto[i].nome, nome); contacto[i].numero = numero; strcpy(contacto[i].morada, morada); strcpy(contacto[i].postal, postal); strcpy(contacto[i].email, email); contacto[i].telefone = telefone; contacto[i].FP = FP; contacto[i].AM1 = AM1; contacto[i].SD = SD; contacto[i].ALGA = ALGA; contacto[i].CM = CM; i++; } fclose(f); } } void main(int argc, char *argv[]) { dados contacto[total]; char op; int j; do { system("cls"); printf("\n\t.:: AGENDA ELECTRONICA EM LINGUAGEM C ::.\n\n\t "); printf("Como pretende introduzir os dados:\n\n\t\t"); printf("1- Atraves do teclado\n\t\t"); printf("2- Atraves de ficheiro\n\n\t\t"); printf("0- Sair do Programa\n\n\t"); printf("opcao--> "); scanf("%c", &op); switch (op) { case'1': submenu(contacto); break; case'2': abrir(contacto); submenu(contacto); break; } } while (op != '0'); system("PAUSE"); }
  11. Alguém pode me ajudar, eu não sei como posso fazer essa questão sendo que não posso usar ponteiros: • Defina a função calcula_pares que recebe os dois números e retorna a quantidade de números pares que existem entre eles. • Defina a função apresenta_resultados que recebe os dois números e a quantidade de números pares e imprime no ecrã uma mensagem do género “Entre 5 e 10 existem 3 números pares”. • Construa um programa principal main que peça ao utilizador dois números inteiros, de sinal contrário e múltiplos de 3. Enquanto a situação não seja satisfeita, volte a pedir. • Utilize no main a função calcula_pares para calcular a quantidade de números pares entre esses valores. E utilize na função main na função apresenta_resultados.
  12. Seabra

    Deslocamento de bits dentro de um array

    Estou farto de dar voltas com este código e não funciona bem. O que pretendo é que faça o deslocamento de bits dentro do array. Apenas desloca entre bytes e não faz o carry do byte anterior. Alguém me pode ajudar? #include <stdio.h> #include <stdlib.h> void imprime(char texto); void shift_right(unsigned char *ar, int size, int shift); int main() { unsigned short alfabeto[8] ={0b11000001, 0b11000001, 0b11000000, 0b10000000, 0b10000000, 0b10000000, 0b10000000, 0b10000000}; int a,b; char Shift_data=1; shift_right(&alfabeto[0], 8, 7); //imprime array for (a=0; a<8; a++) { imprime(alfabeto[a]); } return 0; } unsigned short alfabeto[8] ={0b11000001, 0b11000001, 0b11000000, 0b10000000, 0b10000000, 0b10000000, 0b10000000, 0b10000000}; shift_right(&alfabeto[0], 8, 1); void shift_right(unsigned char *ar, int size, int shift) { char carry = 0; while (shift--) { for (int i = size - 1; i >= 0; --i) { char next = (ar[i] & 1) ? 0x80 : 0; ar[i] = carry | (ar[i] >> 1); carry = next; } } } void imprime(char texto) { int i; for (i = 0; i < 8; i++) { printf("%d", !!((texto << i) & 0x80)); } printf("\n"); }
  13. Vasco

    Erro Dev c++

    Boas Alguém me pode ajudar com o erro que aparece neste programa? #include <stdio.h> int main(){ int op; while (op > 1 || op < 4) { printf("Selecione uma opcao\n"); // Interface Menu printf("1 - Informacoes sobre destinos\n"); printf("2 - Clientes\n"); printf("3 - Destinos\n"); printf("3 - Alojamentos\n"); scanf("%d", &op); // Leitura da opçao switch (op) { case 1: break; case 2: clientes(); break; case 3: break; case 4: break; default: printf("Opcao invalida\n"); break; } } } void clientes() //menu clientes { int op; while (op > 1 || op < 3) { printf("Selecione uma opcao\n"); printf("1 - Inserir cliente\n"); printf("2 - Editar cliente\n"); printf("3 - Apagar cliente\n"); scanf("%d", &op); switch (op) { case 1: //Inserir cliente char cliente[50]; int id=1; printf("Insira o nome de cliente "); scanf("%c", &cliente); FILE *ptr; ptr = fopen("clientes.txt", "w"); fprintf(ptr,"%d %c\n", id, cliente); id++; break; case 2: //Editar clientes break; case 3: //Apagar clientes break; default: printf("Opcao invalida\n"); break; } } }
  14. tiko165

    Sudoku na Diagonal em C

    Boa tarde, Preciso da vossa ajuda, com este seguinte código (não feito por mim), para resolver uma matriz Sudoku e que utiliza a regra do BackTracking. Pretendo implementar uma regra de validação em diagonal (cima>baixo e baixo>cima) https://gist.github.com/bopbi/c9f94b1b981b84bcb02b Acrescentei as seguintes funções, e os seus parâmetros. Consegues perceber o porquê que desta forma não funciona. int verify_diagonal_down(int matrix[N][N], int num) { for (int row=0, col=0; row<N && col<N; row++, col++) { if(row==col && matrix[row][col] == num){ printf("ABC: [%d][%d],, %d == %d\n", row, col, matrix[row][col], num); return 1; } } return 0; } int verify_diagonal_up(int matrix[N][N], int row, int col, int num) { if(row + col == N - 1){ for (int x=N, y=0; x>=0 && y<N; x--, y++) { return 1; } return 0; } } int is_safe_num(int matrix[N][N], int row, int col, int num) { return !verify_box(matrix, row - (row % CUBE), col - (col % CUBE), num)//Valida Cubo && !verify_row(matrix, row, num)//Valida linha && !verify_col(matrix, col, num)//valida coluna && !verify_diagonal_down(matrix, num)//Valida diagonal LEFT > DOWN && !verify_diagonal_up(matrix, row, col, num)//Valida diagonal LEFT > UP ; } Obrigado
  15. matheus

    Usando função em C

    Boa noite a todos. Fiz a resolução da questão porém não consigo fazer com que os segundos e minutos sejam incrementados em um único print, ao inves, fica dando print a cada segundo que passa. Se puderem me ajudar será de enorme ajuda. Desde já, grato. /*14) Faça um programa em C que simule um cronômetro com horas, minutos e segundos. A simulação deverá mostrar no vídeo o cronômetro no seguinte formato HH: MM: SS. Inicialmente o cronômetro será zerado ( 00: 00: 00 ), sendo que os segundos começarão a ser incrementados, depois os minutos e depois as horas. Lembre-se que a cada 60 segundos os minutos deverão ser incrementados, depois os minutos voltarão a zero. Quando as horas estiverem prestes a chegar em 25, o cronômetro deverá voltar a zero ( 00: 00: 00 ). */ #include <stdio.h> #include <stdlib.h> #include <unistd.h>//para usar o Sleep() int main(void){ int sec=0;//segundos int min=0;//minutos int hr=0;//horas int i=0; do { printf("Cronômetro\n\n"); printf("\n\t\t\t\t%dh:%dm:%ds\n\n", hr,min,sec); if(sec==60){ sec=0; min++; } if(min==60){ min=0; hr++; } if(hr==24){ hr=0; } sleep(1);//tem a função de pausar a execução por um determinado tempo //coloquei 1 pois com 1000 não estava passando em 1segundo por alguma razão. sec++; }while (i==0);//condição para o loop infinito return 0; }
  16. JA86

    Problema na pesquisa

    Tenho um problema no meu codigo que é o seguinte , insiro um aluno, elimino o mesmo e depois volto a inserir com o mesmo nome outro aluno ele aparece na listagem, mas não me deixa pesquisar nem alterar. #include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h> #include <ctype.h> #include <locale.h> struct Alunos { char Nome[50]; char Idade[5]; char Numero[5]; char Nacionalidade[20]; char Turma[20]; char status; } reg; FILE *fp; /*prototipo das funcoes*/ void inserir (void); void pesquisar (void); void eliminar(void); void atualizar(void); void abrir(void); void listagem(void); int main(void) { setlocale(LC_ALL, "Portuguese"); char opcao[2], op; do{ do{ printf("\n\n\n\n\n\n\n"); printf("\t########################################################\n"); printf("\t# #\n"); printf("\t# Programa de Registo Alunos #\n"); printf("\t# #\n"); printf("\t########################################################\n\n\n"); printf("\n Escolha a Opção Pretendida \n\n"); printf("\n <I> - Inserir"); printf("\n <A> - Atualizar"); printf("\n <E> - Eliminar"); printf("\n <C> - Consultar"); printf("\n <L> - Listagem"); printf("\n <S> - Sair"); printf("\n\n\n Opção:"); gets(opcao); op=tolower(*opcao); } while(!strchr("iaeclsh",op)); switch(op){/*D*/ case 'i' : inserir(); break; case 'a' : atualizar(); break; case 'e' : eliminar(); break; case 'c' : consultar(); break; case 'l' : listagem(); break; case 's' : exit(0); } }while(1); } /*Declaração De Funções*/ void abrir(const char tipo[3]) { if((fp=fopen("alunos.dat", tipo))==NULL) {printf("\n Este Arquivo Não Pode Ser Aberto!!\n"); getch(); exit(1); } } void inserir(void) { //char *um="0"; abrir("ab+"); fseek(fp,0L, SEEK_END); do { printf("\n Digite o Nome do Aluno ou <EXIT> para sair:\n\n"); gets(reg.Nome); if ((strcmp(reg.Nome,"exit")!=0)&&(strcmp(reg.Nome,"EXIT")!=0)&&(strcmp(reg.Nome,"Exit")!=0)){ printf("\n Idade:"); gets(reg.Idade); printf("\n Numero:"); gets(reg.Numero); printf("\n Nacionalidade:"); gets(reg.Nacionalidade); printf("\n Turma:"); gets(reg.Turma); reg.status='1'; if(fwrite(&reg, sizeof(struct Alunos), 1, fp) != 1) { printf("\n Erro Na Gravação!!"); getch(); } else { printf("\n Gravação Efetuada Com Sucesso...\n\n");} } }while((strcmp(reg.Nome,"exit")!=0)&&(strcmp(reg.Nome,"EXIT")!=0)&&(strcmp(reg.Nome,"Exit")!=0)); fclose(fp); } int pesquisa (void){ int achou=-1,posicao=0; char Nome [40]; abrir("rb"); printf("\nDigite o Nome a Ser Pesquisado:"); gets(Nome); rewind(fp); while((!feof(fp))&&(achou==-1)) { fread(&reg, sizeof(struct Alunos), 1, fp); if (!feof(fp)) {if (strcmp(Nome, reg.Nome)==0) {if (reg.status=='0') {posicao=-2;} achou=1; } else{posicao++;} } else{posicao=-1;} } if (achou==-1) {posicao=-1;} fclose(fp); return(posicao); } void pesquisar(void){ int pos; pos=pesquisa(); if(pos==-1) { printf("\nAluno Não Existe!"); getch(); } else if(pos==-2) { printf("\nAluno Não Existe!"); getch(); } else { abrir("rb+"); fseek(fp,pos*sizeof(struct Alunos),SEEK_SET); fread(&reg, sizeof(struct Alunos), 1, fp); printf("\nNome:%s",reg.Nome); printf("\n Idade:"); gets(reg.Idade); printf("\n Numero:"); gets(reg.Numero); printf("\n Nacionalidade:"); gets(reg.Nacionalidade); printf("\n Turma:"); gets(reg.Turma); getch(); } fclose(fp); } void atualizar(void){ int posA; posA=pesquisa(); if (posA==-1) { printf("\nAluno Não Existe"); getch(); } else if(posA==-2) { printf("\nAluno Não Existe!"); getch(); } else { abrir("rb+"); fseek(fp,posA*sizeof(struct Alunos),SEEK_CUR); fread(&reg, sizeof(struct Alunos), 1, fp); printf("\nDeseja Atualizar o Seguinte Aluno..."); printf("\nAluno:%s",reg.Nome); printf("\nIdade:%s",reg.Idade); printf("\nNumero:%s",reg.Numero); printf("\nNacionalidade:%s",reg.Nacionalidade); printf("\nTurma:%s",reg.Turma); getch(); printf("\nInsira as Informações Correctas:"); printf("\nAluno:"); gets(reg.Nome); printf("\nIdade:"); gets(reg.Idade); printf("\nNumero:"); gets(reg.Numero); printf("\nNacionalidade:"); gets(reg.Nacionalidade); printf("\nTurma:"); gets(reg.Turma); reg.status='1'; fseek(fp,posA*sizeof(struct Alunos),SEEK_SET); if(fwrite(&reg, sizeof(struct Alunos),1, fp)!=1) { printf("\n Erro Na Gravação!!"); } else { printf("\nActualização Efetuada Com Sucesso"); getch(); } } fclose(fp); } void listagem(void) { int cont=0; abrir("rb"); fseek(fp, 0L, SEEK_SET); fread(&reg, sizeof(struct Alunos),1, fp); do { if (reg.status!='0') { printf("\nNome: %s",reg.Nome); printf("\nIdade: %s",reg.Idade); printf("\nNumero: %s",reg.Numero); printf("\nNacionalidade: %s",reg.Nacionalidade); printf("\nTurma: %s",reg.Turma); cont++; } fread(&reg, sizeof(struct Alunos),1, fp); }while(!feof(fp)); printf("\n#Quantidade de Alunos Presentes no Registo=%d",cont); getch(); } void eliminar(void){ int posE; posE=pesquisa(); if(posE==-1) { printf("\nAluno Não Existe!"); getch(); } else { if(posE==-2) { printf("\nAluno Eliminado do Registo!"); getch(); } else { abrir("rb+"); fseek(fp, posE*sizeof(struct Alunos), SEEK_SET); fread(&reg, sizeof(struct Alunos), 1, fp); printf("\nNome: %s",reg.Nome); printf("\nIdade: %s",reg.Idade); printf("\nNumero: %s",reg.Numero); printf("\nNacionalidade: %s",reg.Nacionalidade); printf("\nTurma: %s",reg.Turma); printf("\nEste Registro #%d sera excluido",(posE+1)); getch(); reg.status='0'; fseek(fp, posE*sizeof(struct Alunos), SEEK_SET); if(fwrite(&reg, sizeof(struct Alunos), 1, fp)!=1) { printf("\n Erro Na Gravação!!"); getch(); } else { printf("\n Eliminação Efetuada Com Sucesso...\n\n"); getch(); } } } fclose(fp); }
  17. TL_prog

    Vetores

    Boa Noite pessoal, Agradecia, se possível, a vossa ajuda. Sou novo na área da programação mais nomeadamente no C. Tenho um exercício para fazer que consiste em calcular o maior número, o menor número e a média que são indicados pelo utilizador e mostrar quais foram os valores. Neste momento, já consegui efectuar o cálculo da média, do maior e do menor valor, no entanto, não consigo fazer o código para indicar os valores que o utilizador introduziu, sei que tem de ser pelo método de vectores, mas esta a dar erro. Vou colocar abaixo o código, podem ajudar? #include <stdio.h> #include <stdlib.h> #define MAX 10 int main() { int NdNotas=0; float nota=0; int contador=0; float somatorio=0; float media=0; float maior=0; float menor=20; printf("quantas notas sao:"); scanf("%d",&NdNotas); if (NdNotas>MAX){ printf("no maximo %d notas",MAX); } else{ contador=NdNotas; while (contador>0){ do{ printf("insira o valor da nota: "); scanf("%f",&nota); if(nota>maior){ maior=nota; } if(nota<menor){ menor=nota; } }while (nota<0 || nota> 20); somatorio=somatorio+nota; contador--; } } media = (somatorio/NdNotas) ; printf("Media do aluno = %f\n",media); return 0; } Obrigado!
  18. typedef struct data_cliente client; struct data_client { char *subscription_list; }; void save_subscription(char topic_chosen[50]){ client c; int j; c.subscription_list = malloc(strlen(c.subscription_list) + 1); if(c.subscription_list == NULL){ printf("\n[ERROR] Memory allocation."); exit(0); } else{ strcpy(&c.subscription_list[strlen(c.subscription_list)], topic_chosen); } for(j=0; j<strlen(c.subscription_list); j++) printf(" %s", &c.subscription_list[j]); } Eu estou a tentar guardar uma string num array dinâmico de strings mas estou a ter alguns problemas. Eu só quero alocar algum espaço para uma string de cada vez e salvá-la, para que da próxima vez possa adicionar outra string ao array, mas manter as outras já adicionadas. O meu código neste momento está a salvar lixo juntamente com a string que eu pretendo e se eu tentar adicionar uma segunda string ao array, a primeira desaparece. Alguém me pode ajudar?
  19. Guest

    Calcular maior valor linha matriz

    Como posso tirar o valor mais alto de cada atleta? e trocar a media do atleta pela media dos tempos 1 dos tempos 2 . . . #include <stdio.h> #define MAX_ATLETAS 3 #define MAX_REGISTOS_TEMPO 5 void inserirTempos(float tabelaTempos[][MAX_REGISTOS_TEMPO]){ for (int atletaAtual = 0; atletaAtual < MAX_ATLETAS; atletaAtual++){ for (int registoAtual = 0; registoAtual < MAX_REGISTOS_TEMPO; registoAtual++){ printf("Insira o tempo %d do atleta %d:", registoAtual + 1, atletaAtual + 1); scanf("%f", &(tabelaTempos[atletaAtual])[registoAtual]); } } } float calcMedia(float tabelaTempos[][MAX_REGISTOS_TEMPO], float media[]){ for (int atletaAtual = 0; atletaAtual < MAX_ATLETAS; atletaAtual++){ for (int registoAtual = 0; registoAtual < MAX_REGISTOS_TEMPO; registoAtual++){ media[atletaAtual] += tabelaTempos[atletaAtual][registoAtual]; } media[atletaAtual] /= (float)MAX_REGISTOS_TEMPO; } return 0; } void printarMedia(float media[]){ for (int mediaAtual = 0; mediaAtual < MAX_ATLETAS; mediaAtual++){ printf("A média de tempo do atleta %d é:%.2f.\n", mediaAtual + 1, media[mediaAtual]); } } int main(){ float tabelaTempos[MAX_ATLETAS][MAX_REGISTOS_TEMPO]; float media[3]; inserirTempos(tabelaTempos); calcMedia(tabelaTempos, media); printarMedia(media); return 0; }
  20. Guest

    Calcular média de colunas de matrix

    Boa tarde, Estou a tentar desenvolver um programa para calcular a media de cada coluna de uma matriz tenho o seguinte codigo abaixo e já tentei varias maneiras de calcular e não consigo, agradeço desde ja a ajuda. #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { float TabelaT [3][5]; int J,T; printf(" Introduza Os Tempos Dos Atletas 1,2 e 3 %dx%d: \n", 5,3); for(J=0; J<2; J++) { for(T=0; T<4; T++) { scanf("%d", &TabelaT[3][5]); } } return 0;
  21. rsd_17

    If para criar linklabels

    Ola, estou a tentar desenvolver um exercicio e preciso colocar um linklabel se na base de dados nao tiver nada para preencher aquela coluna. Estou a pensar fazer um if no index do controller criado faço : public async Task<IActionResult> Index(IFormCollection collection) { if (string.IsNullOrEmpty(collection["significado"]) == true)) { //So nao sei o q colocar aqui } return View(await _context.Sigla.ToListAsync()); } Tenho q criar tipo tenho uma tabela na base de dados com o ID , o Nome e o significado das siglas ex, nome scp significado sporting clube de portugal entao na pagina web aparece : Nome Significado scp sporting clube de portugal AL Defenir Mas por exemplo no Al --> defenir como o significado é = null eu qero q na pagina apareca um Defenir no lugar e me deixe inserir qual o significado Alguem me da uma ajuda?
  22. trippietiago

    Vencimento final de um colaborador

    Olá a todos, tenho uma dúvida. Sou iniciante em programação e foi me pedido para a faculdade a resolução de um exercício em que o enunciado é este: Numa empresa o vencimento dos colaboradores é calculado a partir de um vencimento base (VB) e tem em consideração a sua idade (ID), número de filhos (NF) e anos de serviço (AS). O cálculo do salário final é feito de acordo com as seguintes parcelas: •1% de VB para cada ano de ID superior a 25; •3% por cada ano de serviço até perfazer 5 anos; sendo 5% por cada ano extra; •2% por cada filho, considerando o valor mínimo de 2 filhos. Até agora só tenho isto, preciso de ajuda urgente! Obrigado pela atenção. #include <stdio.h> #include <stdlib.h> int main(int argc, char** argv) { int VF, VB, ID, NF, AS; printf("digite a idade do colaborador: "); scanf("%d", &ID); printf("digite o vencimento base do colaboradorr: "); scanf("%d", &VB); printf("digite o número de filhos do colaborador: "); scanf("%d", &NF); printf("digite os anos de serviço do colaborador: "); scanf("%d", &AS); if (ID > 25) return (EXIT_SUCCESS); }
  23. Américo

    Dúvidas num programa em c.

    Boas, estou iniciando na linguagem c, e não estou perecebendo o erro nesse programa. O programa chega a numa parte e não imprime na tela. Se possivel ajuda. int a,b; char soma,sub,mult,div,resto,c; printf("Introduza dois numeros\n"); scanf("%d%d",&a,&b); printf("Qual a operacao que pretende fazer?\n a-adicao\n s-subtracao\n m-multiplicacao\n d-divisao\n r-resto\n"); scanf("%c",&c); switch (c) { case 'a': printf("A soma de %d com %d e %d",a,b,a+b); break; case 's': printf("A subtracao de %d com %d e %d",a,b,a-b); break; case 'm': printf("A multiplicacao de %d com %d e %d",a,b,a*b); break; case 'd': printf("A divisao de %d com %d e %d",a,b,a/b); break; case 'r': printf("O resto de %d com %d e %d", a,b,a%b); break; } }
×
×
  • 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.