Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.

Pesquisar na Comunidade

Mostrando resultados para as tags ''C''.



Mais opções de pesquisa

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Categorias

  • Armazenamento
  • Áudio
  • Energia
  • Entrada
  • Feiras e Eventos
  • Gabinetes
  • Memória
  • Museu
  • Placas-mãe
  • Portáteis
  • Processadores
  • Programas
  • Rádio CdH
  • Redes
  • Refrigeração
  • Smartphones
  • Tablets
  • Vídeo
  • Outros

Categorias

  • Blog

Categorias

  • Armazenamento
  • Áudio
  • Câmeras
  • Computadores
  • Consoles
  • Eletrônicos
  • Energia
  • Entrada
  • Gabinetes
  • Impressão
  • Jogos
  • Memória
  • Placas-mãe
  • Portáteis
  • Processadores
  • Programas
  • Redes
  • Refrigeração
  • Smartphones
  • Tablets
  • Vídeo
  • Outros

Categorias

  • Livros disponíveis
  • Livros esgotados

Categorias

  • Cursos

Fóruns

  • Mensagens do Clube do Hardware
    • Regras gerais
    • Boletins do Clube do Hardware
    • Notícias da administração
  • Hardware
    • Recomendações de computadores
    • Placas de vídeo
    • Placas-mãe e chipsets
    • Processadores
    • Problemas de gargalo e desempenho
    • Memórias
    • Armazenamento
    • Refrigeração e superaquecimento
    • Fontes e energia
    • Gabinetes e casemods
    • Placas de som e áudio on-board
    • Periféricos
    • Mac
    • Overclock
    • Hardware - outros
  • Computação móvel
    • Notebooks
    • Tablets
    • Smartphones e apps
  • Redes e Internet
    • Redes e Internet
    • Hospedagem de sites e registro de domínios
  • Segurança da informação
    • Remoção de malware
    • Dúvidas sobre invasões e infecções
    • Programas de proteção
  • Programação e desenvolvimento
    • Java
    • C/C#/C++
    • Pascal/Delphi
    • .NET
    • Bancos de dados
    • Programação web
    • Programação - iniciantes
    • Programação de microcontroladores
    • Programação - outros
  • Software
    • Jogos
    • Pacotes de escritório
    • Computação distribuída (Folding@Home, Bitcoin etc.)
    • Virtualização
    • Design, animação e tratamento de imagens
    • Edição de áudio e vídeo
    • Programas
  • Sistemas Operacionais
    • Recomendação de sistemas operacionais
    • Windows
    • GNU/Linux, BSD, Unix-like e software livre
    • Mac OS
  • Eletrônicos
    • Equipamentos de som, home theaters e gravadores de mesa
    • Televisores e projetores
    • Câmeras e filmadoras
    • Players portáteis
    • Consoles (videogames)
    • GPS
    • Telefonia fixa
    • Eletrônica
    • Retrocomputação
  • Outros
    • Recomendações de serviços e lojas
    • Preços e promoções
    • Notícias
    • Bolsa de empregos, certificações e mercado de trabalho
    • "Causos"
    • Encontros de usuários
    • Feira do Rolo
  • Clube do Hardware
    • Comentários, elogios, críticas e sugestões sobre o Clube do Hardware
    • Comentários de artigos
    • Fórum para testes de funcionalidades

Categorias

  • Hardware
  • Redes
  • Eletrônica
  • Sistemas operacionais

Encontrado 516 registros

  1. Bom dia, eu consegui desenvolver a logica da questão, o problema é que depois de mostrar os valores, eu tenho que apagar o que há no vetor, para não utilizar o resultado anterior no próximo caso de teste Link da questão #include <stdio.h> #include <string.h> #include <stdlib.h> int main(void) { int i, j, vetor[12], c = 0, teste, k; char nome[100]; char primeiro[7] = {'a', 'k', 'u', 'G', 'Q'}, segundo[7] = {'b', 'l', 'v', 'I', 'S'}; char terceiro[7] = {'E', 'O', 'Y', 'c', 'm', 'w'}, quarto[7] = {'F', 'P', 'Z', 'd', 'n', 'x'}; char quinto[6] = {'J', 'T', 'e', 'o', 'y'}, sexto[7] = {'D', 'N', 'X', 'f', 'p', 'z'}; char setimo[6] = {'A', 'K', 'U', 'g', 'q'}, oitavo[6] = {'C', 'M', 'W', 'h', 'r'}; char nono[6] = {'B', 'L', 'V', 'i', 's'}, deimo[5] = {'H', 'R', 'j', 't'}; scanf("%d", &teste); for(k = 0; k < teste; k++) { setbuf(stdin, NULL); gets(nome); int tam = strlen(nome); for(i = 0; i < tam; i++) { for(j = 0; j < 7; j++) { if(nome[i] == primeiro[j]) { vetor[c++] = 0; } } for(j = 0; j < 7; j++) { if(nome[i] == segundo[j]) { vetor[c++] = 1; } } for(j = 0; j < 7; j++) { if(nome[i] == terceiro[j]) { vetor[c++] = 2; } } for(j = 0; j < 7; j++) { if(nome[i] == quarto[j]) { vetor[c++] = 3; } } for(j = 0; j < 6; j++) { if(nome[i] == quinto[j]) { vetor[c++] = 4; } } for(j = 0; j < 7; j++) { if(nome[i] == sexto[j]) { vetor[c++] = 5; } } for(j = 0; j < 6; j++) { if(nome[i] == setimo[j]) { vetor[c++] = 6; } } for(j = 0; j < 6; j++) { if(nome[i] == oitavo[j]) { vetor[c++] = 7; } } for(j = 0; j < 6; j++) { if(nome[i] == nono[j]) { vetor[c++] = 8; } } for(j = 0; j < 5; j++) { if(nome[i] == deimo[j]) { vetor[c++] = 9; } } } for(i = 0; i < 12; i++) { printf("%d", vetor[i]); } printf("\n"); for(i = 0; i < 12; i++) { vetor[i] = 0; }/* quando eu faço isso só o primeiro resultado é o certo, os outros resultados são apenas zeros/* } return 0; }
  2. C Erro scanf em calculadora básica

    Eu estava programando uma cauculadora básica por assim dizer utilizando a linguagem C, e meu codigo deu um erro onde o sncaf não estava reconhecendo o %c (chear) e passava direto para o default, sendo assim tentei passar o %c (chear) para %f (float), o programa rodou mas obviamente o switch não reconheceu e passou para o default após, alguma ideia de como arrumar? #include <stdio.h> int main() { float a,b; char op; ;printf("Digite o 1 valor"); scanf("%f",&a); fflush(stdin); ;printf("Digite o 2 valor"); scanf("%f",&b); fflush(stdin); printf("Escolha a operacao: "); scanf("%c",&op); //Erro nesta linha de codigo fflush(stdin); switch(op) { case '+':{ printf("resultado= %f ", a+b); getchar(); return(0); } case '-':{ printf("resultado= %f", a-b); getchar(); return(0); } case '*':{ printf("resultado= %f", a*b); getchar(); return(0); } case '/':{ printf("resultado= %f", a/b); getchar(); return(0); } default:{ printf("Essa operacao nao existe"); getchar(); return(0); } } ;}
  3. C estou com um problema na impressão da string

    Tenho que fazer uma função que duplica cada caractere de uma string recebida.Consegui fazer a função e vi que ela está duplicdando,porém ao imprimir mostra a string antes de ser duplicada o que faço? #include <stdio.h> #include <stdlib.h> #include <string.h> #define TAMANHO 100 int main() { char texto[TAMANHO]; printf("\n Digite o texto: "); fgets(texto,(TAMANHO-1),stdin); system("cls||clear"); int cont=(((strlen(texto))*2)+1); char duplo[cont]; duplo[cont]='\0'; printf("\n Texto antes da mudança:\n%s",texto); duplica(texto,duplo); getchar(); return 0; } void duplica(char texto[],char duplo[]) { int i,j; for(i=0;texto[i]!=NULL;i++) { j=i+1; duplo[i]=texto[i]; duplo[j]=texto[i]; printf("\ni: %d %c\n j:%d %c\n",i,duplo[i],j,duplo[j]);//Adicionei isso aqui pra verificar se estava duplicando e vi q está mas a impressao que esta errada } printf("\n Texto apos ser duplicado:\n"); for(i=0;duplo[i]!=NULL;i++) { printf("%c",duplo[i]); } printf("\n"); }
  4. C Matriz 6x6 FOR linguagem C

    Opa sou novo aqui, estou com dúvida em um exercício no de linguagem C, pede-se o seguinte: Matriz 6x6 Preencher a diagonal principal com os primeiros números da sequencia de fibonacci; Preencher a diagonal secundaria com os primeiros números primos; Preencher o triangulo superior com os primeiros números pares( não deve sob-escrever a diagonal); Preencher o triangulo inferir com primeiros numero impares (não deve sob-escrever a diagonal) A estrutura dever ser da seguinte maneira: #include <stdio.h> int main() { int cont_par=2; int matriz[6][6]; int cont_impar=1; int cont_primo=2; int cont_fibo=0; int i, j; //preenchendo com o valor 0; for(i=0; i<6; ++i){ for(j=0; j<6; ++j) { matriz[i][j]=0; } } for(i=0; i<6; ++i){ for(j=0; j<6; ++j) { if(i==j){ matriz[i][j]=cont_fibo; //preenchendo a diagonal principal; } } if(i+j==7){ //preenchendo apenas a diagonal secundaria; matriz[i][j]=cont_primo; } if(i<j){ //preenchendo o triagulo superior if(matriz[i][j]==0){ matriz[i][j]=cont_par; cont_par = cont_par+2;} } if(i>j){ //preenchendo o triagulo inferior/ if(matriz[i][j]==0){ matriz[i][j]=cont_impar; cont_impar+2; } } } } for(i=0; i<6; ++i){ for(j=0; j<6; ++j) { printf("%d ", matriz[i][j]); } printf("\n"); } return 0; } Não estou conseguindo gerar essa matriz, por favor alguém me ajuda?
  5. Pessoal! Preciso de uma função que imprima os nós internos de uma árvore binária mais o nó raiz dela. Porém não estou conseguindo tratar a função quando ela só tem o nó raiz. Vejam o que fiz: void imprimeInterno(Arv* a){ if(a!=NULL){ if(a->dir==NULL && a->esq==NULL){ printf("%d ",a->info); exit(1); } else if(a->dir!=NULL && a->esq==NULL){ printf("%d ",a->info); imprimeInterno(a->dir); }else if(a->dir==NULL && a->esq!=NULL){ printf("%d ",a->info); imprimeInterno(a->esq); }else if(a->dir!=NULL && a->esq!=NULL){ printf("%d ",a->info); imprimeInterno(a->esq); imprimeInterno(a->dir); } } }
  6. C Função sempre retorna valor 0

    Bom dia a todos. Estou tentando fazer um programa de simulação de lançamentos na Física, onde os inputs são a velocidade inicial e o ângulo e o output seria o tempo de subida. O problema é que, não importa os valores que eu coloque, o programa sempre dará 0 segundos como resultado. Alguém tem alguma ideia que possa ajudar? Segue o programa: #include <stdio.h> #include <math.h> int main(){ int v0, ts, teta printf("Defina sua velocidade inicial: \n"); scanf("%d", &v0); printf("Defina seu angulo de lancamento: \n"); scanf("%d", &teta); ts = v0*sin(teta)/10 printf("O tempo de subida do projetil foi de %d segundos", ts); return 0; } Ts = V0senθ/g Retorno: Defina sua velocidade inicial: 6 Defina seu angulo de lancamento: 30 O tempo de subida do projetil foi de 0 segundos Process returned 0 (0x0) execution time : 4.347 s Press any key to continue. Agradeço desde já. PS: tem alguma problema se eu multiplicar um float por um int?
  7. Em alguns testes meu código consegue passar, porém ele está dando 60 % de erro, Link da questão. Alguns exemplos de entradas e saídas do udebug 30 10 12 18 5 11 30 5 19 19 23 15 Saída = 1 ------------------------ 20 10 6 6 2 8 2 12 16 3 8 17 Saída = 3 ----------------------- 10 10 2 5 3 4 3 3 2 7 9 6 Saída = 2 ---------------------- O meu código falha nesse teste, nos outros ele imprime o resultado esperado. 10 10 4 2 3 4 4 5 2 2 4 9 Saída = 2. ---------------------- Meu código. #include <stdio.h> int main(void) { int a, m, i, j, cont; while(1) { scanf("%d %d", &a, &m); if(a == 0 && m == 0) break; int vetor[m], verifica[m]; for(i = 0; i < m; i++) { verifica[i] = 0; } for(i = 0, cont = 0; i < m; i++) { scanf("%d", &vetor[i]); } for(i = 0; i < m - 1; i++) { for(j = i + 1; j < m; j++) { if(vetor[i] == vetor[j] && verifica[i] != 1 && verifica[j] != 1) { cont++; verifica[i] = 1; verifica[j] = 1; } } } printf("%d\n", cont); } return 0; }
  8. Fiz um programa que transforma letras minusculas em maiusculas,apesar de estar funcionando a impressao da string não está correta,imprimi como a foto em anexo,não imprimindo o espaço,o que faço para corrigir esse erro? #include <stdio.h> #include <stdlib.h> #include <string.h> #define TAMANHO 20 int main() { char nome[TAMANHO],troca[TAMANHO]; leitura(nome); maiuscula(nome,troca); getchar(); return 0; } void leitura(char nome[]) { int i; printf("\nDigite um nome(ate 19 caracteres)"); gets(nome); } void maiuscula(char nome[],char troca[]) { int i; for(i=0;i<TAMANHO;i++) { if ( (nome[i] >= 'a') && (nome[i] <= 'z') ) { troca[i]= nome[i]- 32; //nome[i] = nome[i]- 32;//quando eu fiz assim verifiquei que imprimia corretamente a string nome mas a troca sempre fica estranha,mesmo dessa forma dando certo queria //verificar como seria o jeito correto ultilizando a string troca,já que essa foi a minha priomeira ideia e não achei o erro } } printf("\n A string:%s em maiusculo fica:%s \n",nome,troca); }
  9. C Ponteiros "com char e short"

    #include <stdio.h> #include <stdlib.h> void soma(short* a, short* b) { *a = x; *b = y; } int main(void) { char x, y; //2 variáveis do tipo char printf("Informe um numero entre -32767 e 32767\n"); scanf("%c", &*x); printf("Informe outro numero entre -32767 e 32767\n"); scanf("\n%c", &*y); a = x; b = y; short soma = a + b; printf("Primeiro numero eh: %hi\n", x); printf("Segundo numero eh: %hi\n", y); printf("A soma dos numeros eh: %hi\n", soma); system ("pause"); return 0; } Boa Noite! Preciso criar um programa que recebe dois números inteiros (short) que possam ser armazenados por variáveis (char) e transfiram seus valores para variáveis do tipo short e some os valores desses dois números, salvando o resultado também em uma variável do tipo short. Penso que isso deve ser feito através de ponteiros, mas já quebrei a cabeça e não saio do lugar. Algum colega conseguiria ajudar-me!?
  10. C Não consigo imprimir string dentro de struct

    Boa tarde, Estou aprendendo a programar C. No momento estou praticando structs. Fiz o programa de uma lista encadeada de restaurantes que guarde os seguintes dados : -Nome -Endereço -Tipo de comida -Nota do restaurante Todo o programa tem funcionamento satisfatório dentro do planejado, porém uma função, a qual separaria os restaurantes pelo tipo de comida que cada um tem não funciona. Já tentei de várias formas e realmente não encontrei o problema. Se alguém pudesse me ajudar ficaria grato. Também acrescento que sou novo ao forum, é meu primeiro tópico criado, então peço desculpas se fiz algo errado e fico grato por orientações. Abaixo o código de meu programa: /* Struct descreve restaurantes. Campos armazenam o nome do restaurante, o endereço, o tipo de comida (brasileira, japonesa ou mexicana) e uma nota para a cozinha (entre 0 e 5). Struct inserida em lista encadeada que: a) Insire um novo restaurante na lista; b ) Lista todos os restaurantes na tela; c) Lista os restaurantes separados por nota d) Lista os restaurantes separados por tipo de comida */ //Atualmente 1 falhas - nao exibe separacao por comidas #include <stdio.h> #include <stdlib.h> typedef struct Tipo_Restaurante { char nome[50]; char end[70]; char comida[50]; int nota; struct Tipo_Restaurante *proximo; } TRestaurante; void inserir(TRestaurante **cabeca); void listar(TRestaurante *cabeca); void listar_comida(TRestaurante *cabeca); void listar_nota(TRestaurante *cabeca); void exibe_menu(); int main() { TRestaurante *cabeca=NULL; //ponteiro para a cabeca TRestaurante *noatual; //ponteiro para percorrer lista char q; //caractere de selecao de acao do { exibe_menu(); scanf(" %c",&q); //captacao de escolha do usuario printf("\n"); switch(q) { case 'i': case 'I': inserir(&cabeca); break; case 'l': case 'L': listar(cabeca); break; case 'c': case 'C': listar_comida(cabeca); break; case 'n': case 'N': listar_nota(cabeca); break; case 't': case 'T': break; default: printf("\nOpcao invalida!\n\n"); } }while(q!='T'&&q!='t'); noatual=cabeca; //desaloca memoria alocada para lista while(noatual!=NULL) { cabeca=noatual->proximo; //aponta cabeca para proximo elemento free(noatual); //libera memoria de elemento anterior noatual=cabeca; //aponta noatual para endereco do proximo } return 0; } void exibe_menu() { printf("\n Digite I para inserir um restaurante\n"); //menu de escolhas printf(" Digite L para listar restaurantes\n"); printf(" Digite G para gravar restaurantes em arquivo\n"); printf(" Digite E para exibir restaurantes de arquivo\n"); printf(" Digite C para listar restaurantes por tipo de comida\n(Mexicana, Japonesa, Brasileira)\n"); printf(" Digite N para listar restaurantes por nota\n(Notas de 1 a 5)\n"); printf(" Digite T para terminar programa\n"); } void inserir(TRestaurante **cabeca) { TRestaurante *noatual, *novono; char nome[50]; char end[70]; char comida[50]; int nota; printf("Por favor, digite o nome do restaurante: "); gets(nome); gets(nome); printf("Por favor digite o endereco do restaurante: "); gets(end); printf("Por favor digite o tipo de comida servida no restaurante(Mexicana, Japonesa, Brasileira): "); gets(comida); printf("Por favor digite a nota que voce atribui a este restaurante(1 a 5): "); scanf("%d", &nota); printf("\n\n"); //Caso nao exista nenhum item na lista, cria o no cabeca if(*cabeca==NULL) { *cabeca=(TRestaurante*)malloc(sizeof(TRestaurante)); strcpy((*cabeca)->nome,nome); strcpy((*cabeca)->end,end); strcpy((*cabeca)->comida,comida); (*cabeca)->nota=nota; (*cabeca)->proximo=NULL; } //Caso ja existam itens na lista, busca o ultimo e acrescenta no ao final else { noatual=*cabeca; while(noatual->proximo!=NULL) //loop que percorre lista noatual=noatual->proximo; novono=(TRestaurante*)malloc(sizeof(TRestaurante)); //aloca memoria para novo no strcpy(novono->nome,nome); //atribui valores strcpy(novono->end,end); strcpy(novono->comida,comida); novono->nota=nota; novono->proximo=NULL; noatual->proximo=novono; //aponta para novono ao final } } void listar(TRestaurante *noatual) { if(noatual==NULL) { printf("\nLista vazia!\n\n"); } else { while(noatual!=NULL) { printf("\nNome do restaurante: %s\n", noatual->nome); //exibe valores printf("Endereco do restaurante: %s\n", noatual->end); printf("Tipo de comida do restaurante: %s\n", noatual->comida); printf("Nota do restaurante: %d\n\n", noatual->nota); noatual=noatual->proximo; //passa para o proximo no } } } void listar_comida(TRestaurante *noatual) //FUNCAO NAO FUNCIONA!!!!!!!!!!! { TRestaurante *aux; aux=noatual; if(noatual==NULL) //confere se lista esta vazia printf("\nLista vazia!\n\n"); printf("\nRestaurantes de comida Mexicana:\n"); while(noatual!=NULL) //imprime todos os restaurantes mexicanos { if(((noatual->comida)=="mexicana")||((noatual->comida)=="Mexicana")) { printf("%s\n", noatual->nome); } noatual=noatual->proximo; } noatual=aux; printf("\nRestaurantes de comida Japonesa:\n"); while(noatual!=NULL) //imprime todos os restaurantes mexicanos { if((noatual->comida=="Japonesa")||(noatual->comida=="japonesa")) { printf("%s\n", noatual->nome); } noatual=noatual->proximo; } noatual=aux; printf("\nRestaurantes de comida Brasileira:\n"); while(noatual!=NULL) //imprime todos os restaurantes mexicanos { if((noatual->comida=="Brasileira")||(noatual->comida=="brasileira")) { printf("%s\n", noatual->nome); } noatual=noatual->proximo; } } void listar_nota(TRestaurante *noatual) { TRestaurante *aux; //variavel auxiliar que aponta para inicio da lista aux=noatual; if(noatual==NULL) //confere se lista esta vazia printf("\nLista vazia!\n"); printf("\nRestaurantes nota 1:\n"); while(noatual!=NULL) //imprime todos os restaurantes de nota 1 { if((noatual->nota==1)) { printf(" %s\n", noatual->nome); } noatual=noatual->proximo; } printf("\nRestaurantes nota 2:\n"); noatual=aux; //noatual aponta novamente para inicio da lista while(noatual!=NULL) //imprime todos os restaurantes de nota 2 { if((noatual->nota==2)) { printf(" %s\n", noatual->nome); } noatual=noatual->proximo; } printf("\nRestaurantes nota 3:\n"); noatual=aux; //noatual aponta novamente para inicio da lista while(noatual!=NULL) //imprime todos os restaurantes de nota 3 { if((noatual->nota==3)) { printf(" %s\n", noatual->nome); } noatual=noatual->proximo; } printf("\nRestaurantes nota 4:\n"); noatual=aux; //noatual aponta novamente para inicio da lista while(noatual!=NULL) //imprime todos os restaurantes de nota 4 { if((noatual->nota==4)) { printf(" %s\n", noatual->nome); } noatual=noatual->proximo; } printf("\nRestaurantes nota 5:\n"); noatual=aux; //noatual aponta novamente para inicio da lista while(noatual!=NULL) //imprime todos os restaurantes de nota 5 { if((noatual->nota==5)) { printf(" %s\n", noatual->nome); } noatual=noatual->proximo; } }
  11. C Erro calcular as horas

    Estou tentando resolver uma questão na plataforma uri, porém não sei como faço para corrigir o meu código, o juiz está dando 40 % de erro.O link da questão #include <stdio.h> int main(int argc, char** argv) { int hora_1, minuto_1, hora_2, minuto_2, hora_final_1, hora_final_2, soma; scanf("%d %d %d %d", &hora_1, &minuto_1, &hora_2, &minuto_2); hora_final_1 = (hora_1 * 3600) + (minuto_1 * 60); hora_final_2 = (hora_2 * 3600) + (minuto_2 * 60); if(hora_final_2 > hora_final_1) { soma = hora_final_2 - hora_final_1; } else { soma = hora_final_1 - hora_final_2; } if(soma == 0) { printf("O JOGO DUROU 24 HORA(S) E 0 MINUTO(S)\n"); } else { printf("O JOGO DUROU %d HORA(S)", soma / 3600); soma %= 3600; printf("E %d MINUTO(S)\n", soma / 60); } return 0; }
  12. Pessoal , estou precisando implementar um codigo no ubuntu que execute um comando no promp. Qual função faz isso? Preciso executar o strace -o output.txt ls ... Desta forma irei manipular o arquivo(output.txt) que será gerado.
  13. Boa Noite ! Gostaria de algumas sugestões de livros, videos, qualquer conteúdo que eu possa acessar gratuitamente sobre lógica de programação , onde eu aprenda a seguir uma linha de raciocínio ,para poder implementar os códigos em c , eu tenho um pouco de conhecimento sobre a estrutura , mas falta desenvolver o raciocínio ! Desde já , agradeço a colaboração !
  14. Criei um programa que verifica se um numero é palindromo(Número palíndromo é aquele que, se lido de trás para frente e de frete para trás, é o mesmo).O programa funciona corretamente.Mas para conseguir salvar os numeros em um vetor tenho q digitar um digito dar enter e assim se repetindo.Queria saber como faço pra escrever todos os digitos,salva-los em um vetor sem q tenha q dar enter toda vez q escrevo um novo digito. #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int p[4],i,aux1=0,aux2=0,aux3=0,aux4=0,aux=0; printf("<<<<Numeros palindromos>>>>>"); printf("\nDigite um numero de 4 digitos: "); scanf("%d%d%d%d",&p[0],&p[1],&p[2],&p[3]); if((p[0]==p[1])&&(p[0]==p[2])&&(p[0]==p[3])) { printf("\n O numero %d%d%d%d e palindromo!!!\n",p[0],p[1],p[2],p[3]); } else { if((p[0]==p[3])) { aux=1; if((p[1]==p[2])) { aux2=1; } } if((aux==1)&&(aux2==1)) { printf("\n O numero %d%d%d%d e palindromo!!!\n",p[0],p[1],p[2],p[3]); } else { if((aux!=1)&&(aux2!=1)) { printf("\n O numero %d%d%d%d nao e palindromo!!!\n",p[0],p[1],p[2],p[3]); } } } system("pause"); return 0; }
  15. C Repetição da última linha do printf

    Boa noite pessoal. Estou engatinhando em um pequeno projeto em C e não estou com o código fonte todo pronto, estou criando em partes. E já na primeira parte, a que deveria mostrar a lista de itens de um arquivo, a última linha fica repetindo. Estou usando o "fscanf" para ler do arquivo. Se alguém puder me ajudar a resolver, ou me explicar onde estou errando, agradeço. Segue o código fonte, lembrando que as outras funções eu ainda não implantei.Segue também imagem das telas de execução, só para pré-visualização #include<stdio.h> #include<stdlib.h> #include<stdbool.h> #include<windows.h> void gotoxy(int x, int y){ COORD coord; coord.X = x; coord.Y = y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord); } typedef struct{ int cod; char nome[15]; float quant; float valor; float v_total; float v_venda; float lucro; }Dados; int head(){ for(int i = 0 ; i < 6 ; i++){ for(int j = 0 ; j < 50 ; j++){ if(i==0){ if(j==0){ printf("%c",201); } if(j==49){ printf("%c\n",187); } else{ printf("%c",205); } } if(i==5){ if(j==0){ printf("%c",200); } if(j==49){ printf("%c\n",188); } else{ printf("%c",205); } } }if(i>1&&i<5){ printf("%c%50c\n",186,186); } } gotoxy(2,2); printf("\tSISTEMA DE GERENCIAMENTO DE ESTOQUE\n\n\n"); } int body(){ for(int i = 0 ; i < 17 ; i++){ for(int j = 0 ; j < 50 ; j++){ if(i==0){ if(j==0){ printf("%c",201); } if(j==49){ printf("%c\n",187); } else{ printf("%c",205); } } if(i==16){ if(j==0){ printf("%c",200); } if(j==49){ printf("%c\n",188); } else{ printf("%c",205); } } }if(i>1&&i<16){ printf("%c%50c\n",186,186); } } } int menu(int *op){ head(); body(); gotoxy(2,6); printf("Digite a opcao desejada:"); int j=1; printf("\n\n"); for(int i = 9 ; i < 16 ; i++){ if(i==9){ gotoxy(2,i); printf("%d- Mostrar relatorio do estoque",j); j++; } if(i==10){ gotoxy(2,i); printf("%d- Salvar relatorio do estoque",j); j++; } if(i==11){ gotoxy(2,i); printf("%d- Inserir item no estoque",j); j++; } if(i==12){ gotoxy(2,i); printf("%d- Localizar item no estoque",j); j++; } if(i==13){ gotoxy(2,i); printf("%d- Excluir item do estoque",j); j++; } if(i==14){ gotoxy(2,i); printf("%d- Ajuda",j); j++; } if(i==15){ gotoxy(2,i); printf("%d- Sair",j); j++; } } gotoxy(27,6); scanf("%d",&*op); system("cls"); //return *op; } int main(){ Dados dados; FILE *txt; int opcao; do{ menu(&opcao); system("cls"); switch(opcao){ case 1:{ head(); body(); if((txt=fopen("estoque.txt","r"))==NULL){ printf("Não foi possivel aabrir o arquivo"); } else{ int i=8; gotoxy(1,7); printf("COD NOME QUANT VALOR VALOR_V VALOR_T LUCRO"); while(!feof(txt)){ fscanf(txt," %d %s %f %f %f %f %f",&dados.cod,&dados.nome,&dados.quant,&dados.valor,&dados.v_venda,&dados.v_total,&dados.lucro); ++i; gotoxy(2,i); printf("%d %s\t%.2f%5.2f%6.2f%9.2f%8.2f",dados.cod,dados.nome,dados.quant,dados.valor,dados.v_venda,dados.v_total,dados.lucro); } } fclose(txt); gotoxy(2,6); printf("Para sair digite 7:"); gotoxy(22,6); scanf("%d",&opcao); } case 2:{ printf("tchau"); break; } } }while(opcao!=7); gotoxy(1,20); return 0; }
  16. C Funcao atoi com vetor

    Boa noite mestres, a dois dias estou tentando fazer algo parecido com o código abaixo pois preciso converter um valor que foi digitado em uma váriavel CHAR e processar cada caractere individualmente(matriz) e assim retornar a resposta em INT. char numero[2]; int conv, i; for (i =0; i<2; i++) conv = atoi(numero[i]); O que tenho até o momento é isso aqui: #include <stdio.h> #include <stdlib.h> #include <string.h> /* Entendendo a função atoi Este código servira como base para o exercicio 1212 do URI Judge. */ int main(int argc, char *argv[]) { char antes[2]; int conv[2]; int i; //Entrada printf ("Digite o numero(string):. "); //scanf ("%c", &antes); Tentativa com scanf porque achei que era problema no gets... sem sucesso gets(antes); //Processamento for (i=0; i<2; i++){ // conv[i] = antes[i]; Tentei dessa forma mas também não funcionou conv[i] = atoi(antes[i]); } //Saida printf ("Convertido(int):. %d\n", conv); return 0; } Resumindo minha dúvida é se tem alguma forma de converter individualmente os valores char de um vetor usando a função atoi ou alguma outra coisa? adicionado 16 minutos depois Segue o erro que o dev c++ esta retornando
  17. C Problema em C / VETOR

    Codifique um programa que leia um número inteiro e, em seguida, outros 10 números inteiros em um vetor. O programa deve imprimir os 10 números lidos, informando se cada número é, ou não, múltiplo do primeiro número lido. O programa deve criar uma função auxiliar com a assinatura int eh_multiplo(int a, int b , que retorne 1 caso a seja múltiplo de b e 0, caso contrário. int eh_multiplo(int a, int vet[10]){ for (i=1;i<=10;i++) vet=b if (vet%a==0) return 1; else return 0; } int main() { int num, vet[10]; int i; printf("Digite um número:\t\n",setlocale(LC_ALL,"")); scanf("%d",&num); for(i=1;i<=10;i++){ printf("Digite o %d número:\t \n",i); scanf("%d",&vet); eh_multiplo(num,vet); } printf("É múltiplo"); return 0; }
  18. C Problema no MiKRoC Pro

    Quando eu abro a programação do PIC no MikroC Pro aparece como na figura abaixo. Alguém saberia como corrigir isso? Consigo abrir outros arquivos do PIC no MikroC no entanto esse não estou conseguindo.
  19. estou utilizando o matlab mas a linguagem é c puro né. Eu quero simular uma onda que bate na parede de um duto e reflete. igual à imagem anexada
  20. C colorir só alguns caracteres

    olá pessoal, alguém pode me ajudar, estou fazendo o jogo da lacraia e quero colorir os caracteres dessa lacraia de uma cor e os outros de outra cor, tem como fazer isso na linguagem c? agradeço quem puder ajudar . aqui está o código que estou fazendo . /* instruções - controle a lacraia com as setas do teclado - pegue a maçã para ganhar 3 pontos cada - se demorar muito a maçã vai para outro lugar - tecle ESC para parar */ #include <stdio.h> #include <conio.h> #include <time.h> #include <windows.h> int letras[7][7]={{ 224, 64, 64, 64, 64, 68,252 }, /*L*/ { 56 , 68,130,130,254,130,130 }, /*A*/ { 60 , 66,128,128,128, 66, 60 }, /*C*/ { 252,130,130,252,136,132,130 }, /*R*/ { 56 , 68,130,130,254,130,130 }, /*A*/ { 124, 16, 16, 16, 16, 16,124 }, /*I*/ { 56 , 68,130,130,254,130,130 }};/*A*/ void gotoxy(int x,int y){ COORD c; c.X = x; c.Y = y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c); } int i,a,b,c,player[20][2],direcao,mac; int h,g,pts,tempo; int som(int f){ Beep(f,150);/* primeiro a frquência depois o tempo de duração do som */ return 0; } void desenha_lacraia(){ a=player[0][0]; /*pega a posião x do rabo da lacraia*/ b=player[0][1]; /*pega a posião y do rabo da lacraia*/ for(i=0;i<20;i++){ /* todos os vinte pedaços da lacraia */ gotoxy(player[i][0],player[i][1]);/* coloca o cursor na posição */ printf("%c",42); /*42*/ /* coloca cada um dos pedaço da lacraia */ } gotoxy(player[19][0],player[19][1]); /* coloca o cursor na posição da cabeça da lacraia */ printf("O"); /* imprime a cabeça da lacraia */ gotoxy(a,b); /* coloca o cursor na posição do rabo da lacraia */ printf(" "); /* apaga o último caractere da lacraia que é o rabo que tinha ficado para tras */ gotoxy(59,2); /*coloca o cursor na posição de imprimir os pontos */ printf(" ");/* apaga o que estiver escrito */ gotoxy(59,2); /* coloca o cursor na posição de imprimir os pontos */ printf("Pontos -%c %d",16,pts);/* imprime os pontos */ tempo++; /* soma o tempo */ if(tempo > 80){ /* tempo que a maçã pode ficar no mesmo lugar */ mac=0; /* para poder colocar outra maçã*/ gotoxy(h,g);/* coloca o cursor na posição da maçã */ printf(" ");/* remove a maçã */ som(1500); /* som maçã mudou de lugar */ } } void atualiza_lacraia(){ for(i=0;i<19;i++){ /* a lacraia tem vinte pedaços */ player[i][0] = player[i+1][0];/* puxa os pedaços da lcraia para tras */ player[i][1] = player[i+1][1];/* puxa os pedaços da lcraia para tras */ } } int move_lacraia(){ for(i=0;i<20;i++){ c=0; if(kbhit()) c=getch(); if(c==27) return 0; if(c==77){ /* seta p/direita */ if(direcao==2)som(500); /* tentou voltar para tras */ else direcao=0; } if(c==80){ /* seta p/baixo */ if(direcao==3)som(500); /* tentou voltar para tras */ else direcao=1; } if(c==75){ /* seta p/esquerda */ if(direcao==0)som(500); /* tentou voltar para tras */ else direcao=2; } if(c==72){ /* seta p/cima */ if(direcao==1)som(500); /* tentou voltar para tras */ else direcao=3; } } switch(direcao){ case 0: if(player[19][0] < 45){ /* coluna da posição da cabeça da lacraia */ atualiza_lacraia(); /* puxa os pedaços da lacraia para tras */ player[19][0]++; /* move a cabeça da lacraia para direita */ }else som(900); /* som bateu nas bordas */ break; case 1: if(player[19][1] < 23){ /* linha da posição da cabeça da lacraia */ atualiza_lacraia(); /* puxa os pedaços da lacraia para tras */ player[19][1]++; /* move a cabeça da lacraia para baixo */ }else som(900); /* som bateu nas bordas */ break; case 2: if(player[19][0] > 1){ /* coluna da posição da cabeça da lacraia */ atualiza_lacraia(); /* puxa os pedaços da lacraia para tras */ player[19][0]--; /* move a cabeça da lacraia para esquerda */ }else som(900); /* som bateu nas bordas */ break; case 3: if(player[19][1] > 1){ /* linha da posição da cabeça da lacraia */ atualiza_lacraia(); /* puxa os pedaços da lacraia para tras */ player[19][1]--; /* move a cabeça da lacraia para cima */ }else som(900); /* som bateu nas bordas */ break; } if(player[19][0]==h&&player[19][1]==g){/* se lacraia comeu a maçã */ mac=0; /* sem maça */ pts+=3; /* soma os pontos */ som(2200); /* som comeu maçã */ } return 0; } int coloca_maca(){ int t=0,u=0; if(mac==0)tempo=0; if(mac==1)return 0; /*se já tem maçã não coloca outra*/ do{ h=rand()%45+1; /*escolhe coluna da maçã*/ g=rand()%22+1; /*escolhe linh da maçã*/ for(i=0;i<20;i++){ if(h==player[i][0]&&g==player[i][1])/*se algum pedaço da lacraia for = a posição da maçã repete*/ u=1; /*para repetir caso a maçã esteja sobre a lacraia */ } t++; if(t > 1000){ /* se o sistema demorar muito para escolher a posição da maçã */ u=0; g=1; h=1; } }while(u!=0); gotoxy(h,g); /*coluna e linha da maçã*/ printf("%c",3); /* coloca a maçã no lugar */ mac=1; /* informa que já tem uma maçã na tela */ return 0; } void tela_de_abertura(){ int y1=15,x1=8,y2=y1,x2=x1,j,i,a,b;/*y1=linha inicial y2 para recuperar a linha inicial*/ for(i=0;i<7;i++){ /* sao 7 letras */ for(j=0;j<7;j++){ /*o caractere é de 7 linhas */ a=letras[i][j]; /*pega o numero da 1 linha do caractere */ for(b=0;b<8;b++){ /*aqui eh um numero de 8 bits*/ gotoxy(x1, y1); /*posiciona o cursor no local */ if (a % 2 != 0) /*se bit=1 */ printf("%c",219); /*coloca espaço invertido */ else printf(" "); /*senão coloca espaço normal*/ a=a/2; /*dividindo numero por 2 desloca os bits para direita*/ x1--; /* move para coluna de tras */ Sleep(10); } y1++; /*muda para linha de baixo */ x1=x2; /*volta para a coluna inicial*/ } /*proxima linha*/ x2=x2+8; /*avança 8 colunas posicionando para o prox caract*/ x1=x2; y1=y2; /*volta para linha inicial*/ } /*imprimiu o primeiro caractere*/ gotoxy(0,23); } int main (){ srand(time(NULL)) ; tela_de_abertura(); printf(" Tecle"); getch(); system("cls"); for(i=0;i<47;i++) { /* desenha as bordas */ if(i<24) { gotoxy(0,i) ; /* primeira coluna da tela */ printf("%c",176); gotoxy(46,i) ; printf("%c",176);/* 219 caractere branco */ } gotoxy(i,0) ; /* primeira linha da tela */ printf("%c",176) ; gotoxy(i,24) ; /* ultima linha da tela */ printf("%c",176) ; } for(i=0;i<20;i++) { /* coloca a posiçao da lacraia no vetor */ player[i][0]=i+5 ; /* coloca as colunas */ player[i][1]=10 ; /* coloca as linhas */ } do{ desenha_lacraia(); move_lacraia( ); coloca_maca( ); Sleep(100 ); /* velocidade da lacraia */ }while(c != 27); gotoxy(10,21); return 0; }
  21. C cadastro funcionários usando 3 funções

    #include <stdio.h> #include <stdlib.h> struct funcionario { //cria a struct funcionario char nome[50]; //cria a variável nome float salario; //cria a variável salario }; typedef struct funcionario funcionario_t; void cadastra_funcionario () { //função que cadastra um novo funcionário funcionario_t lista_funcionarios[50]; funcionario_t novo_funcionario; int tamanho_lista = 0; printf("Informe o nome do funcionario \n"); scanf("\n%s", &novo_funcionario.nome); printf("Informe o salario do funcionario \n"); scanf("\n%f", &novo_funcionario.salario); lista_funcionarios[tamanho_lista] = novo_funcionario; tamanho_lista++; //fim da função que cadastra um novo funcionário } funcionario_t maior_salario(funcionario_t lista_funcionarios[], int tamanho_lista) { //função que encontra o funcionário com maior salário //int tamanho_lista = 0; if (tamanho_lista > 0) { int i, maior_indice; float maior_salario = 0; for (i = 0; i < tamanho_lista; i++) { if (lista_funcionarios[i].salario > maior_salario) { maior_salario = lista_funcionarios[i].salario; maior_indice = i; } printf("Nome: %s\n", lista_funcionarios[maior_indice]); printf("Maior salario: %f\n", maior_salario); } } //fim da função que encontra o funcionário com maior salário } int main(void) //função responsável por perguntar ao usuário se deseja cadastrar funciOnário ou saber o maior salário { funcionario_t lista_funcionarios[50]; int tamanho_lista = 0; int continuar = 1; char opcao; do { printf ("Digite C para cadastrar ou M para saber o maior salario \n"); scanf("\n\n%c", &opcao); switch (opcao) { case 'C': cadastra_funcionario(lista_funcionarios, tamanho_lista); tamanho_lista++; break; case 'M': maior_salario(lista_funcionarios, tamanho_lista); break; default: continuar = 0; } } while (continuar ==1); { //fim da função responsável por perguntar ao usuário se deseja cadastrar funcionário ou saber o maior salário system("pause"); return 0; } } Boa noite, tentei criar um programa que cadastra funcionários e seus respectivos salários. Este se utiliza de 3 funções: main, cadastra_funcionario e maior_salario, acontece que quando o usuário solicita o maior salário, O PROGRAMA retorna (através do printf) o nome e o salário de todos os cadastrados e sem nenhum valor. outra coisa é que o programa só aceita como dado de entrada 'C' ou 'M' em maiúsculas para cadastrar ou saber o maior salário. Já quebrei a cabeça e nada, alguém poderia me ajudar?
  22. C Saindo do Laço de Repeticacao

    Fala pessoal, estou estudando Analise e Desenvolvimentos de Sistemas, comprei alguns cursos na internet na linguagem C/C++ pra praticar nas férias e aprender mais sobre a linguagem, inclusive tirei algumas duvidas sobre VisuALG aqui no fórum mesmo, onde o @Simon Viegas me ajudou bastante. Depois te entender bem a lógica do portugol, passei pro C, numa ordem de aprendizado e como eu não gosto dessas questões que aparecem em sites pra treinar a linguagem, eu segui um dica de programar algo que eu goste, sou viciado em jogos, então estou desenvolvendo um sistema simples de rpg based text, apenas para aprendizagem... Porém estou com um problema que não consigo identificar, estou uns 3 dias tentando resolver, antes de pedir ajuda. Segue meu código completo: #include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> // define estrutura da ficha do personagem struct ficha { char nome[20]; int forca; int habilidade; int vitalidade; int armadura; int vida; int level; int experiencia; }; struct ficha personagem[10]; //cria o personagem void criacao(){ int forcatotal; while(forcatotal != 7){ printf("Digite o nome do seu Personagem:"); scanf("%s", &personagem[0].nome); printf(" voce tem 7 pontos para distribuir na ficha do seu personagem. \n As caracteristicas sao: Forca, Habilidade, Vitalidade e Armadura.\n Quantos pontos voce gostaria de por em Forca? :"); scanf("%i", &personagem[0].forca); printf("em Habilidade?"); scanf("%i", &personagem[0].habilidade); printf("em Vitalidade?"); scanf("%i", &personagem[0].vitalidade); printf("em Armadura?"); scanf("%i", &personagem[0].armadura); //soma os pontos para conferencia forcatotal = personagem[0].forca + personagem[0].habilidade + personagem[0].vitalidade + personagem[0].armadura; //checa se todos os pontos foram distribuidos if (forcatotal > 7){ system("CLS"); printf("voce gastou mais que 7 pontos, crie novamente o seu personagem[0].\n\n" ); } if (forcatotal < 7){ system("CLS"); printf("voce gastou menos que 7 pontos, crie novamente o seu personagem[0].\n\n"); } if (forcatotal == 7){ system("CLS"); printf("Personagem criado com sucesso.\n"); personagem[0].vida = personagem[0].vitalidade * 5; personagem[0].experiencia = 0; personagem[0].level = 1; if (personagem[0].vida == 0){ personagem[0].vida = 1; } mostra(); system("pause"); system("CLS"); } } } // mostra ficha do personagem int mostra() { printf("Nome do Personagem: %s \n", personagem[0].nome); printf(""); printf("Forca: %i \n", personagem[0].forca); printf("Habilidade: %i \n", personagem[0].habilidade); printf("Vitalidade: %i \n", personagem[0].vitalidade); printf("Armadura: %i \n", personagem[0].armadura); printf(""); printf("Pontos de Vida: %i \n", personagem[0].vida); printf("Pontos de Experiencia: %i \n", personagem[0].experiencia); system("pause"); system("CLS"); return 1; } // inimigos int inimigos(){ strcpy (personagem[0].nome, "Ikkyy"); personagem[0].forca = 3; personagem[0].habilidade = 3; personagem[0].vitalidade = 1; personagem[0].armadura = 1; personagem[0].vida = personagem[0].vitalidade * 5; strcpy (personagem[1].nome, "Coelho Selvagem"); personagem[1].forca = 1; personagem[1].habilidade = 2; personagem[1].vitalidade = 1; personagem[1].armadura = 1; personagem[1].vida = personagem[1].vitalidade * 5; strcpy (personagem[2].nome, "Goblin Sorrateiro"); personagem[2].forca = 1; personagem[2].habilidade = 2; personagem[2].vitalidade = 1; personagem[2].armadura = 2; personagem[2].vida = personagem[2].vitalidade * 5; strcpy (personagem[3].nome, "Esqueleto Guerreiro"); personagem[3].forca = 3; personagem[3].habilidade = 1; personagem[3].vitalidade = 2; personagem[3].armadura = 1; personagem[3].vida = personagem[2].vitalidade * 5; return 1; } int combate(){ inimigos(); // encontra o inimigo printf("\nVoce encontrou um %s \n", personagem[1].nome); printf("\n Deseja Atacar ou Correr?"); printf("\n1- Atacar"); printf("\n2- Correr\n"); int decisão = 0; scanf("%i", &decisão); if (decisão == 1){ // entra no laco sobre vida // personagem 1 x personagem 0 do { int dado[6], i, x, y, dano, defesa; dado[0] = 0; dado[1] = 0; dado[2] = 0; dado[3] = 0; dado[4] = 0; dado[5] = 0; x = 0; y = 0; printf("\nOs resultados dos dados de Habilidade foram:"); for (i = 0; i < personagem[0].habilidade; i = i + 1){ srand((unsigned) time(NULL)); dado[i] = (rand() % 6) + 1; //mostra os dados separados printf(" %i", dado[i]); } if (dado[0] >= 5|| dado[1] >= 5 || dado[2] >= 5 || dado[3] >= 5 || dado[4] >= 5 || dado[5] >= 5){ printf("\nOs resultados dos dados de Ataque foram:"); srand((unsigned) time(NULL)); // calcula os dados de ataque for (i = 0; i < personagem[0].forca; i = i + 1){ dado[i] = (rand() % 6) + 1; //mostra os dados separados printf(" %i", dado[i]); x = dado[i] + x; } // soma os dados printf("\nA soma dos seus Dados de Ataque foi: %i", x); // // calcula os dados de defesa printf("\n Os resultados dos dados de Defesa foram:"); srand((unsigned) time(NULL)); // calcula os dados de defesa do inimigo for (i = 0; i < personagem[1].armadura; i = i + 1){ dado[i] = (rand() % 6) + 1; printf(" %i", dado[i]); y = dado[i] + y; } // soma os dados printf("\nA soma dos Dados de Defesa foi: %i", y); dano = x - y; // calcula diferenca entre ataque e defesa printf("\n%s recebeu %i de dano", personagem[1].nome, dano); // dano menor ou igual a zero, nao da dano if(dano <= 0){ printf("\nVoce nao causou dano ao inimigo."); // dano sendo maior que 0, calcula a vida restante. }else{ personagem[1].vida = personagem[1].vida - dano; // printf("\nVoce atacou ele com sua forca e deu %i de dano.", dano); printf("\nAgora o %s tem %d de vida.", personagem[1].nome, personagem[1].vida); } // se defensor estiver sem vida, acabou. if(personagem[1].vida <= 0){ printf("\nVoce derrotou %s \n", personagem[1].nome); printf("\nVoce ganhou 5 pontos de experiencia.\n"); system("pause"); personagem[0].experiencia += 5; if (personagem[0].experiencia >= 10) { experiencia(); } system("CLS"); break; } }else{ printf("\n voce nao acertou o %s .\n", personagem[1].nome); } // Defesa x = 0; y = 0; dado[0] = 0; dado[1] = 0; dado[2] = 0; dado[3] = 0; dado[4] = 0; dado[5] = 0; printf("\nOs resultados dos dados de Habilidade foram:"); for (i = 0; i < personagem[1].habilidade; i = i + 1){ srand((unsigned) time(NULL)); dado[i] = (rand() % 6) + 1; //mostra os dados separados printf(" %i", dado[i]); } if (dado[0] >= 5|| dado[1] >= 5 || dado[2] >= 5 || dado[3] >= 5 || dado[4] >= 5 || dado[5] >= 5){ printf("\nOs resultados dos dados de Ataque do %s foram:", personagem[1].nome); srand((unsigned) time(NULL)); for (i = 0; i < personagem[1].forca; i = i + 1){ dado[i] = (rand() % 6) + 1; printf(" %i", dado[i]); x = dado[i] + x; } printf("\nA soma dos Dados de Ataque do %s foi: %i", personagem[1].nome, x); printf("\n Os resultados dos seus dados de Defesa foram:"); srand((unsigned) time(NULL)); for (i = 0; i < personagem[0].armadura; i = i + 1){ dado[i] = (rand() % 6) + 1; printf(" %i", dado[i]); y = dado[i] + y; } printf("\nA soma dos Dados de Defesa foi: %i", y); dano = x - y; printf("\n%s recebeu %i de dano", personagem[0].nome, dano); if(dano <= 0){ printf("\nNao causou dano."); }else{ personagem[0].vida = personagem[0].vida - dano; // printf("\nVoce atacou ele com sua forca e deu %i de dano.", dano); printf("\nAgora voce tem %d de vida.", personagem[0].vida); } if(personagem[0].vida <= 0){ printf("\nVoce foi derrotado %s \n", personagem[0].nome); gameover(); exit(0); } }else{ printf("\n %s nao te acertou.\n", personagem[1].nome); } }while (personagem[1].vida <= 0 || personagem[0].vida <= 0); } } int experiencia() { system("CLS"); personagem[0].experiencia = 0; printf("\nVoce subiu de level !!"); printf("\nQual atributo voce gostaria de melhorar? !!"); printf("\n 1- Forca?"); printf("\n 2- Habilidade?"); printf("\n 3- Vitalidade?"); printf("\n 4- Armadura?"); int decisao2 = 0; scanf("%i", &decisao2); if(decisao2 == 1){ personagem[0].forca += 1; printf("\nVoce aumentou sua forca!"); } if(decisao2 == 2){ personagem[0].habilidade += 1; printf("\nVoce aumentou sua habilidade!"); } if(decisao2 == 3){ personagem[0].vitalidade += 1; personagem[0].vida += 5; printf("\nVoce aumentou sua Vitalidade. \n Pontos de Vida: +5!\n"); } if(decisao2 == 4){ personagem[0].armadura += 1; printf("\nVoce aumentou sua Armadura!"); } return 1; } int gameover() { printf("\n _____ _____ _____ _____ _____ _____ _____ _____ "); printf("\n| __| _ | | __| | | | | __| __ |"); printf("\n| | | | | | | __| | | | | | __| -|"); printf("\n|_____|__|__|_|_|_|_____| |_____| ___/|_____|__|__|\n"); return 0; } //sair do jogo void sair() { printf("Tchau !!\n"); } int main() { { int continuar = 1; do { // menu inicial printf("+++++++++++++++++++++++++++++++++++"); printf("\n"); printf("++++++++ Meu Poderoso RPG +++++++++"); printf("\n"); printf("++++++++ 1. Criar Personagem ++++++"); printf("\n"); printf("++++++++ 2. Ver Personagem ++++++++"); printf("\n"); printf("++++++++ 3. Jogar +++++++++++++++++"); printf("\n"); printf("++++++++ 0. Sair ++++++++++++++++++"); printf("\n"); printf("+++++++++++++++++++++++++++++++++++"); printf("\n"); scanf("%i", &continuar); system("CLS"); switch(continuar) { case 1: criacao(); break; case 2: mostra(); break; case 3: combate(); break; case 0: sair(); break; default: printf("Digite uma opcao valida\n"); } } while(continuar); } return 0; } Alguns valores já estão inseridos apenas para testes, para chegar no meu problema, Execute o código, aperta 3 para Jogar, nas situações que o Coelho Selvagem é derrotado, tá certo, o problema é no final dos testes de habilidade tanto do personagem[0] e do [1] , ele encerra o laço após e não volta no meu while/do. Isso começou a acontecer depois que acrescentei o teste de habilidade no combate. Se alguém puder me apontar o problema. é bem provável que meu código pode ser muito aprimorado, mas não é o caso, quero aprender passo a passo sem pular etapas. Obrigado pela atenção. EDIT: Aproveitar pra tirar uma duvida, quando eu vou usar um valor random (rand) eu sempre preciso por o srand((unsigned) time(NULL)); ou ele só precisa ser lido uma vez durante a execução de um código?
  23. C porque o programa não pega o else?

    Estou criando um jogo que gera um numero aleatorio e a pessoa deve adivinha-lo,o programa dá dicas se o numero digitado é maior ou menor que o sorteado,porém não está entrando no else que é o que diz que o numero é menor que o sorteado.O que está errado? #include <stdio.h> #include <stdlib.h> #include <time.h> int main () { int op,sorteio=0,cont=1; srand((unsigned)time(NULL)); sorteio=rand(); printf("Sorteando um numero entre [0,%d]\n", RAND_MAX); printf("%d",sorteio); do { printf("\n Tentativa %d: ",cont); scanf("%d",&op); if(sorteio>op) { printf("O numero sorteado e maior que %d",op); }else { printf("O numero sorteado e menor que %d",op); } cont++; } while( op !=sorteio ); printf("parabéns voce acertou o numero sorteado em %d tentativa(s)\n ",cont-1); system("pause"); return 0; }
  24. C Comando C++ para abrir navegador firefox minimizado

    Olá, Tem algum comando para abrir uma janela do Firefox minimizada, sem tirar o foco do meu programa? Com o IE eu consegui com o comando <system("start /min iexplore.exe http://www.google.com");>, mas se eu alterar para o Firefox ele abre a janela normalmante (não minimizada). Alguém sabe como posso fazer isto? pode ser um comando C++ ou pelo próprio about:config do Firefox. Obrigado!

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

×