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,010 results

  1. 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); }
  2. 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!
  3. TL_prog

    Modificar valor em txt

    Boa noite pessoal, Estou a desenvolver um trabalho em C para faculdade, que visa, a criação de um arquivo em txt Já fiz tudo direitinho, no entanto, queria fazer um void Modificar. Isto é, um menu que permita modificar um valor em no TXT. Alguem tem alguma ideia? Obrigado!
  4. 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...
  5. 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.
  6. 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?
  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. 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; }
  9. 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;
  10. 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?
  11. 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
  12. 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); }
  13. 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"); }
  14. 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.
  15. 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"); }
  16. 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); }
  17. 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; } } }
  18. 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
  19. 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; } }
  20. RVicente

    Geração do executável (ELF) em CMake

    Olá a todos, Estou a construir uma Toolchain para cross-compiling num ARM Cortex-M4 através do CMake, usango o gcc-arm-none-eabi. Defini o ficheiro da Toolchain com os respetivos caminhos para os compiladores, e com as flags do compilador. #--------------------------------------------------------------------------------------------------------------------- # Targets #--------------------------------------------------------------------------------------------------------------------- set(CMAKE_SYSTEM_NAME Generic) set(CMAKE_SYSTEM_PROCESSOR ARM) # set(CMAKE_SYSTEM_VERSION ) #--------------------------------------------------------------------------------------------------------------------- # Set compilers #--------------------------------------------------------------------------------------------------------------------- set(CMAKE_C_COMPILER ${ARM_GCC}) set(CMAKE_CXX_COMPILER ${ARM_G++}) set(CMAKE_ASM_COMPILER ${ARM_AS}) set(CMAKE_AR ${ARM_AR}) (...) set(CMAKE_C_FLAGS_INIT "-O0 -g0 \ -mcpu=cortex-m4 \ -mthumb \ -mabi=aapcs \ -Wall \ -Wextra \ -mfloat-abi=hard \ -mfpu=fpv4-sp-d16 \ -ffunction-sections \ -fdata-sections \ -fno-strict-aliasing \ -fno-builtin \ -fshort-enums" ) set(CMAKE_ASM_FLAGS "-g0 \ -mcpu=cortex-m4 \ -mthumb \ -mabi=aapcs \ -mfloat-abi=hard \ -mfpu=fpv4-sp-d16" ) set(CMAKE_EXE_LINKER_FLAGS_INIT "-O0 -g0 \ -mcpu=cortex-m4 \ -mthumb \ -mabi=aapcs \ -mfloat-abi=hard \ -mfpu=fpv4-sp-d16 \ -Wl,--gc-sections \ --specs=nano.specs \ --specs=nosys.specs" ) No ficheiro CMakeLists.txt tenho mais algumas definições para o compilador, e o caminho para o Linker Script, uma biblioteca construida a partir do SDK e depois o processo de linkagem: (...) add_executable(main main.c) target_link_libraries(main sdk_lib) add_custom_command( TARGET main POST_BUILD COMMAND ${ARM_OBJCOPY} -O ihex ${CMAKE_CURRENT_BINARY_DIR}/main ${CMAKE_SOURCE_DIR}/main.hex ) O Custom Command gera o .hex a partir do .elf gerado no add_executable(). Aparentemente está tudo a funcionar, mas quando analiso o .hex percebi que praticamente não tem informação. Depois de alguma pesquisa percebi que o próprio .elf não tem o conteúdo que é suposto e começo a desconfiar de um possível problema. Uma vez que no processo de compilação em sistemas embebidos, os ficheiros objecto são gerados e depois linkados para construir um ficheiro final que pode ser corrido no dispositivo, desconfio que o linker não estará a ser chamado, pois os ficheiros objecto para cada source está a ser gerado. Reparei também que na compilação, o compilador que é chamado é o expectável /opt/gcc-arm-none-eabi-8-2019-q3-update/bin/arm-none-eabi-gcc mas o linker assume um caminho estranho, que o CMake encontrou por algum motivo /opt/gcc-arm-none-eabi-8-2019-q3-update/bin/../lib/gcc/arm-none-eabi/8.3.1/../../../../arm-none-eabi/bin/ld Naturalmente este pertence à pasta da toolchain do GCC, mas deixa-me sem saber se este funciona de igual modo ao presente na outra pasta. Resumindo a minha questão, alguém consegue ter uma ideia do que poderá estar a acontecer quando ao ficheiro .elf não conter a informação correcta, e também esta questão do Linker? Obrigado. (Link para o GitHub, embora já tenha feito pequenas alterações/experiências https://github.com/NunoRVicente/cmake-arm-toolchain)
  21. 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; }
  22. Gabriel Vinicius Paffrath

    Jogo de Senha

    Pessoal, preciso de um projeto para linguagem C. Um jogo de senha onde o player 1 digita 4 letras entre (a,b,c,d,e,f) sem repetir em qualquer ordem. O player 2 tenta encontrar a sequencia digitada e na ordem digitada. para cada tentativa o programa retorna “x” ou “o”. ”o” - Acertar a letra mais errou a posicao ”x” - Acertar letra e posição maximo 10 tentativas.
  23. LegaliZe

    Duvida: Maximo e Minimo de N numeros

    Exercicio: Desenhe um algoritmo que resolva o seguinte problema. Pretende-se determinar o maior e o menor número duma sequência de N números inteiros dados pelo utilizador. O valor de N deverá ser superior ou igual a 2. Se não for o seu valor deverá ser pedido novamente até ser introduzido um valor válido.A introdução de números deverá terminar quando forem inseridos N números. Nessa altura a aplicação deverá mostrar o valor máximo e mínimo de entre os valores introduzidos. #include <stdio.h> int main () { int N, j, max , min , i; do { printf ("Introduza o numero de inteiros: \n"); scanf ("%d", &N); } while (N<2); scanf("%d",&j); max =j; min =j; for (i=1;i<=N-1;i++); { printf ("Introduza um inteiro: \n"); scanf ("%d", &j); if (j>max) max=j; if (j<min) min=j; } printf ("Min=%d , Max=%d \n", min, max); } Este programa foi feito pelo professor como resposta ao exercicio mas acho que nao esta a fazer bem o ciclo do-while ja tive a tentar ver o problema receio que tenha a ver com a variavel j mas não sei o porque
  24. henry

    Converter C para Python

    Olá, sou um principiante na linguagem Python e estou com dificuldade para converter este código para o Python. Eu não farei uso do Python para o futuro, porém preciso excepcionalmente deste código em Python. Existe algum conversor Online para isso? Agradeço. O código: #include <stdio.h> int main(void) { int pos[3], neg[3], posCount = 0, negCount = 0; for (int i = 0; i < 3; i++) { int valor; printf("Informe um valor: "); scanf("%d", &valor); if (valor < 0) neg[negCount++] = valor; else pos[posCount++] = valor; } printf("Os números positivos digitados foram: "); for (int i = 0; i < posCount; i++) printf("%d ", pos); printf("\nOs números negativos digitados foram: "); for (int i = 0; i < negCount; i++) printf("%d ", neg);
×
×
  • 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.