Ir ao conteúdo
  • Cadastre-se

KXSY

Membros Plenos
  • Total de itens

    465
  • Registro em

  • Última visita

  • Qualificações

    N/D
  1. Em C mesmo? nunca vi, mas ele tem um ótimo compilador de C++ mas em resumo. eu posso está engando neste momento. Vs-roadmap Eu utilizei o visual studio ano passado, é esse ano ao que aparenta ele tem (ou vai ter) um suporte mais adequado ao C11. então foi mal pelo erro aí. Sim, imagine se você é um fotografo que nunca tira fotos ou um atirador que nunca atira. tudo na vida requer treino, é o autocomplete retira metade do esforço que a pessoa precisa para compreender o que ela está fazendo e o por que de fazê-lo. Eu não estou de modo algum demonizando as IDEs, eu mesmo já usei muitas como Genny, lazarus e delphi esse ultimo tem ficado cada vez melhor de uns anos pra cá. Mas eventualmente você vai cair em um problema que a IDE não vai ajudar ou pior vai é atrapalhar, então aprender a trabalhar com o compilador e suas ferramentas diretamente e o melhor para quem está aprendendo.
  2. Eu poderia colocar varias coisas há mais nessa lista, como ele suportado em vários sistemas. Mas tem uma coisa que me incomoda nele, Ele tem um compilador de C medíocre (Eu sei que dá para usar outro). Outro fator bacana dele é fora que aquele autocomplete mais atrapalha do que ajuda pra quem está começando a programar.
  3. Aqui não compilou. Programas muito complexos não são criados de uma vez só, você deve dividi-lo em pedaços menores é entender como o programa deve funcionar antes de implementar. Você precisa aprender corretamente como funciona ponteiros para implementar a lista. De uma olhada no canal MeSalva! no youtube para entender melhor. Aqui vai um exemplo de lista ligada. #include <stdio.h> #include <stdlib.h> /* Constantes */ #define T_N_ARTISTA 20 #define T_N_BANDA 10 #define T_N_MUSICA 10 /* Tipos */ typedef struct { char n_artista[T_N_ARTISTA]; char n_banda[T_N_BANDA]; char n_musica[T_N_MUSICA]; unsigned char minutos,segundos; }musica_t; typedef struct Lista { musica_t musica; struct Lista *proximo; }lista_t; int main(void) { lista_t *inicio=NULL,*fim=NULL; inicio=malloc(sizeof(lista_t)); /* Cria o primeiro nó na lista */ /* Pega as informações da musica */ printf("\nDigite o nome da banda:\t"); fgets(inicio->musica.n_banda,T_N_BANDA,stdin); printf("\nDigite o nome do cantor:\t"); fgets(inicio->musica.n_artista,T_N_ARTISTA,stdin); printf("\nDigite o nome da musica:\t"); fgets(inicio->musica.n_musica,T_N_MUSICA,stdin); printf("\nDigite o total de minutos da musica:\t"); scanf("%hhu%*c",&inicio->musica.minutos); printf("\nDigite o total de segundos da musica:\t"); scanf("%hhu%*c",&inicio->musica.segundos); fim=inicio; /* Pega o endereço do ponteiro */ fim->proximo=malloc(sizeof(lista_t)); /* Cria o proximo nó na lista */ fim=fim->proximo; /* Pega as informações da musica */ printf("\nDigite o nome da banda:\t"); fgets(fim->musica.n_banda,T_N_BANDA,stdin); printf("\nDigite o nome do cantor:\t"); fgets(fim->musica.n_artista,T_N_ARTISTA,stdin); printf("\nDigite o nome da musica:\t"); fgets(fim->musica.n_musica,T_N_MUSICA,stdin); printf("\nDigite o total de minutos da musica:\t"); scanf("%hhu%*c",&fim->musica.minutos); printf("\nDigite o total de segundos da musica:\t"); scanf("%hhu%*c",&fim->musica.segundos); fim->proximo=NULL; /* Define o final da lista */ /* Pega o inicio da lista */ fim=inicio; while(fim!=NULL) /* Faz enquanto fim é diferente de NULL */ { lista_t *temp; temp=fim->proximo; printf("\nNome da band;\n%s",fim->musica.n_banda); printf("\nNome do cantor\n%s",fim->musica.n_artista); printf("\nNome da musica\n%s",fim->musica.n_musica); printf("\nDuração total\n%hhu:%hhu",fim->musica.minutos,fim->musica.segundos); free(fim); /* Apaga o nó */ fim=temp; /* Pega o proxímo nó */ } getchar(); /* Pausa o programa */ return(0); } Material de apoio unicamp lista encadeada. usp aulas de algorítimo. Outros tópicos parecidos no fórum. (Eu acho que eles são seus colegas de classe) Trabalho Faculdade elaborar um player de musica em C Emulador de um player em linguagem C
  4. KXSY

    C Jogo em C V2

    Talvez isso possa ajudar. #include <stdio.h> #include <stdlib.h> #include <time.h> /* Constantes */ #define T_MATRIZ 10 void Gerador(int *matriz, int inicio, int fim); /* Gera números aleatórios. * Passe uma matriz unidimensional para o procedimento gera uma faixa de números. * Exemplo: Gerador(v,1,10); Gera aleatoriamente um vetor de 10 números de 1 até 10. * AVISO: passe uma faixa de valor do tamanho da matriz ou menor * Neste procedimento não há checagem de erros. */ int main(void) { int v[T_MATRIZ],aux; Gerador(v,0,9); for(aux=0; aux<T_MATRIZ; aux++) printf("\n%i",v[aux]); getchar(); return(0); } /* Troca valores */ void Troca(int *dest, int *font) { int temp=*dest; *dest=*font; *font=temp; } void Gerador(int *matriz, int inicio, int fim) { int indice,cont,aux; /* Inicia a matriz */ for(cont=inicio,aux=0; cont<=fim; cont++,aux++) matriz[aux]=cont; indice=aux; /* Tamanho da matriz */ /* Embaralha os números */ srand(clock()); for(cont=inicio, aux=0; cont<=fim; cont++, aux++) Troca(&matriz[aux],&matriz[rand()%indice]); /* Troca a posição */ } A ideia é imaginar que você tem um chapéu com todos os números, que serão misturados e pegos um por um.
  5. scanf_s está correto faz parte do C11, é e portável. mas a implementação da microsoft não é. tem que trabalhar com arquivos #include <stdio.h> int main(void) { FILE *arq=fopen("Nome_qualquer.txt","w+"); if(arq==NULL) { printf("\nErro.\n"); return(-1); } fprintf(arq,"Abra o arquivo!"); fclose(arq); return(0); } um tutorial um pouco mais completo http://www.ufjf.br/jairo_souza/files/2009/12/3-Arquivos-Manipulação-de-arquivos-em-C.pdf
  6. Disso eu sei, mas brincar um pouco com o console não faz mal a ninguém ;) fora que isso pode ser uma motivação a mais para aprender sobre o próprio C.
  7. Wtf... porque as pessoas ainda insistem em usar o visual studio para C? Seguinte o seu problema maior e na implementação da lista ligada, recomendo você fazer uma lista simples primeiro e só depois reimplementar com as funções para você compreender como funciona.
  8. @mrfrustrationman Se você consegui instalar a ncurses aqui vai um exemplo. #include <ncurses.h> #include <string.h> #include <ctype.h> #include <unistd.h> /* Constantes */ #define T_NOME 10 #define Q_INIMIGOS 3 /* Tipos */ typedef struct { char nome[T_NOME]; int linha,coluna,vida; unsigned long xp; float dinheiro; }personagem_t; void ColocaNaTela(personagem_t *p, int quant, char c); int main(void) { int cont,tecla; personagem_t jogador,inimigos[Q_INIMIGOS]; /* Inicia os monstros */ for(cont=0; cont<Q_INIMIGOS; cont++) { inimigos[cont].dinheiro=132.40; inimigos[cont].xp=302; inimigos[cont].vida=3000; inimigos[cont].linha=cont+10; inimigos[cont].coluna=cont+10; strcpy(inimigos[cont].nome,"Gargola."); } initscr(); /* Inicia ncurses */ clear(); /* Limpa a tela */ /* Inicia o jogador */ printw("\nDigite o nome do jogador:\t"); refresh(); /* Atualiza o console */ scanw("%s%*c",jogador.nome); refresh(); /* Atualiza o console */ printw("\nDigite o xp do jogador:\t"); refresh(); /* Atualiza o console */ scanw("%lu%*c",&jogador.xp); printw("\nDigite a quantidade de vida do jogador:\t"); refresh(); /* Atualiza o console */ scanw("%i%*c",&jogador.vida); printw("\nDigite o dinheiro do jogador:\t"); refresh(); /* Atualiza o console */ scanw("%f%*c",&jogador.dinheiro); jogador.linha=jogador.coluna=4; /* loop principal */ noecho(); /* Retira o curso do console */ nodelay(stdscr,TRUE); /* Não espera a resposta do getch() */ do { clear(); ColocaNaTela(inimigos,Q_INIMIGOS,'M'); ColocaNaTela(&jogador,1,'J'); move(18,0); /* Faz uma barra na tela */ for(cont=0; cont<79; cont++) printw("="); printw("\nNome:%s|Vida:%i|Xp:%lu|Dinheiro:%.2fCr$|X:%i-Y:%i|Pressione C para sair.",jogador.nome,jogador.vida,jogador.xp,jogador.dinheiro,jogador.coluna,jogador.linha); /* Controla o personagem */ tecla=getch(); switch(toupper(tecla)) { case 'S': if(jogador.linha<17) jogador.linha++; else jogador.linha=0; break; case 'W': if(jogador.linha>0) jogador.linha--; else jogador.linha=17; break; case 'D': if(jogador.coluna<80) jogador.coluna++; else jogador.coluna=0; break; case 'A': if(jogador.coluna>0) jogador.coluna--; else jogador.coluna=80; break; } /* Checa a colisão */ for(cont=0; cont<Q_INIMIGOS; cont++) { if(jogador.linha==inimigos[cont].linha && jogador.coluna==inimigos[cont].coluna) { move(0,0); printw("Colisão entre o jogador e um %s.",inimigos[cont].nome); /* Reduz a vida do jogador */ jogador.vida--; } } refresh(); /* Atualiza o console */ /* Reduz o flick */ usleep(7000); /* Atrasa a execução */ }while(toupper(tecla)!='C' && jogador.vida>0); nodelay(stdscr,FALSE); clear(); if(jogador.vida<=0) { printw("Você morreu!"); move(19,0); printw("Pressione qualquer teclar para continuar..."); refresh(); getch(); } endwin(); /* Finaliza a ncurses */ return(0); } void ColocaNaTela(personagem_t *p, int quant, char c) { int cont; for(cont=0; cont<quant; cont++) { move(p[cont].linha,p[cont].coluna); printw("%c",c); } } Ela é bem parecida com os comandos da stdio.h mas tem vários comandos para usar o console.
  9. sim. mas preste atenção no vetor ele vai 0...6 então ele tem 7 posições, mas quando você declarou tirou uma posição então ele vai de 0...5 quer dizer que ele tem 6 posições e você está lendo os dados como se tivesse 7. o for vai se repetir por 6 vezes fazendo assim o scanf gravar dados em uma área de memoria não reservada. Se você estiver usando um teclado físico recomendo usar esse site repl.it. adicionado 11 minutos depois Eu consertei o seu programa dessa vez e coloquei um exemplo de como usar o vetor. //Faça um programa que receba a idade e o peso de 7 pessoas . Calcule e mostre: A quantidade de pessoas com mais de 90 quilos; A média das idades das sete pessoas. #include <stdio.h> #define num_pessoas 7 typedef struct { int idade; float peso; }pesso_t; int main(void) { pesso_t pessoas[num_pessoas]; int i, quant_acima90 = 0, soma = 0; float media; for (i = 0; i < num_pessoas; i++) { printf ("Informe a idade da %d° pessoa: ", i+1); scanf ("%d", &pessoas[i].idade); printf ("Informe o peso da %d° pessoa: ", i+1); scanf ("%f", &pessoas[i].peso); printf ("\n"); soma += pessoas[i].idade; if (pessoas[i].peso > 90) { quant_acima90 ++; } } media = soma/num_pessoas; printf ("%d pessoas estão acima de 90Kg.", quant_acima90); printf("\nIdade e peso das pessoas que estão acima de 90Kg."); for(i=0; i<num_pessoas; i++) { if(pessoas[i].peso>90) { printf("\nIdade:\t%i",pessoas[i].idade); printf("\nPeso:\t%2.f",pessoas[i].peso); } } printf ("\nA media das idades das pessoas e: %.2f", media); getchar(); /* Pausa */ return (0); }
  10. Então instale o ncurses que fica mais fácil usar o console fora que o seu código estará preso ao windows dessa maneira que você está escrevendo.
  11. Mas é o mingw32 ou o que já vem com o code blocks?
  12. Isso já está genérico! É como o @vangodp mencionou "esse é o caminho mais complicado".
  13. @mrfrustrationman Você está usando qual compilador? Já pensou em fazer assim? Se quiser eu dou um exemplo de como ficaria na tela.
  14. Você reparou que você está usando o endereço do primeiro ponteiro da matriz para pegar as informações? isso está errado é a maioria dos compiladores não aceitaria compilar essa sentença. Aqui o programa "funcionando". Qual seria a sua intenção por optar usar um vetor ao invés de uma variável? O que significa esse -1? Você usa um IDE ou alguma coisa para compilar o código?
  15. O jeito correto seria $g++ main.cpp -o main -lSDL2main -lSDL2 e no windows seria C:\g++ main.cpp -o main -lmingw32 -lSDL2main -lSDL2 Tutorial SDL 2

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Aprenda a ler resistores e capacitores

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!