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
    • 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 4,888 results

  1. trippietiago

    Problema em alocação de memória

    Olá a todos, sou iniciante em programação e foi me pedido para a faculdade a construção de um projeto em que envolva um campeonato com 18 equipas, cada equipa com o seu número de jogadores e membros da equipa técnica e as funções pedidas estão relacionadas com a alocação de memoria das equipas, dos jogadores e dos membros. Já fiz a maior parte do trabalho no entanto quando passo do 1o menu, recebo um erro "Run Failed exit value 1" e sem receber erros no codigo em si. Aqui em baixo está um excerto do trabalho, alguém consegue ajudar-me ? #define MAX_INT 30 #define TAM_INICIAL 1 #define TAM_INCREMENTO 3 #define N_EQUIPAS 18 #ifdef __cplusplus extern "C" { #endif typedef struct Jogadores { char nome[MAX_STR]; int nc; //numero da camisola int idade; int durContrato; int altura; int peso; int dispTransf; // 1 - disponivel, 2 - indisp int cartoes; //4 amarelos - ind. prox jogo int dispJogo; //1 - lesionado, 2 - indisp } JOGADOR; typedef struct EquipasTecnicas { char cargo[MAX_STR]; int salario; } EQTEC; typedef struct Clubes { char nomeDiretor[MAX_STR]; char nome[MAX_STR]; int idclube; int realizado; //1 se já se realizou / 0 se ainda n se realizou int pontuacao; int capital; int ngm, ngs; //n golos marcados / n golos sofridos JOGADOR jogador[MAX_INT]; EQTEC eqtec[MAX_INT]; } CLUBE; typedef struct Jogos { int dia, mes, ano; int resultadoEqCasa, resultadoEqFora; int nadeptos; CLUBE *c1, *c2; int pbilhete; //preço medio dos bilhetes } JOGO; typedef struct Ligas { CLUBE clube[18]; JOGO *jogo; } LIGA; /** * Aloca inicialmente a memória necessária para as equipas inseridas na liga * * @param clube apontador duplo para o array de clubes * @param tam_max apontador para o tamanho máximo de clubes * return 1 em caso de sucesso, 0 caso contrário */ int alocaEquipas(CLUBE **clube, int *tam_max) { int res = 1; *clube = (CLUBE *) malloc(N_EQUIPAS * sizeof (CLUBE)); if (*clube == NULL) { printf("Erro ao alocar memória.\n"); res = 0; } else { *tam_max = TAM_INICIAL; } return res; } //erro RUN FAILED /** * Adiciona um clube à liga, se esta não estiver já cheia * * @param liga apontador para a liga * @param quantos apontador para o número atual de equipas inscritas na liga */ void adicionaEquipa(LIGA *liga, int *quantos) { LIGA *novo; int idclube, pos; readInt(&idclube, 1, 18, "Digite o ID do clube: "); pos = pesquisaEquipa(liga, *quantos, idclube); if (pos == -1) { if (*quantos == N_EQUIPAS) { printf("Limite de clubes inscritos na liga atingido.\n"); } else { leEquipa(liga, quantos, idclube); } } else { printf("ID de clube já existente.\n"); } } void leEquipa(LIGA *liga, int *pos, int idclube) { liga->clube[*pos].idclube = idclube; readString(liga->clube[*pos].nome, (MAX_STR - 1), "Nome da equipa: "); liga->clube[*pos].pontuacao = 0; (*pos)++; } int pesquisaEquipa(LIGA *liga, int quantos, int idclube) { int i = 0; while (i < quantos && (*liga).clube[i].idclube != idclube) { i++; } if (i == quantos) { return -1; } else { return i; } }
  2. Manuel Jorge

    textBox Selecionada

    Olá!!! Ao iniciar o meu projecto no c#, o cursor aparece logo a piscar na textbox... como faço para não habilitar de imediato a textbox?
  3. francisco esley

    Pesquisa em arquivo .txt

    Estou fazendo um trabalho da faculdade que é pedido para fazer um sistema de cadastro de livros de uma biblioteca, toda a parte de cadastro já está pronta porém falta a parte de pesquisa que é onde não sei como fazer pois sou novato na área de linguagem C estou deixando meu código aqui para que possa dar uma olhada e quem sabe me ajudar a como fazer uma pesquisa em um arquivo .txt #include <stdio.h> #include <stdlib.h> void menu(){ printf ("\n\n1 - Cadastrar\n"); printf ("2 - Listar todos os livros.\n"); printf ("3 - Listar todas as revistas.\n"); printf ("4 - Listar as obras por caixa.\n"); printf ("0 - Sair\n"); } FILE* AbreArquivo(char modo, char caminho[100]){ FILE *arquivo; switch(modo){ case 'g': arquivo = fopen(caminho,"wt"); break; case 'l': arquivo = fopen(caminho,"rt"); break; case 'a': arquivo = fopen(caminho,"a"); break; } if(arquivo==NULL){ printf("Nao foi possivel abrir o arquivo"); exit(0); } return arquivo; } void FecharArquivo(FILE *arquivo){ fclose(arquivo); } void Cadastra(char titulo[1000],char editora[1000], char autor[1000], int caixa, int ano, int ISBN){ FILE *arquivo; arquivo = AbreArquivo('a', "livros.txt"); fprintf(arquivo, "%s %s %s %d %d %d\n\n", titulo, autor, editora, caixa, ano, ISBN); FecharArquivo(arquivo); } void CadastraRevista(char titulo[70],char editora[70], char autor[70], int caixa, int ano, int ISBN){ FILE *arquivo; arquivo = AbreArquivo('a', "revistas.txt"); fprintf(arquivo, "%s %s %s %d %d %d\n\n", titulo, autor, editora, caixa, ano, ISBN); FecharArquivo(arquivo); } void Listar(){ FILE *arquivo; char titulo[1000]; char autor[1000]; char editora[1000]; int caixa; int ano; int ISBN; arquivo = AbreArquivo('l',"livros.txt"); printf("\t\t\t\t\t\tListando Livros....\n\n"); while(!feof(arquivo)){ fscanf(arquivo,"%1000[^\n] %1000[^\n] %1000[^\n] %d %d %d\n", &titulo, &autor, &editora, &caixa, &ano, &ISBN); setbuf(stdin,NULL); for(int i=0; i<120; i++)printf ("*"); printf("\nTitulo: %s\n \nAutor: %s\n \nEditora: %s\n \nCaixa: %d\n \nAno: %d\n \nISBN: %d\n\n", titulo, editora, autor, caixa, ano, ISBN); } FecharArquivo(arquivo); } void ListarRevista(){ FILE *arquivo; char titulo[1000]; char autor[1000]; char editora[1000]; int caixa; int ano; int ISBN; arquivo = AbreArquivo('l',"revistas.txt"); printf("\t\t\t\t\t\tListando Revistas....\n\n"); while(!feof(arquivo)){ fscanf(arquivo,"%70[^\n] %70[^\n] %70[^\n] %d %d %d\n", &titulo, &autor, &editora, &caixa, &ano, &ISBN); setbuf(stdin,NULL); for(int i=0; i<120; i++)printf ("*"); printf("\nTitulo: %s\n \nAutor: %s\n \nEditora: %s\n \nCaixa: %d\n \nAno: %d\n \nISBN: %d\n\n", titulo,editora ,autor , caixa, ano, ISBN); } FecharArquivo(arquivo); } int main(){ char titulo[1000]; char autor[1000]; char editora[1000]; int caixa; int ano; int ISBN; int opcao; int opcao2; int voltar; topo: do{ menu(); printf("\nDigite uma opcao: "); scanf("%d", &opcao); setbuf(stdin,NULL); system("cls"); if (opcao == 1 ){ printf("\t\t\t\t\t\tOBS:NAO USAR ACENTOS\n"); printf("\nDigite 1 para livros ou 2 para revistas: "); scanf("%d", &opcao2); system("cls"); }else{ goto listagem; } Cad: switch(opcao2){ case 1: printf("\t\t\t\t\t\tCadastrando Livros...\n\n"); printf("\nDigite o titulo: "); setbuf(stdin,NULL); fgets(titulo, 1000, stdin); printf("\nDigite o autor: "); setbuf(stdin,NULL); fgets(autor,1000, stdin); printf("\nDigite o editora: "); setbuf(stdin,NULL); fgets(editora, 1000, stdin); printf("\nDigite a caixa: "); scanf("%d", &caixa); printf("\nDigite o ano: "); scanf("%d", &ano); printf("\nDigite o ISBN: "); scanf("%d", &ISBN); Cadastra(titulo, autor, editora, caixa, ano, ISBN); printf("\n Digite 1 para continuar cadastrando e 2 para voltar ao menu: "); scanf("%d", &voltar); if(voltar==2){ system("cls"); goto topo; }else{ system("cls"); goto Cad; } system("cls"); break; case 2: printf("\t\t\t\t\t\tCadastrando Revistas...\n\n"); printf("\nDigite o titulo: "); setbuf(stdin,NULL); fgets(titulo, 100, stdin); printf("\nDigite o autor: "); setbuf(stdin,NULL); fgets(autor,70, stdin); printf("\nDigite o editora: "); setbuf(stdin,NULL); fgets(editora, 70, stdin); printf("\nDigite a caixa: "); scanf("%d", &caixa); printf("\nDigite o ano: "); scanf("%d", &ano); printf("\nDigite o ISBN: "); scanf("%d", &ISBN); CadastraRevista(titulo, autor, editora, caixa, ano, ISBN); printf("\n Digite 1 para continuar cadastrando e 2 para voltar ao menu: "); scanf("%d", &voltar); if(voltar==2){ system("cls"); goto topo; }else{ system("cls"); goto Cad; } system("cls"); break; } }while(opcao!=0); listagem: switch(opcao){ case 2: Listar(); system("pause"); system("cls"); goto topo; break; case 3: ListarRevista(); system("pause"); system("cls"); goto topo; break; case 4: printf("Opcao nao funcional!\n\n"); system("pause"); system("cls"); goto topo; case 0: printf("Finalizando......\n\n"); system("pause"); exit(0); default: printf("Erro "); system("pause"); system("cls"); goto topo; } return 0; }
  4. francisco esley

    Problemas com a Linguagem C

    Estou realizando um trabalho onde é pedido isso: O sistema a ser construído necessitará atender aos requisitos funcionais abaixo: 1 - Possuir a sua identificação (RA-Nome-Curso) 2 - Possuir um menu de opção. 2.1 - Incluir o registro das obras. 2.2 - Listar todos os livros. 2.3 - Listar todas as revistas. 2.4- Listar as obras por caixa. Porém o meu código está com um problema de que quando eu dou um espaço na hora de cadastrar, ele armazena a informação correta porém lê de forma errada.Suponhamos que eu queira cadastrar o título e o autor de uma certa obra, tenho então os campos Autor e Título do livro do livro, certo? Porém quando dou um espaço entre primeiro e segundo nome eles ficam separados na hora da leitura do arquivo txt, por exemplo: ao invés de ficar "Autor: Francisco Esley (meu nome) e Título do livro: Engenharia de software", ele lê certo até o espaço e depois vai para a outra variável ficando assim: "Autor: Francisco Título do livro: Esley". Não sei mais o que fazer... Aqui está o código que desenvolvi para darem uma olhada: void menu(){ printf ("\n\n1 - Cadastrar\n"); printf ("2 - Listar todos os livros.\n"); printf ("3 - Listar todas as revistas.\n"); printf ("4 - Listar as obras por caixa.\n"); printf ("0 - Sair\n"); } FILE* AbreArquivo(char modo, char caminho[100]){ FILE *arquivo; switch(modo){ case 'g': arquivo = fopen(caminho,"wt"); break; case 'l': arquivo = fopen(caminho,"rt"); break; case 'a': arquivo = fopen(caminho,"a"); break; } if(arquivo==NULL){ printf("Nao foi possivel abrir o arquivo"); exit(0); } return arquivo; } void FecharArquivo(FILE *arquivo){ fclose(arquivo); } void Cadastra(char titulo[70],char editora[70], char autor[70], int caixa, int ano, int ISBN){ FILE *arquivo; arquivo = AbreArquivo('a', "mapa.txt"); fprintf(arquivo, "%s %s %s %d %d %d\n", titulo, autor, editora, caixa, ano, ISBN); FecharArquivo(arquivo); } void CadastraRevista(char titulo[70],char editora[70], char autor[70], int caixa, int ano, int ISBN){ FILE *arquivo; arquivo = AbreArquivo('a', "mapa.txt"); fprintf(arquivo, "%s %s %s %d %d %d\n", titulo, autor, editora, caixa, ano, ISBN); FecharArquivo(arquivo); } void Listar(){ FILE *arquivo; char titulo[70]; char autor[70]; char editora[70]; int caixa; int ano; int ISBN; arquivo = AbreArquivo('l',"mapa.txt"); while(!feof(arquivo)){ fscanf(arquivo,"%s %s %s %d %d %d ", &titulo, &autor, &editora, &caixa, &ano, &ISBN); setbuf(stdin,NULL); for(int i=0; i<120; i++)printf ("*"); printf("\n\nTitulo: %s - Autor: %s - Editora: %s - Caixa: %d - Ano: %d - ISBN: %d\n\n\n", titulo,editora ,autor , caixa, ano, ISBN); } FecharArquivo(arquivo); } int main(){ char titulo[70]; char autor[70]; char editora[70]; int caixa; int ano; int ISBN; int opcao; menu(); do{ printf("\nDigite uma opcao: "); scanf("%d", &opcao); system("cls"); switch(opcao){ case 1: printf("\nDigite o titulo: "); setbuf(stdin,NULL); scanf("%[^\n]s",titulo); printf("\nDigite o autor: "); setbuf(stdin,NULL); fgets(autor,70, stdin); printf("\nDigite o editora: "); setbuf(stdin,NULL); fgets(editora, 70,stdin ); printf("\nDigite a caixa: "); scanf("%d", &caixa); printf("\nDigite o ano: "); scanf("%d", &ano); printf("\nDigite o ISBN: "); scanf("%d", &ISBN); Cadastra(titulo, autor, editora, caixa, ano, ISBN); system("pause"); break; case 2: Listar(); system("pause"); break; case 3: Listar(); system("pause"); break; case 4: Listar(); system("pause"); break; case 5: printf("Finalizando......\n"); system("pause"); exit(0); default: printf("\n\nOpcao invalida! Tente Novamente!\n\n"); system("pause"); } }while(opcao!=3); return 0; }
  5. Thegodone

    Variáveis

    Boas sou um mero novato, comecei a ler um livro de C e surgiu me uma duvida. Existe alguma maneira de criar uma variável dentro de uma instrução?!E se sim como Para ficar mais explicito aqui fica um exemplo. Sei que o que escrevi está errado, e por isso, gostaria de saber se há alguma maneira de fazer o que pretendo sem usar if's #include <stdio.h> #include <stdlib.h> int main() { float num; int casas; printf("Escolha um numero - "); scanf("%f",&num); printf("Esclha o numero de casas decimais - "); scanf("%i",&casas); printf("%.casasf",num); }
  6. Daniel Abano

    Achar a data mais recente

    Boas, tenho um projeto de programação no qual me pede numa determinada função para mostrar a data mais recente(relativamente ás data inseridas numa outra funçao), tenho ja a data numa estutura, assim fiz a soma do dia mês e ano e comparei esse valor da soma com um valor maximo completamente absurdo, tudo funciona mas agora não sei como acho a data a qual a soma do dia mes e ano corresponde.Obrigado int hora_maximo=999999 for(i=0; i<total_viaturas; i++) { data=viaturas.dataregisto.ano+viaturas.dataregisto.mes+viaturas.dataregisto.dia if(data<hora_maximo) { hora_maximo=data; } } printf("\nData mais recente: %d",hora_maximo); no printf final devia ser suposto aparecer a data mais recente, sendo que precisava de testar se a soma estava a funcionar corretamente entao inseri nono printf hora_max Ps: Objetivo é mostar a data mais recente depois de a achar atraves da soma e comparacao das mesmas datas inseridas no programa.
  7. Rodrigo_D

    Ciclo infinito no while

    Boa tarde, sou um pouco novo na programação, pelo menos em C. Estou a tentar criar um programa, em que no inicio mostra um menu ao utilizador, que consiste num do...while, que le um inteiro, e um switch lá dentro. Funciona perfeitamente para ler e verificar o inteiro, o problema é quando se escreve alguma letra ou outro caracter para alem de um numero, que fica preso num ciclo infinito mostrando a mensagem default do ciclo switch. O código é o seguinte: int op; printf("Escolha uma das seguintes opcoes:\n 1. opcao 1\n 2. opcao 2\n 3. opcao 3\n"); do{ scanf("%d", &op); switch(op){ case 1: (instrução); break; case 2: (instrução); break; case 3: (instrução); break; default: printf("\nPor favor introduza um valor valido\n"); } }while(op<1 || op>3); Se alguem me poder esclarecer o erro agredicia imenso. Rodrigo Duarte
  8. RafaTheMen

    ANSWERED Inicializar um array de structs!

    Boa noite, estou a fazer um programa o qual necessita de um array com elementos do tipo Filme. Estou a ter um problema em inicializar esse array de Filmes e não consigo perceber o que estou a fazer de errado. Está fora de questão, inicializar o array fazendo, por exemplo, Filme lista[10]. Eu quero inicializa-lo usando malloc. Percisava que alguém, além de me dizer onde está o meu erro, me explica-se, por favor, o que estou a fazer mal e se possivel de forma a que eu nunca mais tenha um problema do genero, pois é recorrente estes tipo de erro. CODIGO: #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct movie{ int codigo; char titulo[50]; char genero[20]; char realizador[50]; int ano; int duracao; } Filme; int tam = 10; int nFilmes = 0; Filme *lista = (Filme*) malloc(tam*sizeof(Filme)); <<<<<<-------O ERRO DÁ AQUI! //1º Requisito int addFilme(int code, char* title, char* genere, char* autor, int year, int time){ if(nFilmes<((tam*75)/100)){ lista[nFilmes].codigo = code; strcpy(lista[nFilmes].titulo,title); strcpy(lista[nFilmes].genero,genere); strcpy(lista[nFilmes].realizador,autor); lista[nFilmes].ano = year; lista[nFilmes].duracao = time; nFilmes++; }else{ lista = realloc(lista,tam*2); if(lista == NULL){ printf("Ocorreu um erro a alocar memória!\n"); exit(1); } tam = tam*2; lista[nFilmes].codigo = code; strcpy(lista[nFilmes].titulo,title); strcpy(lista[nFilmes].genero,genere); strcpy(lista[nFilmes].realizador,autor); lista[nFilmes].ano = year; lista[nFilmes].duracao = time; nFilmes++; } return 0; } void inserirFilme(){ int codigo, ano, duracao; char titulo[50], realizador[50], genero[20]; printf("Nome do filme: "); scanf("%[^\n]",titulo); printf("Genero: "); scanf("%[^\n]",genero); printf("Realizador: "); scanf("%[^\n]",realizador); printf("Ano: "); scanf("%d",&ano); printf("Duração: "); scanf("%d",&duracao); if(addFilme(codigo, titulo,genero,realizador,ano,duracao) == 0){ printf("Filme adicionado com sucesso!\n"); }else{ printf("Ocorreu um erro na inserção!\n"); } } //4º Requisito void listaFilmesRealizadorTempo(char* nome, int tempo){ printf("Código\tTitulo\t\tRealizador\t\tGenero\t\tAno\t\tDuração\n"); for(int i=0; i<nFilmes; i++){ if((strcmp(lista[i].realizador,nome) == 0) && (lista[i].duracao > tempo)){ printf("Código: %d\n",lista[i].codigo); printf("Titulo: %s\n",lista[i].titulo); printf("Realizador: %s\n",lista[i].realizador); printf("Genero: %s\n",lista[i].genero); printf("Ano: %d\n",lista[i].ano); printf("Duração: %d\n",lista[i].duracao); } } } int main(){ char tipo[20]; char realizador[50]; int time; inserirFilme(); inserirFilme(); inserirFilme(); printf("Digite o realizador e a duração minima dos filmes a pesquisar!\n"); printf("Nome do realizador: "); scanf("%[^\n]",realizador); printf("DUração minima do filme: "); scanf("%d",&time); listaFilmesRealizadorTempo(realizador, time); return 0; } O erro que me é devolvido é: error: initializer element is not constant Aguardo a vossa ajuda o quanto antes, por favor. Cumprimentos a todos
  9. rasptty

    Cartão de Cidadão

    Boa Tarde Estou a tentar desenvolver uma aplicação para ler os dados do cartão de cidadão em Visual Foxpro, ou ler uma DLL ou ocx externa no VisualFox Pro, para ler o cartão de cidadão, será que alguém tem ou fez algo do género,
  10. Diogo Carlos Almeida

    menus e sub menus

    estava a criar um projecto final de modulo e preciso usar ficheiros em linguagem c sobre qualuer assunto ou tema, até ai ok e surgio-me a necessidade de criar um sub menu para o menu inicial por exemplo um programa sobre as ligas de footbol portuguesas como menu (primeira liga ,liga nos,etc) e dentro das ligas as equipas. sendo que assim que seleciono uma opçao no menu "inicial" o programa fecha sem abrir o sub menu meu programa aqui: #include <stdio.h> #include <cstdlib> main() { int opcao; int opcaot; int opcaog; int opcaol; FILE *f; char c; printf("Menu:\n"); printf("1) Tour de France\n"); printf("2) Giro D'Italia'\n"); printf("3) La Vuelta\n"); printf("4) Sair\n "); scanf("%c", &opcao); switch(opcao) { case '1': switch(opcaot) { printf("Tour de France\n"); printf("1-tabela geral - camisola amarela\n"); printf("2-tabela de pontos - camisola verde\n"); printf("3-tabela da montanha - camisola da montanha\n"); printf("4-tabela da juventude - camisola branca\n"); printf("5-tabela de equipas\n"); printf("6-ciclista mais combativo - camisola vermelha\n"); scanf("%c", &opcaot); system("close"); break; case '2': printf("Giro D'Italia\n"); switch(opcaog) { printf("Giro DItalia\n"); printf("1-tabela geral - camisola amarela\n"); printf("2-tabela de pontos - camisola verde\n"); printf("3-tabela da montanha - camisola da montanha\n"); printf("4-tabela da juventude - camisola branca\n"); printf("5-tabela de equipas\n"); printf("6-ciclista mais combativo - camisola vermelha\n"); scanf("%c", &opcaog); system("close"); break; break; case '3': printf("La Vuelta\n"); switch(opcaol) { printf("La Vuelta\n"); printf("1-tabela geral - camisola amarela\n"); printf("2-tabela de pontos - camisola verde\n"); printf("3-tabela da montanha - camisola da montanha\n"); printf("4-tabela da juventude - camisola branca\n"); printf("5-tabela de equipas\n"); printf("6-ciclista mais combativo - camisola vermelha\n"); scanf("%d",&opcaol); system("close"); break; } break; case '4': printf("O programa sera encerrado\n"); break; system("close"); break; } } } }
  11. askazy

    Triângulo de Pascal

    Boa tarde, bom o exercício é pra construir o triângulo de pascal, de 3 maneiras: 1) Usando matriz 2) Usando 2 vetores 3) Usando 1 vetor Usando matriz eu consegui fazer: #include <stdio.h> int main () { int n,i,j,mat[10][10]; scanf ("%d",&n); for (i=0; i<n; i++) { for (j=0; j<n; j++) { mat[i][j]=0; } } for (i=0; i<n; i++) { mat[i][0]=1; } for(i=1; i<n; i++) { for (j=1; j<n; j++) { mat[i][j]=mat[i-1][j]+mat[i-1][j-1]; } } for (i=0; i<n; i++) { for (j=0; j<n; j++) { if (mat[i][j]!=0) printf ("%d ",mat[i][j]); } printf ("\n"); } return 0; } Mas usando 2 vetores e 1 vetor, estou com dificuldades.
  12. Boas a todos, tenho este programa que quero que introdusa numeros aleatorio de um certo valor a outro valor, penssei que estava a fazer tudo certo mas quando dou run nao aparece nada nem nenhum erro. Obrigado desde já pela atenção. #include <stdio.h> #include <stdlib.h> int main() { float Meses[12][4]; int i,c,b; int min=-1000,max=1000,intervalo; intervalo = max -min; for (i=0;i<c;i++) { for (b=0;b<1;b++) { Meses[i][b]=rand()%intervalo; } } //matrix for (i=0;i<12;++i) { for (b=0;b<4;++b) { printf("%.2f",Meses[i][]b); } printf("\n"); } return 0; }
  13. Boa tarde a todos. Gostaria de saber se existe alguma forma de colocar a primeira letra de um nome em maiúscula, numa so string. Exemplo, caso o utiliador escreva manuel silva, o resultanho venha Manuel Silva. Obrigado desde já.
  14. Olá, neste momento tenho dificuldade em começar um projeto que consiste em: Simular um portão usando protocolo I2C (Arduíno Master e Arduíno Slave), motor DC e 2 botões (um para abrir e outro para fechar). A realidade é que não me dou lá muito bem com eletrônica mas queria apenas que me ajudassem a começar e a entender o que tenho que fazer.
  15. JOAOBERNARD070

    ANSWERED Jogo da Velha

    Boas tou com dificuldade em q seja possível ganhar nas colunas, n consigo encontrar o erro nas funções verificaColuna e verificaTodasColunas. Se me puderem ajudar agradecia #include <stdio.h> #include <stdlib.h> #include "JogoDaVelha.h" int main() { char pedra[] = {'X', 'O'}; int l = 3; int c = 3; char **jogo = geraTabuleiro(l,c); int indexPedra = 0; // joga a primeira pedra char voltaJogar; do{ //::::::::::::::::::::::::::::::::::::::::::::: acercaDe(); limpaTabuleiro(jogo,l,c); imprimeTabuleiro(jogo,l,c); //Joga o jogo while( ! jogoAcabou(jogo, pedra[indexPedra], l, c)){ //verificar se ganhou ou acabou //trocar a pedra if( indexPedra==0) indexPedra=1; else indexPedra=0; //joga a pedra na posição que será escolhida jogaPedra(jogo, pedra[indexPedra],l,c); } printf("Jogo terminado"); if( ganhou(jogo, pedra[indexPedra],l, c)) printf("\nParabens !!! A pedra %c GANHOU ",pedra[indexPedra]); else printf("\nEmpataram"); //:::::::::::::::::::::::::::::::::::::::::::::: printf("\nDeseja volta a jogar ? (n/N para terminar) "); scanf(" %c",&voltaJogar); }while(voltaJogar != 'n' && voltaJogar != 'N' ); return 0; } // // Created by joaob on 12/04/2020. // #ifndef JOGODAVELHA_JOGODAVELHA_H #define JOGODAVELHA_JOGODAVELHA_H char VAZIO; void acercaDe(); //cria o tabuleiro do jogo char **geraTabuleiro(int linhas, int colunas); //liberta a memória alocada void liberta(char **velha, int linhas); //imprime na consola o tabuleiro void imprimeTabuleiro(char **velha, int linhas, int colunas); //limpa as posições do tabuleiro, retornando em cada uma a char VAZIO void limpaTabuleiro(char **velha, int linhas, int colunas); //joga uma pedra no tabuleiro void jogaPedra(char **velha , char pedra, int linhas, int colunas); //verifica se todas as posicoes estão ocupadas int estaCompleto(char **velha, int linhas, int colunas); //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: //verifica uma linha int verificaLinha(char *velha, char pedra, int linhas); //verifica todas as linhas int verificaTodasLinhas(char **velha, char pedra, int linhas); //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: //verifica uma coluna int verificaColuna(char *velha, char pedra, int colunas); //verifica todas as colunas int verificaTodasColunas(char **velha, char pedra, int colunas); //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: //verificar a diagonal principal int ganhouDiagonalPrincipal(char **velha, char pedra, int linhas); //verificar a diagonal inversa int ganhouDiagonalInversa(char **velha, char pedra, int linhas); //verifica se o jogador ganhou na diagonal int ganhouDiagonal(char **velha, char pedra, int linhas); //verificar se a pedra ganhou no jogo velha int ganhou(char **velha, char pedra, int linhas, int colunas); //verificar se o jogo está acabado int jogoAcabou(char **velha ,char pedra, int linhas, int colunas); #endif //JOGODAVELHA_JOGODAVELHA_H JogoDaVelha.c // // Created by joaob on 12/04/2020. // #include <stdio.h> #include <stdlib.h> char VAZIO = '.'; void acercaDe(){ printf("J O G O D A V E L H A \n"); printf("(c) Jo@o Vieira 2020\n"); printf("Aluno nº 21594 de Programacao II\n"); } char **geraTabuleiro(int linhas, int colunas) { // matriz[linhas][coluna] //::::::::::::::::::::::::::::::::::::::::::::::::::::::: //alocar uma matriz quadrada //::::::::::::::::::::::::::::::::::::::::::::::::::::::: // gerar o vetor de ponteiro de vetores inteiros int **m = (int **) malloc(linhas * sizeof(int *)); //gerar as linhas for (int i = 0; i < linhas; i++) { m[i] = (int *) malloc(colunas * sizeof(int)); } for(int y=0; y < linhas; y++){ for(int x=0; x < colunas; x++){ m[y][x] = 'X'; } } //retornar a matriz return m; } void liberta(char **m, int linhas){ //libertar as linhas for(int y = 0; y < linhas; y++){ free(m[y]); } //libertar a matriz free(m); } void imprimeTabuleiro(char **velha, int linhas, int colunas){ for(int y = 0; y < linhas; y++){ for(int x = 0; x < colunas; x++){ printf( " %c ", velha[y][x]); } printf("\n"); //muda para a proxima linha } } void limpaTabuleiro(char **velha, int linhas, int colunas){ for(int y= 0; y < linhas; y++){ for(int x= 0; x < colunas; x++){ velha[y][x] = VAZIO; } } } void jogaPedra(char **velha , char pedra, int linhas, int colunas){ int linha, coluna; while(1){//repete até introduzir uma posição válida //::::::::::::::::::::::::::::::::::::::::::::: printf("\nJogador %c", pedra); //introduzir uma linha válida while(1){ printf("\nIntroduza a linha : "); scanf("%d", &linha); if( linha >= 0 && linha < linhas){ break; } else{ printf("Linha invalida"); } } //::::::::::::::::::::::::::::::::::::::::::::: while(1){ printf("\nIntroduza a Coluna : "); scanf("%d", &coluna); if( coluna >= 0 && coluna < colunas){ break; } else{ printf("Coluna invalida"); } } //verificar se introduziu uma posicao valida if(velha[linha][coluna] == VAZIO){ break; } else{ //mensagem printf("\n ERRO posicao ocupada"); } } // jogar a pedra na posição válida velha[linha][coluna] = pedra; //atualizar o tabuleiro imprimeTabuleiro(velha, linhas, colunas); } //verifica se todas as posicoes estão ocupadas int estaCompleto(char **velha, int linhas, int colunas){ for(int y= 0; y < linhas; y++) {//percorre todas as linhas for (int x = 0; x < colunas; x++) {//percorre todas as colunas //verificar se a posicao y,x é igual a vazio if( velha[y][x] == VAZIO) return 0; // nao esta completo } } //estao todas ocupadas return 1; } //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: //verificar as linhas int verificaLinha(char *velha, char pedra, int linhas){ for(int i=0; i < linhas ; i++){ if(velha[i]!= pedra) return 0; //existe uma posicao que não é ocupada pela pedra } return 1; //todas as posições são do tipo pedra } int verificaTodasLinhas(char **velha, char pedra, int linhas){ for(int y=0; y < linhas; y++){//percorre as linhas if( verificaLinha(velha[y], pedra, linhas)) //verificar se ganhou na linha y return 1; } //não ganhou nas linhas return 0; } //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: //verificar as colunas int verificaColuna(char *velha, char pedra, int colunas){ for(int i=0; i < colunas ; i++){ if(velha[i]!= pedra) return 0; //existe uma posicao que não é ocupada pela pedra } return 1; //todas as posições são do tipo pedra } int verificaTodasColunas(char **velha, char pedra, int colunas){ for(int x = 0; x < colunas; x++){//percorre as colunas if( verificaColuna(velha[x], pedra, colunas)) //verificar se ganhou na coluna x return 1; } //não ganhou nas colunas return 0; } //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: //verificar as diagonais int ganhouDiagonalPrincipal(char **velha, char pedra, int linhas){ for(int y=0; y < linhas ; y++){ if( velha[y][y] != pedra) return 0; // na diagonal principal existe uma marca diferente } return 1;//ganhou na diagonal } //verificar as diagonais int ganhouDiagonalInversa(char **velha, char pedra, int linhas){ for(int y=0; y < linhas ; y++){ if( velha[linhas - y - 1][y] != pedra) return 0; // na diagonal principal existe uma marca diferente } //ganhou na diagonal inversa return 1; } int ganhouDiagonal(char **velha, char pedra, int linhas){ return ganhouDiagonalInversa(velha,pedra,linhas) || ganhouDiagonalPrincipal(velha,pedra,linhas); } //verificar se a pedra ganhou no jogo velha int ganhou(char **velha, char pedra, int linhas, int colunas){ //verifico se ganhou nas linhas if( verificaTodasLinhas(velha, pedra,linhas)) return 1; //verifico se ganhou nas diagonais if( ganhouDiagonal(velha,pedra,linhas)) return 1; //ganhou nas colunas if( verificaTodasColunas(velha, pedra, colunas)) return 1; return 0; // não ganhou } //verificar se o jogo está acabado int jogoAcabou(char **velha ,char pedra, int linhas, int colunas){ if( estaCompleto(velha, linhas, colunas)) //tabuleiro completa return 1; //verificar se ganhou if( ganhou(velha,pedra, linhas, colunas)) return 1; return 0; // o jogo não acabou nem ganhou }
  16. 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á
  17. 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...
  18. 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.
  19. 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😀
  20. 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
  21. 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); }
  22. 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"); }
  23. 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.
  24. 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"); }
×
×
  • 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.