Ir ao conteúdo
  • Cadastre-se

KXSY

Membro Pleno
  • Posts

    559
  • Cadastrado em

  • Última visita

Tudo que KXSY postou

  1. tente uma organização mais simples do baralho. Exemplo #include <stdio.h> /* Constantes */ #define Q_CADA_CARTA 5 /* Quantidade de cada carta */ #define Q_NAIPES 3 /* Quantidade de naipes no baralho */ #define Q_CARTAS_BARALHO (Q_CADA_CARTA*Q_NAIPES) /* Quantidade de cartas no baralho */ #define T_NOME 10 /* Valor de cada carta */ #define V_CARTA_VAZIA 0 #define V_CARTA_PEDRA 1 #define V_CARTA_PAPEL 2 #define V_CARTA_TESOURA 3 /* Nome de cada carta */ #define N_CARTA_PEDRA "Pedra" #define N_CARTA_PAPEL "Papel" #define N_CARTA_TESOURA "Tesoura" void MostraCarta(int carta); int main(void) { int baralho[Q_CARTAS_BARALHO],valor,cont,aux; /* Inicia Baralho */ aux=0; for(cont=0; cont<Q_CADA_CARTA; cont++) { for(valor=1; valor<=Q_NAIPES; valor++) { baralho[aux]=valor; aux++; } } /* Mostra baralho */ for(cont=0; cont<Q_CARTAS_BARALHO; cont++) { MostraCarta(baralho[cont]); } getchar(); /* Pausa */ return(0); } void MostraCarta(int carta) { printf("\nNome:"); switch(carta) { case V_CARTA_PAPEL: printf(N_CARTA_PAPEL); break; case V_CARTA_PEDRA: printf(N_CARTA_PEDRA); break; case V_CARTA_TESOURA: printf(N_CARTA_TESOURA); break; } printf("\nValor:%i",carta); /* Só está aqui para propositos de demonstração */ } Se cada carta tiver um valor será mais fácil para comparar com as outras cartas.
  2. Tem também a velha esquecida ncurses. #include <ncurses.h> int main(void) { initscr(); start_color(); init_pair(1,COLOR_RED,COLOR_BLACK); move(10,10); attron(COLOR_PAIR(1)); printw("Duh.............\n"); attroff(COLOR_PAIR(1)); move(20,1); printw("Pressione qualquer tecla para continuar.......\n"); getch(); endwin(); return(0); } funciona tanto em windows como também em linux. Vá nesse site OnlineGDB para testar o programa de exemplo.
  3. O compilador já tá avisando que tem alguma coisa errada. Em C não se pode igualar strings. Exemplo O certo seria usar strcpy() da biblioteca string.h Exemplo strcpy(f->nome,nome); Quando usamos vetores não precisamos passar nenhum argumento com eles, então a sentença anterior não precisa do [50]. recomendo você começar com algo mais simples para entender o funcionamento da lista. tem esse exemplo que eu fiz, ele não é simples mas se você seguir linha a linha vai entender melhor. Esse outro é mais completo. Nós dois não há checagem de erros, então isso ainda tem que ser implementado.
  4. Não é bem assim isso acontece com qualquer linguagem de programação, só basta o programador chamar alguma coisa errada na hora certa (ou não chamar) e você ganha um bug. My favorite bug: segfaults in Java. Eu acho um erro generalizar, porque android não é linux. ele roda os apps em uma maquina virtual sendo assim pouco importa o que está por debaixo do capo. Eu sabia que tinha que terminar com zero, mas eu citei essa parte do linux porque quando você está programando para embarcados que tem o kernel linux isso seria uma mão na roda para o reaproveitamento de ciclos e memoria.
  5. era em texto no fórum usando o botão code. Eu fiz esse aqui como exemplo #include <stdio.h> int main(void) { float nota,peso,peso_total,media=0,soma=0,contador; int quantidade; /* Pega a quantidade de notas */ printf("\nDigite a quantidade de provas:\t"); /* O caractere especial '%*c' significa que o '\n' será ignorado. */ scanf("%i%*c",&quantidade); for(contador=1; contador<=quantidade; contador++) { printf("\nDigite a nota:\t"); scanf("%f%*c",&nota); printf("\nDigite o peso da nota:\t"); scanf("%f%*c",&peso); /* significado da expreção abaixo soma=soma+(nota*peso); */ soma+=(nota*peso); /* significado da expreção abaixo peso_total=peso_total+peso; */ peso_total+=peso; } media=soma/peso_total; printf("\nA media e:\t%.2f",media); getchar(); /* Pausa o programa */ return(0); } Aparentemente você está tentado fazer a media ponderada correto?
  6. Eu pensei que você queria retirar os zeros da casa decimal, mas seu problema é fácil de resolver, e só mudar a função calcula de int para float. poste o código fonte caso tenha mais alguma duvida.
  7. Experimenta colocar um .2 no parâmetro %f ficando assim %.2f
  8. Vejo todo mundo falado que e um cabo de força de 6 pinos, onde acha tá ai mercado livre É a sua fonte realmente não tem mas existe o adaptador, há vários modelos desse adaptador então não se preocupe com o plugue fêmea arcaico que eu coloquei de exemplo.
  9. Realmente, eu acabei esquecendo. Mas eu acabei percebendo algo interessante nesse erro. As paginas de memoria no linux contêm bem menos lixo do que no windows, fazendo assim meu código rodar perfeitamente sem nenhum "segment fault" (Vou ser sincero, porque só rodei o código uma vez!). Segui ás dicas e dei um tapa no código! Nada. tá de boas
  10. Procure no manual do delphi por ParamCount e ParamStr. Eu não tenho mais o delphi, mas se você tiver é quiser eu mando um exemplo feito em lazarus. Exemplo em pascal puro no console. Program Testes; uses Crt; var cont:integer; begin clrscr; if ParamCount>0 then begin writeln('Parametros passados para o programa.'); for cont:=0 to ParamCount do writeln(cont,'-',ParamStr(cont)); end else writeln('Não foi passado nenhum parametro.'); readln; end.
  11. while(aux[v1, v2] != '\0') /* Está fazendo a operação de checagem com um inteiro */ { /* Isso sempre vai copiar o proxímo caractere */ aux++; v2[aux] = v1[aux]; } Essa sentença está copiando lixo da memoria. Funcionamento de uma string. getch não é mais usado, então de preferência a usar o getchar(). Outra maneira de fazer a mesma coisa do seu algorítimo. /* Inclusão de bibliotecas no código */ #include <stdio.h> /* Entrada e saída padrão */ /* Constantes */ #define T_FRASE 80 /* Declara um identificador para o número 80 */ /* Procedimentos */ /* Copia fonte para destino */ void StrCpy(char *destino, char *fonte); /* Retira o caractere de nova linha da string */ void CleanNewLine(char *str); /* Função principal */ int main(void) { /* str será usado para pegar uma frase do usuário */ /* saída será usado na copia da frase que está em str */ char str[T_FRASE],saida[T_FRASE]; /* Pede uma frase para o usuário */ printf("\nDigite uma frase:\t"); fgets(str,T_FRASE,stdin); /* Pega uma string da entra padrão stdin */ CleanNewLine(str); /* Retira o caractere de nova linha da string */ StrCpy(saida,str); /* Copia string fonte para a string destino */ /* Mostra a frase digitada */ printf("\nFrase digitada.\n\t%s",saida); getchar(); /* Pausa o programa */ return(0); /* Retorna 0 para o sistema operacional */ } /* Implementações */ void StrCpy(char *destino, char *fonte) { unsigned short cont; /* Executa até encontrar um 0 '\0' */ for(cont=0; fonte[cont]!='\0'; cont++) destino[cont]=fonte[cont]; /* Passa o caractere da fonte para destino */ cont++; /* Incrementa */ destino[cont]='\0'; /* Adiciona o fim da string */ } void CleanNewLine(char *str) { unsigned short cont; /* Procura por uma nova linha ou por 0 na string */ for(cont=0; str[cont]!='\n'&&str[cont]!='\0'; cont++); /* Checa se há uma nova linha */ if(str[cont]=='\n') str[cont]='\0'; /* Troca o caractere de nova linha pela terminação da string */ }
  12. Sintaticamente já está em C, eu não conseguir compilar o seu algoritmo pela falta de declaração das variáveis. Por isso eu perguntei se você já tinha conseguido executar.
  13. Já está em C, mas você consegue executar isso?
  14. Já tentou usar outra porta? Outra ideia seria seguir o tutorial do próprio manual do delphi (mas eu não sei se ele manteve os tutorias depois da 5 versão).
  15. A melhor resposta seria todas, mas ao mesmo tempo nenhuma. Se fosse na década de 90 eu diria com toda certeza para você aprender pascal, porque ele tem um bom compilador é e fácil de usar, fora que a sintaxe obriga você a programar de uma forma correta. Mas não estamos nos anos 90 e pascal não tem bibliotecas legais nativas (exemplo:Gráficos, áudio) e reinventar a roda e um saco! Mas em contrapartida ele gera o software mais seguro e confiável para rodar 24 horas por dia e 7 dias por semana sem nenhuma dor de cabeça. então hoje em dia eu recomendo você aprender. Compilada C++, D, Pascal. Web Php, JavaScrip, Java. Script de proposito geral. Lua, Python, Ruby, Bash. É aquela velha historia, não tem uma resposta certa então namore algumas e escolha só uma para começar. é de uma passada no canal do filipe deschamps.
  16. @Insurgent3 Segui tudo a risca? Se sim tente usar um site do tipo MyIp ou semelhante para conseguir o ip. O pront do windows não dá o ip da rede, ele dá o ip da maquina.
  17. ao meu ver o erro é na lista encadeada. Quando tiver códigos que utilizam a memoria, eu recomendo que você utilize a diretiva acima(-fsanitize=address).
  18. já tentou fazer algo menor? Como uma lista encadeada simples #include <stdio.h> #include <stdlib.h> /* Tipos */ typedef struct NoLista { int info; struct NoLista *proximo; }lista_t; void CriaNoLista(lista_t **l, int info); void ApagaLista(lista_t *l); void MostraLista(lista_t *l); int main(void) { char tecla; lista_t *inicio=NULL,*fim=NULL; do { int info; printf("\nDigite um numero:\t"); scanf("%i%*c",&info); if(inicio==NULL) { CriaNoLista(&inicio,info); fim=inicio; } else CriaNoLista(&fim,info); printf("\nSair \nS/N:\t"); scanf("%c%*c",&tecla); }while(tecla=='N'||tecla=='n'); MostraLista(inicio); getchar(); ApagaLista(inicio); return(0); } void CriaNoLista(lista_t **l, int info) { lista_t *temp=malloc(sizeof(lista_t)); if(temp==NULL) exit(EXIT_FAILURE); /* ERRO */ temp->proximo=NULL; temp->info=info; /* Primeiro nó na lista */ if((*l)==NULL) (*l)=temp; /* Nó subsequente na lista */ else (*l)=(*l)->proximo=temp; } void ApagaLista(lista_t *l) { while(l) { lista_t *temp; temp=l->proximo; free(l); l=temp; } } void MostraLista(lista_t *l) { while(l) { printf("\n%i",l->info); l=l->proximo; } } I'm sorry for crap code!
  19. O compilador avisou main.cpp:32:5: que o erro está na linha 32 e ele começa na coluna 5. basicamente por causa do mal uso dos parenteses "()". #include <ctype.h> #include <iostream> #include <stdio.h> using namespace std; int main() { char texto[255]; int i, qtd_dig = 0, qtd_espaco = 0, qtd_vogais = 0, qtd_consoantes = 0, qtd_especiais = 0; cout << "Digite frase: "; cin.get(texto, 255); for (i = 0; texto[i] != '\0'; i++) { if (isdigit(texto[i])) qtd_dig++; else if (isspace(texto[i])) qtd_espaco++; else if (isalpha(texto[i])) { if (tolower(texto[i] == 'a')||tolower(texto[i] == 'e')||tolower(texto[i] == 'i')||tolower(texto[i] == 'o')||tolower(texto[i] == 'u')) qtd_vogais++; else qtd_consoantes++; } else qtd_especiais++; } cout << "Vogais: " << qtd_vogais; cout << "Consoantes: " << qtd_consoantes; cout << "Digitos: " << qtd_dig; cout << "Espaços em branco: " << qtd_espaco; cout << "Caracteres especiais: " << qtd_especiais; return 0; } Código arrumado, mas sugiro você compilar mais o código ao invés de só ficar rodando ele na cabeça.
  20. KXSY

    C Vetor definido pelo usuário

    A memoria para o vetor vai ser definida dinamicamente no tempo de execução do programa. Exemplo: int vetor[4]; Isso é uma definição estática, é ela vai existir enquanto o bloco de código que contém a variável for executado. Agora no caso de int *vetor=malloc(sizeof(int)*4); você teria que eventualmente apagar essa alocação de memoria (isso quer dizer que foi alocado dinamicamente), porque se deixar vai acabar provocando um vazamento de memoria. Para mais detalhes veja aqui https://www.ime.usp.br/~pf/algoritmos/aulas/aloca.html
  21. quase tudo. #include <iostream> using namespace std; int main() { //declaração de variáveis char nome[20]; float n1,n2,n3,media; cout<<"\nInforme o nome do aluno:"; cin>>nome; cout<<"\nInforme a primeira nota:"; cin>>n1; cout<<"\nInforme a segunda nota:"; cin>>n2; cout<<"\nInforme a terceira nota:"; cin>>n3; cout<<"\nNome do aluno:"<<nome<<"\nNotas:"<<n1<<","<<n2<<","<<n3; return 0; }
  22. você já tentou iniciar um novo projeto? (porque até a versão que eu usei do delphi ele não aceitava os módulos (units) em uses com um ".") A solução proposta pelo @Eder Neumann seria a mais correta nesse caso. Outra solução temporária seria instalar o lazarus ide enquanto você não resolve o problema.
  23. KXSY

    C Vetor definido pelo usuário

    A maneira correta seria reservar memoria do sistema dinamicamente. exemplo #include <stdio.h> #include <stdlib.h> int main(void) { int *vetor,cont,tamanho; printf("\nDigite o tamanho do vetor:\t"); scanf("%d%*c",&tamanho); /* Aloca memoria dinamicamente */ vetor=malloc(sizeof(int)*tamanho); /* Preenche o vetor com numeros */ for(cont=0; cont<tamanho; cont++) vetor[cont]=cont+1; /* Mostra o vetor para o usuario */ for(cont=0; cont<tamanho; cont++) printf("\n%d",vetor[cont]); /* Pausa */ getchar(); /* Libera a memoria alocada */ free(vetor); return(0); }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!