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

  1. 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; }
  2. 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; }
  3. 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); }
  4. 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.
  5. Hipnoted

    Programar em C: Compiladores, tutoriais, ...

    Este tópico contém informação desactualizada. Um artigo mais recente (e para o qual todos podem contribui) sobre como configurar o seu sistema para programar em C está disponível no Wiki da comunidade. Para começar a programar em C é preciso um compilador, ferramenta que transforma o código fonte num programa executável. Ambientes WINDOWS: Para escrever o código-fonte, necessitamos de um IDE, ou seja de um ambiente de desenvolvimento integrado. Entre inúmeros IDE´s que existem disponíveis na Internet para download destaco: ---> DevC++ (download) ---> Eclipse (download) ---> Visual C/C++ da microsoft (download) ---> etc, etc, ... Depois de escrever o código é só compilar, se não existirem erros gera-se o executável, que é o resultado do código... Ambientes *NIX: Neste ambientes o compilador costuma ser o Gcc. Este pode já ter sido instalado quando se instalou o Sistema Operativo, senão é necessário fazer download. Para o instalar em princípio só deve ser executar fazer na consola: ...$ yum install gcc ou ...$ apt-get install gcc No Mac OS X, o gcc está disponível no DVD 2, juntamente com as restantes ferramentas de desenvolvimento. Para escrever o código-fonte podemos usar qualquer editor de texto. Depois basta ir à consola, colocar-se na respectiva directoria e fazer: ...$ gcc "nomedoprograma.c" -o "nomedoexecutavel" Para correr o executável faz-se: ...$ ./"nomedoexecutável" Nota: Se não quizermos escrever o código num editor de texto também existem IDE´s para *NIX. Um deles é o Anjuta disponível para download aqui. Tutoriais Este tutorial é bastante bom para quem quer ter bases de programação em C. Neste fórum existem outros tutoriais para iniciantes. Não os vou estar a colocar aqui pois estão disponíveis para todos. Senão usem um motor de busca porque se há coisa que não falta é informação desta. Alguma dúvida é só dizer.
  6. 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
  7. 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
  8. 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,
  9. 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; } } } }
  10. 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.
  11. 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; }
  12. 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á.
  13. 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.
  14. 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 }
  15. 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á
  16. 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...
  17. 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.
  18. 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😀
  19. 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
  20. 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); }
  21. 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"); }
  22. 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.
  23. 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"); }
  24. 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; } } }
×
×
  • 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.