Ir ao conteúdo
  • Cadastre-se

Luis Vilo

Membro Júnior
  • Posts

    18
  • Cadastrado em

  • Última visita

Reputação

16
  1. @MOR tirei outra foto. Acho que esta dá pra ver mais claramente
  2. Bom dia, estou tentando resolver uma questão ligada à aplicação de amplificadores e resolvi, mas não sei se tá certo. Alguém poderia revisar pra mim, pfvr? O circuito da figura se utiliza para ligar o led em função de Vg. a) Encontre Vo1 em função de Vg e faz um gráfico indicando os pontos caracteristicos. Justifique a zona de funcionamento do transistor e encontre a corrente de base e acorrente que passa pelo led quando: b)Vo1 = Vsat+ c) Vo1 = vsat- Dados: Vcc = 10V, Rb = 2kohms, Rc=470 ohms. Transistor: hfe = 75, Vbe(on) = 0,6 V, Vce(sat) = 0,2 V. Amp op: Vsat+ = Vcc e Vsat- = 0V
  3. @AdrianoSiqueira vou dar uma olhado nisso aí que você fez! Obgd pela ajuda!
  4. Bom dia! Eu tô criando um jogo de cartas (usuario vs PC) e preciso de ajuda. O jogo é o seguinte: Há um baralho com 4 naipes diferentes. Cada grupo de naipe tem 7 cartas (de 1 a 7) e 3 cartas diferentes (valete, cavaleiro e rei). Ou seja, o baralho tem no total 40 cartas. O objetivo é conseguir fazer 7,5 pontos (parece o clássico jogo do blackjack). As 7 primeiras cartas de cada naipe valem o valor que tem a propria carta e as 3 "diferentes" valem 0.5 cada. Daí o programa pergunta pro usuario se quer carta ou quer passar a vez pro PC. Ganha quem fizer os 7,5 pontos ou quem chega mais proximo dessa pontuação, mas sem ultrapassar. Se ultrapassar, perdeu. #include <stdio.h> #include <stdlib.h> #include <time.h> #include <math.h> int main() { srand( time(NULL) ); int chave, carta; float pontos; printf("Aperte 1 para comecar a jogar ou 0 para passar!\t"); scanf("%d", &chave); printf("\n"); while(chave==1){ carta = rand()%10+1; if(carta==8 || carta==9 || carta==10){ pontos = 0.5; } else{ pontos = carta; } printf("Tua pontuacao e': %0.1f \n", pontos); printf("Quer outra carta? (Aperte 1 para sim)\t"); scanf("%d", &chave); while(chave==1){ carta = rand()%10+1; if(carta==8 || carta==9 || carta==10){ pontos = pontos + 0.5; } else{ pontos = pontos + carta; } printf("\n"); printf("Tua pontuacao e': %0.1f \n", pontos); if(pontos>7.5){ printf("PERDEU! Tua pontuacao supera o limite!\n"); system("pause"); return 0; } printf("Quer outra carta? (Aperte 1 para sim)\t"); scanf("%d", &chave); printf("\n"); } int cartapc; float pontos_pc; cartapc = rand()%10+1; if(cartapc==8 || cartapc==9 || cartapc==10){ pontos_pc = 0.5; } else{ pontos_pc = cartapc; } printf("A pontuacao do pc e': %0.1f \n", pontos_pc); if(pontos_pc==pontos){ printf("O pc venceu! \n"); } else{ if(pontos_pc>7.5){ printf("você venceu! A pontuacao do pc supera o limite! \n"); } else{ if(pontos_pc>pontos){ printf("O pc venceu! \n"); } } } while(pontos_pc<pontos){ cartapc = rand()%10+1; if(cartapc==8 || cartapc==9 || cartapc==10){ pontos_pc = pontos_pc + 0.5; } else{ pontos_pc = pontos_pc + cartapc; } printf("A pontuacao do pc e': %0.1f \n", pontos_pc); if(pontos_pc==pontos){ printf("O pc venceu! \n"); } else{ if(pontos_pc>7.5){ printf("você venceu! A pontuacao do pc supera o limite \n"); } else{ if(pontos_pc>pontos){ printf("O pc venceu! \n"); } } } } printf("\n"); printf("Quer jogar outra vez? (Aperte 0 para sim)\t"); scanf("%d", &chave); printf("\n"); } system("pause"); return 0; } Eu fiz isso, mas meu propósito mesmo é o seguinte: Eu peço carta, daí o PC joga. Quando o PC joga, eu peço carta. E assim sucessivamente até alguém ganhar ou perder. Ou seja, que seja alternado. Eu só consegui fazer do jeito que tá o codigo aí, em que eu jogo tudo primeiro e depois o PC, sem alternar. E eu não quero isso. Alguém pode me ajudar? Eu também gostaria de saber se há algum jeito de fazer com que um número não seja sorteado mais de 4 vezes (por causa dos 4 naipes)? Porque do jeito que eu fiz aí, um numero pode ser sorteado infinitas vezes... Grato!
  5. a final fiz um programa bastante parecido com o que você apresentou aqui. muito obrigado pela cooperação.
  6. Já consegui construir o programa. obrigado pela ajuda
  7. meu professor ainda não explicou o que é um vetor, então acredito que não posso usá-lo...
  8. Boa tarde! Preciso construir um programa para calcular o orçamento de um computador. O programa tem de pedir ao usuario as especificações do computador que quer, e dependendo disso o preço final vai ser um ou outro. Especificações: * Processador: i5 (500 reais), i7 (750 reais), i9 (1200 reais) * Memória RAM: 8 GB (200 reais), 16 GB (300 reais) * Disco rigido: 256 GB (200 reais), 512 GB (300 reais), 1 TB (500 reais) O usuário será questionado sobre o tipo de computador que deseja, usando as opções numéricas (1, 2 e 3, em o caso do processador; 1 e 2 no caso da memória; 1, 2 e 3, no caso do disco rígido). O usuário escolherá as opções pelo teclado. Eu tinha começado a fazer assim: utilizando um bocado de switch-case, mas daí percebi que ia ficar imenso porque são muitas opções (18 preços finais possiveis: olhem o fluxograma que anexei abaixo). #include <stdio.h> #include <stdlib.h> /* Constantes */ #define P_I5 500 #define P_I7 750 #define P_I9 1200 #define RAM_8GB 200 #define RAM_16 300 #define DD_256GB 200 #define DD_512GB 300 #define DD_1T 500 int main() { int op1, orçamento, preço_total; printf ("***bem-vindo/a***\n\n"); printf ("Venha fazer o orçamento do seu novo computador\n\n"); do { printf ("Qual processador quer?\n"); printf ("1. i5 (500 reais)\n2. i7 (750 reais)\n3. i9 (1200 reais)\n"); scanf("%d", &op1); switch (op1){ case 1:{ int op2; orçamento = P_I5; printf ("Orçamento no momento: ", orçamento); do{ printf ("Qual memoria RAM quer?\n"); printf ("1. 8 GB (200 reais)\n2. 16 GB (300 reais)\n"); scanf ("%d", &op2); switch (op2){ case 1: int op3; orçamento = P_15 + RAM_8GB; printf ("Orçamento no momento: ", orçamento); do{ printf ("Qual disco rigido quer?\n"); printf ("1. 256 GB (200 reais)\n2. 512 GB (300 reais)\n3. 1 TB (500 reais)"); scanf ("%d", &op3); . . . } } }while (op1 != 1 && op1 != 2); } } }while (op1 != 1 && op1 != 2 && op1!=3); return 0; } Eu só posso utilizar estruturas de controle neste programa: if-else, do-while, for, switch-case. Nada de funções. Mas tô tendo muita dificuldade em achar uma maneira de fazer isso. Alguém pode me ajudar? Ficaria muito grato!
  9. @arfneto entendi a lógica, inclusive achei massa! Vou tentar fazer aqui, mas gostaria sim de ver um exemplo! Muito obrigado mais uma vez e feliz 2020!
  10. Oi, gente! Como o @arfneto pediu tô postando um código aqui pra ver se ele ou outra pessoa podeolhar o q eu fiz errado e me ajudar, por favor. Tudo isso é um projeto de escola e eu tô tendo um pouco de dificuldade. Eu tenho de codificar um arquivo e decodificar esse arquivo. A parte de codificar eu já fiz, mas a de decodificar não tá dando muito certo. O problema é que eu Não posso usar funçoes como strcmp, sizeof, memcmp,etc.. para comparar as letras em morse(string), tenho de criar minha própria função e tô me embolando um pouco com isso. Além disso cada letra do arquivo que eu tenho de decodificar é separada por tres espaços e cada palavra por cinco (como no arquivo que anexei). #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> /* Constantes */ #define T_MORSE 8 #define Q_LETRAS 26 #define Q_NUMEROS 10 #define Q_MORSE (Q_LETRAS+Q_NUMEROS) #define MAX_STRING_SIZE 100 typedef struct{ char letras[5]; /* armazena a letra. A recebe como uma string , mas só usa a primeira letra */ char letrasMorse[T_MORSE];/* armazena os respectivos simbolos morse */ }alfabeto; alfabeto l[Q_MORSE]; void decodifica(const char *linha) { int j=0, i=0, p=0; char letra[6]; while(i<strlen(linha)-1){ //lee a a frase inteira while (linha[i] == ' '){ i++; } while((linha[i]) !=' '){ letra[p]= linha[i]; //coloca o caracter de linha na posição i em letra na posição p scanf("%c", letra[p]); i++; p++; }while ((letra!=l[j].letrasMorse)&& (j<Q_MORSE)){ j++;} //aponta para a proxiam letra ou numero for(p=0; letra[p]==l[j].letrasMorse[p] && letra[p]=='\0'; p++); // compara strings if (letra == l[j].letrasMorse){ printf("%c", l[j].letras[0]); } j=0; p=0; } } int main(){ int cont=0,j; FILE *arch; arch = fopen("morse.txt","r"); if( arch == NULL ){ printf("ERROR"); return 0; } else{ while(fscanf(arch,"%s%s",l[cont].letras,l[cont].letrasMorse) != EOF){ l[cont].letras[1] = '\0'; /* elimina caracteres indesejados */ for(j=0; l[cont].letrasMorse[j]; j++){ if(l[cont].letrasMorse[j] == '*'){ /* se encontra un asterisco */ l[cont].letrasMorse[j] = '\0'; /* elimina o asterisco */ break; } } cont++; /* aponta para a proxima posiçao do vetor */ } } fclose(arch); FILE *fp; char linha[MAX_STRING_SIZE]; fp = fopen("codifica.txt", "r"); if (arch==NULL){ printf("ERROR");} while (fgets(linha,MAX_STRING_SIZE,fp) != NULL ) { decodifica(linha); } fclose(fp); return 0; } codifica.txt
  11. @arfneto , obrigado pela explicação. O asterisco serve como sentinela mesmo, meu professor me explicou. Agora se não for muito abusar, você (ou outra pessoa) poderia olhar esse código que eu fiz e me ajudar, por favor. Tudo isso é um projeto de escola e eu tô tendo um pouco de dificuldade. Eu tenho de codificar um arquivo e decodificar esse arquivo. A parte de codificar eu já fiz, mas a de decodificar não tá dando muito certo. O problema é que eu Não posso usar funçoes como strcmp, sizeof, memcmp,etc.. para comparar as letras em morse(string), tenho de criar minha própria função e tô me embolando um pouco com isso. Além disso cada letra é separada por tres espaços e cada palavra por cinco (como no arquivo que anexei abaixo). #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> /* Constantes */ #define T_MORSE 8 #define Q_LETRAS 26 #define Q_NUMEROS 10 #define Q_MORSE (Q_LETRAS+Q_NUMEROS) #define MAX_STRING_SIZE 100 typedef struct{ char letras[5]; /* armazena a letra. A recebe como uma string , mas só usa a primeira letra */ char letrasMorse[T_MORSE];/* armazena os respectivos simbolos morse */ }alfabeto; alfabeto l[Q_MORSE]; void codifica(const char *linha) { int j=0, i=0, p=0; char letra[6]; FILE *fp; fp = fopen("mmm.txt", "w"); while(i<strlen(linha)-1){ //lee a a frase inteira while (linha[i] == ' '){ i++; } while((linha[i]) !=' '){ letra[p]= linha[i]; //coloca o caracter de linha na posição i em letra na posição p scanf("%c", letra[p]); i++; p++; }while ((letra!=l[j].letrasMorse)&& (j<Q_MORSE)){ j++;} //aponta para a proxiam letra ou numero for(p=0; letra[p]==l[j].letrasMorse[p] && letra[p]=='\0'; p++); // compara strings if (letra == l[j].letrasMorse){ printf("%c", l[j].letras[0]); } j=0; } } int main(){ int cont=0,j; FILE *arch; arch = fopen("morse.txt","r"); if( arch == NULL ){ printf("ERROR"); return 0; } else{ while(fscanf(arch,"%s%s",l[cont].letras,l[cont].letrasMorse) != EOF){ l[cont].letras[1] = '\0'; /* elimina caracteres indesejados */ for(j=0; l[cont].letrasMorse[j]; j++){ if(l[cont].letrasMorse[j] == '*'){ /* se encontra un asterisco */ l[cont].letrasMorse[j] = '\0'; /* elimina o asterisco */ break; } } cont++; /* aponta para a proxima posiçao do vetor */ } } fclose(arch); FILE *fp; char linha[MAX_STRING_SIZE]; fp = fopen("help.txt", "r"); if (arch==NULL){ printf("ERROR");} while (fgets(linha,MAX_STRING_SIZE,fp) != NULL ) { codifica(linha); } fclose(fp); return 0; } codifica.txt
  12. @KXSY Agora sim! Mt obrigado mais uma vez, cara!
  13. @KXSY eu fiz as mudanças baseado no q você escreveu, e agora converte o texto todo, mas os números de maneira errada. Tipo, se é 0 converte como A (em morse), se é 1 como B, 2 como C, etc...
  14. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> /* Constants */ #define T_MORSE 8 #define Q_LETTERS 26 #define Q_NUMBERS 10 #define Q_MORSE (Q_LETTERS+Q_NUMBERS) #define MAX_STRING_SIZE 50 typedef struct{ /* precisa de uma posição p/ o finalizador de string \0 */ char letters[5]; /* armazena as letras , pegas como string , mas usa apenas a 1ª letra */ char lettersMorse[T_MORSE];//* armazena os respectivos simbolos morse das letras */ }alphabet; alphabet l[Q_MORSE]; char process(const char *line) { int j, i; for (i = 0; line[i]; ++i) { for ( j = 0; j < 37; ++j ){ //vector para as letras e numeros em morse if (line[i] == l[j].letters[0]){ printf("%s", l[j].lettersMorse); printf(" ");} } } } int main(){ int cont=0,j; FILE *arch; arch = fopen("morse.txt","r"); if( arch == NULL ){ printf("ERROR"); return 0; } else{ while(fscanf(arch,"%s%s",l[cont].letters,l[cont].lettersMorse) != EOF){ l[cont].letters[1] = '\0'; /* elimina caracteres indesejados */ for(j=0; j<strlen(l[cont].lettersMorse); j++){ if(l[cont].lettersMorse[j] == '*'){ /* se encontra um asterisco */ l[cont].lettersMorse[j] = '\0'; /* elimina o asterisco */ break; } } cont++; /* aponta p/ próxima posição do Vetor */ } } fclose(arch); FILE *fp; char line[MAX_STRING_SIZE]; fp = fopen("original1.txt", "r"); if (arch==NULL){ printf("ERROR");} while (fscanf(fp,"%s",line) != EOF) { process(line); } fclose(fp); return 0; } Oi, gente! Depois de que umas pessoas aqui me ajudassem com a tarefa de armazenar o alfabeto latino e seu respectivo codigo morse em um estrutura, resolvi fazer um programa para converter em morse um arquivo.txt externo. O problema é que: meu input (original1.txt) é assim: 2 mais 3 sao 5 estamos em 2019 meu nome eh luis e meu output são só os numeros em morse. Não converte as letras Se alguém puder me dar uma luz, ficaria agradecido! original1.txt
  15. @devair1010 @KXSY Muito obrigado de vdd! Me ajudaram muito! Só não entendi esta parte do código. Por que se há de usar -65? Grato.

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...