Ir ao conteúdo
  • Cadastre-se

sannoy

Membro Pleno
  • Posts

    51
  • Cadastrado em

  • Última visita

Tudo que sannoy postou

  1. @edupiombini Olá, Preste atenção no nome das variáveis, Você está especificando errado. na hora de pegar os valores com scanf(). Você está recebendo os valores duas vezes na mesma variável. Recomendo testar com valores pré definidos primeiro depois fazer o input, E utilizar nomes maiores e mais claros em variáveis para evitar que você cometa estes erros. Espero ter lhe ajudado, até mais!
  2. @Luis Felipe Aparecido Olá, Mostrarei de uma forma mais simples, o seu código estava muito complicado para uma questão simples (Acontece todos já foram iniciantes em algo, alguma vez). Para fazer isto basta salvar o input utilizando fgets() e depois analisar o input e fazer o que @rjjj já sugeriu (exceto o sprintf() que neste caso não seria necessário), segue exemplo em código (Apenas um vetor): #include <stdio.h> #include <stdlib.h> int main() { int msize = 10000; // Tamanho máximo int xpos = 0; // Marca a posição do algarismo int vsize = 0; // Quantidade de digitos int va[msize]; // Vetor, OK... char a[msize]; // Guarda os valores de stdin // INPUT HERE: fgets(a, msize, stdin); // E se o input não for de numeros inteiros positivos? if (atoi(a) == 0 || atoi(a) < 0) return 1; // retorne 1 // Quantos digitos foram passados? Vamos ver: for (size_t i = 0; a[i]; i++) vsize++; vsize--; // Qual a posição do algarismo menos significativo? for (int i = vsize; i > -1; i--) { if((a[i] - '0') > 0) { // Adiciona o algarismo ao vetor na posição 0 va[0] = a[i] - '0'; xpos = i; // Marca a posição break; // Quebra o loop já achemos o algarismo } } // Vetor contem apenas o algarismo menos significativo? // Bora adicionar os outros digitos: for (int i = 1, j = 0; j < vsize; j++) { // Sem contar o algarismo é claro: if(a[j] != a[xpos]) { // Adicionar digito ao vetor: va[i] = ((int)a[j]) - ((int)'0'); i++; // Próxima posição do vetor } } // Imprimir digitos do vetor: for (int i = 0; i < vsize; i++) printf("%d", va[i]); // Execução completada com sucesso? return 0; // retorne 0 } Espero ter lhe ajudado, até mais!
  3. @Haslan Olá, Testei e funcionou: CSS: #interface img { border: 2px solid red; } HTML: <!DOCTYPE html> <html lang="pt-BR"> <head> <meta charset="UTF-8"> <title>Tudo sobre Google Glass</title> <link rel="stylesheet" type="text/css" href="-estilo-css/-index-2-estilo.css"> </head> <body> <div id="interface"> <header id="cabecalho"> <hgroup> <h1>Google Glass</h1> <h2>A revolução do Google está chegando</h2> </hgroup> <figure> <img src="-imagens/ocu.png.png"/> </figure> Menu Principal - Home - Especificações - Fotos - Multimídia - Fale conosco </header> <hgroup><h3>Tecnologia > Inovações</h3> <h1>Saiba tudo sobre o Google Glass</h1> <h2>por Hendrio Leão</h2> <h3>Atualizado em 01/Out/2020</h3> </hgroup> <h2>O que é</h2> <p style="text-align: justify;text-indent: 50px;"><span style="font-weight: bolder;">O Google Glass</span> é um acessório em forma de óculos que possibilita a interação dos usuários com diversos conteúdos em realidade aumentada. Também chamado de Project Glass, o eletrônico é capaz de tirar fotos a partir de comandos de voz, enviar mensagens instantâneas e realizar vídeo&shy;confe&shy;rênci&shy;as. Seu lançamento está previsto para 2014, e seu preço deve ser de US$ 1,5 mil. Atualmente o Google Glass encontra-se em fase de testes e já possui um vídeo totalmente gravado com o dispositivo. Além disso, a companhia de buscas registrou novas patentes anti-furto e de desbloqueio de tela para o acessório. </p> <figure class="foto-legenda"> <img src="-imagens/cava.jpg" width="556px" height="auto" /> <figcaption> <h3>Google Glass</h3> Uma nova maneira de ver o mundo. </figcaption> </figure> </br><h2>Data de lançamento</h2> <p>Não há uma data específica e oficial para o dispositivo ser lançado, ainda. Pode ser que ele esteja disponível em demonstrações a partir de 2013, mas seu lançamento para as lojas fica para, pelo menos, 2014. </p> <h2>Especificações Técnicas</h2> <br>Tabela Técnica do Google Glass Mar/2013</br> Tela:Resolução equivalente a tela de 25"</br> Camera: 5MP para fotos / 720p para vídeos</br> Conectividade: Wi-Fi/ Bluetooth</br> Memória Interna: 12GB</br> </p> <h2>Como funciona</h2> <p>De acordo com fontes próximas do Google, os óculos vão contar com uma pequena tela de LCD ou AMOLED na parte superior e em frente aos olhos do usuário. Com o uso de uma câmera e GPS, você pode se situar, assim como selecionar opções com o movimento da cabeça </p> <h2>O que você pode fazer com o Google Glasses</h2> <p>O vídeo de divulgação do Google mostra que você pode se transformar em uma espécie de “super-<wbr/>humano”, já que o aparelho pode indicar a quantos metros você está de seu destino, se o metrô está aberto ou fechado, mostrar o clima, agenda e até mesmo permitir que você marque encontros apenas com comandos de voz. </p> [AQUI ENTRA UM VÍDEO] <h2>Outras Notícias</h2> Vídeo mais recente [AQUI ENTRA UM VÍDEO] <h2>Novidades no Glass</h2> <p style="text-align: justify;text-indent: 50px">O Google enfim revelou as especificações completas do Google Glass, e com ele uma surpresa ainda inédita no mercado: a gigante das buscas usará um sistema de áudio baseado na transdução por condução. Através das hastes dos óculos, o som será transmitido para o ouvido do usuário por meio de microvibrações em determinados ossos de sua cabeça, sem usar nenhum tipo de alto-falante. Além da surpresa do áudio, a tela montada a frente do olho do usuário também chamou atenção. Serão 640 x 360 pixels de resolução que, em proporção, equivaleria a um monitor de 25 polegadas de alta definição colocado a 2,5 metros de distância do espectador. </p> Copyright 2020 - by Hendrio Leão Instagran </div> </body> </html> Obs.: O tamanho em <img/> foi porque a imagem que usei era 4k não tinha uma menor... adicionado 5 minutos depois Ok, o CSS ficaria assim então: #interface > figure img { border: 2px solid red; } Espero ter lhe ajudado, até mais!
  4. @Haslan Olá, Use as ferramentas de desenvolvedor do navegador e inspecione a imagem. Precisaríamos do .html referente a esta página para poder te ajudar mais. Se você está utilizando <img/> para mostrar a imagem, basta colocar uma class="" ou id="" e depois utilizar o css para fazer o estilo usando o valor que passou para class="" ou id="". Exemplo: HTML <img id="imageID" src=""/> CSS #imageID { /*Stylesheets*/ } Espero ter lhe ajudado em algo, até mais!
  5. sannoy

    C Fazer string em c

    @mauro_b Olá, Apenas uma dica, não aconselho fechar sua cabeça desta forma, Em programação depende muito de lógica, vai de cada pessoa (programador e/ou estudante) buscar o que se encaixa melhor logicamente, as vezes pode ser while outras for. Ficar escolhendo por "fanatismo" ou simplesmente por gostar da sintaxe, algumas vezes pode dar uma dor de cabeça para outros dev's que lidarem com seu código no futuro. Bom, tem diversas formas mais simples(sem e com loop) para este caso, uma possibilidade seria a seguinte: char * l = buff; if((*l >= 'a' && *l <= 'z')||(*l >= 'A' && *l <= 'Z')) letter = *l; l = NULL; Claro que depende muito qual lógica você tem em mente mas, como @Loyanne Medrado não especificou que precisaria de um menu ou que repetisse o input, acho que neste caso ficaria aceitável.
  6. sannoy

    C Fazer string em c

    Quanta complicação para um problema simples... @Loyanne Medrado Olá, Segue exemplo em código de uma possível resolução: #include <stdio.h> int main() { int sizes = 50; // Tamanho maximo da string int xpos[sizes]; // Amazena as posições int count = 0; // Quantas ocorrencias char str[sizes]; // Recebera a string (as input) char buff[2]; // Recebera a letra (as input) char letter; // Amazenara a letra entre aA-zZ printf("\nDigite uma string: "); fgets(str, sizes, stdin); printf("\nDigite um caractere entre aA-zZ: "); fgets(buff, 2, stdin); // For loop para verificar a letra passada for(char * l = buff; *l; ++l) { if((*l >= 'a' && *l <= 'z')||(*l >= 'A' && *l <= 'Z')) { letter = *l; break; } } // For loop para verificar cada letra da string for (size_t i = 0; i < sizes; i++) { if (str[i] == letter) { xpos[count] = i; // Marca as posições count++; // Adiciona 1 a flag count } } if(count <= 0) { printf("\nNão econtrado!\n"); return 1; } printf("\nEncontrado %d ('%c') em:", count, letter); for (size_t x = 0; x < count; x++) printf(" %d", xpos[x]); printf("\n"); return 0; } Espero ter lhe ajudado, até mais!
  7. @RaphiaelGamer Sim, em C normalmente lidamos com funções tendo main() como função principal de todo programa. Até mesmo os comandos da linguagem C, por exemplo: fgets() e atof(), entre outros. São funções disponíveis por bibliotecas que incluímos no header do arquivo. Cada função pode ser definida para retornar um valor específico, um inteiro, caracteres, entre outros. No caso da função principal normalmente para casos desse tipo retornar 0, significa execução completada com sucesso. Espero ter lhe ajudado, até mais!
  8. @Davi Dutra Olá, Você está confundindo/bagunçando muito, a sua lógica pode não estar clara. Antes de sair escrevendo código tenha uma ideia clara ou melhor um plano do que você quer e/ou precisa. O que deu para compreender é que você precisa efetuar um saque, depois imprimir o valor do saldo após o saque e imprimir uma mensagem se o valor do saque for maior que o do saldo. Você criou a sua função main() tipo int logo você deveria utilizar o return para retornar um numero inteiro o que não acontece. Você está complicando o seu código com um if-else sendo que neste caso, você poderia utilizar apenas um if, como? passarei um código de exemplo: #include <stdio.h> #include <stdlib.h> int main () { double saldo = 1000; // valor disponivel na conta char buff[128]; // receberá o valor passado pelo usuário printf ("\n :: Digite o valor a ser sacado: "); // Não utilize scanf(). Acostume-se a utilizar // fgets() para está finalidade. // Troque: scanf ("%d", &ValorSaque); // por: fgets(var, size, stream); fgets(buff, 128, stdin); // Converta o valor do input para double, // Se o valor for invalido ficará igual a 0 double saque = atof(buff); // Verifica se o valor do saque é maior do que o // Disponivel em saldo if (saque > saldo) { printf("\nO valor do saque é maior do que o disponivel.\n"); return 1; } saldo -= saque; // Extrai o valor do saldo printf ("\n - Sacando: R$ %.2f\n - Saldo final: R$ %.2f\n", saque, saldo); system ("pause"); return 0; } Eu fiz um post sobre uma lógica bem similar, Recomendo olhar o post a seguir e tentar completar o código que passei: Espero ter lhe ajudado, até mais!
  9. @JoaoTesla Olá, Esse problema é bem simples, você apenas deu uma complicada desnecessária no seu código mas, como este problema tem diversas formas de resolução, passarei um exemplo (INCOMPLETO) de uma possível resolução, fica por sua conta alterar e tornar o mesmo funcional: /* Escreva um programa em C que simule um caixa eletrônico. Ao executar o programa deverá apresentar um menu com as opções: 1 - Inserir dinheiro (banco) 2 - Mostrar saldo (banco) 3 - Sacar dinheiro (cliente) 4 - Fim Funcionalidades: Inserir dinheiro (banco) - o banco insere dinheiro no caixa. O programa deverá perguntar o valor inserido e somar ao saldo atual no caixa eletrônico. Mostrar saldo (banco) - o banco solicita o valor do saldo atual no caixa eletrônico. Sacar dinheiro (cliente) - O cliente saca dinheiro do caixa. O programa deverá perguntar o valor desejado pelo cliente e este valor deverá ser subtraído do saldo do caixa. Caso o valor informado for maior que o saldo, o programa deverá informar ao cliente. Fim (banco) - o banco finaliza o caixa e o programa deverá mostrar o saldo atual do caixa. Obs.: Ao concluir as operações 1, 2 e 3 deverá retornar ao menu. */ #include <stdio.h> #include <stdlib.h> /* APENAS UM EXEMPLO, VOCÊ PODE FAZER DE DIVERSAS OUTRAS FORMAS, NÃO SOLUCIONAREI O SEU PROBLEMA POR COMPLETO APENAS UMA PARTE. LEIA O CÓDIGO BUSQUE entender O MESMO, TEM VÁRIAS ALTERAÇÕES QUE PODERIAM SER FEITAS. */ // Função para efetuar o depósito: int depositValue(double iv, double * p); // Função para efetuar o saque: int withdrawValue(double iv, double * p); int main() { // VARIAVEL COM SALDO ATUAL: double saldo = 0; /* LEVANDO EM CONTA QUE O CÓDIGO NECESSITA DE MAIS DE UM MENU UTILIZEI UMA VARIÁVEL TIPO 2D ARRAY PARA AS OPÇÕES DO MENU: OBS.: APENAS POR ESCOLHA, SE NÃO QUISER BASTA CRIAR OUTRA VÁRIA E ADAPTAR O RESTANTE DO MENU: */ char menu[2][32]; do { printf("\n1 - Inserir dinheiro (banco)"); printf("\n2 - Mostrar saldo (banco)"); printf("\n3 - Sacar dinheiro (cliente)"); printf("\n4 - Fim\n:: Entre uma opção: "); // NÃO UTILIZE O scanf() ALTERNATIVA? fgets(): fgets(menu[0], sizeof(menu[0]), stdin); if (atoi(menu[0]) == 1) { printf("\n- Valor: "); fgets(menu[1], sizeof(menu[1]), stdin); /* USE AQUI A FUNÇÃO RELATIVA PARA FAZER O DEPOSITO, CONVERTA O VALOR DE 'menu[1]' PARA DOUBLE. OBS.: PASSE O ENDEREÇO DA VARIÁVEL 'saldo', NÃO O VALOR. */ } else if (atoi(menu[0]) == 2) { printf("\n- Saldo atual: %.2f\n", saldo); } else if (atoi(menu[0]) == 3) { printf("\n- Valor: "); fgets(menu[1], sizeof(menu[1]), stdin); /* USE AQUI A FUNÇÃO RELATIVA PARA FAZER O SAQUE, CONVERTA O VALOR DE 'menu[1]' PARA DOUBLE. OBS.: PASSE O ENDEREÇO DA VARIÁVEL 'saldo', NÃO O VALOR. */ } else if (atoi(menu[0]) != 4) { printf("\nopção invalida!\n"); } } while(atoi(menu[0]) != 4); /* COLOQUE AQUI A MENSAGEM FINAL. */ return 0; } /* OBS.: COMO AMBAS FUNÇÕES ESTÃO UTILIZANDO PONTEIROS PARA ALTERAR O VALOR DA VARIÁVEL DESTINO, UTILIZE '*p' E NÃO APENAS 'p'; */ int withdrawValue(double iv, double * p) { if (iv <= 0) { printf("\nvalor invalido!\n"); return -1; } if (*p < iv) { printf("\nsaldo insuficiente.\n"); return -1; } // COLOQUE AQUI A OPERAÇÃO NECESSÁRIA PARA "SACAR". p = NULL; return 0; } int depositValue(double iv, double * p) { if (iv <= 0) { printf("\nvalor invalido!\n"); return -1; } // COLOQUE AQUI A OPERAÇÃO NECESSÁRIA PARA DEPOSITAR. p = NULL; return 0; } O ato f de estudar é muito importante! Espero ter lhe ajudado em algo, até mais!
  10. sannoy

    FraÇÃo em c

    @M3onique Olá, Para evitar a utilização da função scanf(), poderia ser assim: /* GOSTARIA QUE ME AJUDASSEM NO SEGUINTE PROBLEMA: Escreva um programa que calcule a soma de duas frações, fornecendo o resultado em forma de fração, seu programa deve verificar se as frações são válidas. FORMATO DE ENTRADA:Consiste de quatro números inteiros da forma a/b + c/d EXEMPLO: 12/5 + 8/7 FORMATO DE SAIDA:Consiste de uma fração seguida por um fim de linha. Deve imprimr ``entrada invalida!´´ caso uma das frações tenha denominador 0.obs:Imprimir sem as aspas. */ #include <stdio.h> #include <stdlib.h> int test(int i); int main() { char buff[4][56]; int x[2], y[2], r; for(size_t k = 0; k < 4; k++) { printf("\n%ld) Valor: ", (k+1)); fgets(buff[k], sizeof(buff[k]), stdin); if (k == 0) { x[0] = atoi(buff[k]); r = test(x[0]); } else if (k == 1) { x[1] = atoi(buff[k]); r = test(x[1]); } else if (k == 2) { y[0] = atoi(buff[k]); r = test(y[0]); } else if (k == 3) { y[1] = atoi(buff[k]); r = test(y[1]); } if(r != 0) k--; } printf("%d/%d\n", (x[0] + y[0]), (y[1] + x[1])); return 0; } int test(int i) { if (i == 0) { printf("entrada invalida!\n"); return -1; } return 0; } Fica até mais limpo o código, utilizando apenas um loop for(). Espero ter lhe ajudado em algo, até mais!
  11. @Igor Soares da Paixão Para ler utiliza-se o fopen("arquivo","r"), o exemplo que te mostrei acima de outra utilização do fflush(), faz o uso do mesmo. Já para o processo de tratamento dos dados o @arfneto já falou, até mais que o necessário. Leia com atenção e estude. Se tiver mais dúvidas eu outro usuários tentaremos te ajudar, até mais!
  12. @Igor Soares da Paixão Olá, Sugestões, Ok... Meu camarada, que dor!! ver está utilização do scanf() seguido de fflush(). Utilize está função como base: char * input(char *stgt, int smax){ FILE *f = stdin; int s; char *p; /* get max bytes or upto a newline */ for (p = stgt, smax--; smax > 0; smax--) { if ((s = fgetc(f)) == EOF) break; if (s == '\n') break; *p++ = s; } *p = 0; if (p == stgt || s == EOF) return NULL; return (p); } Agora você poderia utilizar está função input da seguinte forma: char variavelDestino[tamanho]; input(variavelDestino,tamanho); E pelo "Santo da Engenharia de Software" se é que o mesmo existe... Remova este monte de fflush(stdin), se quiser, utilize ele desta forma: fflush(); // Assim ele "flushará"/"limpará" todas as streams abertas Outra utilização de fflush(): (https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rtref/fflush.htm) FILE *stream; int ch; unsigned int result = 0; stream = fopen("mylib/myfile", "r"); while ((ch = getc(stream)) != EOF && isdigit(ch)) result = result * 10 + ch - '0'; if (ch != EOF) ungetc(ch,stream); fflush(stream); /* fflush desfaz o efeito da função ungetc */ printf("The result is: %d\n", result); if ((ch = getc(stream)) != EOF) printf("The character is: %c\n", ch); LEMBRANDO: Se for possível(caso não tenha limitações da universidade) NÃO utilize o scanf() como input de STRINGS para usuários, porque? No MÍNIMO se o usuário passar um valor maior que o do buffer pode causar um overflow. Espero ter lhe ajudado em algo, até mais!
  13. @Flavio Ferrarezi Olá, Você precisa apenas ler o nome do funcionário?! Se for basta utilizar fgets() e levar o nome para a sua estrutura. // Ficaria assim: // Obs.: Defina a estruturá dentro da função main() int main() { struct funcionarios { char nome[50]; float salario; } admin; // O fgets() utilizará o fgetc() para ler os caracteres // que você passar via stdin e irá retornar eles quando você // precionar enter. // Lembrando, que o nome terá uma nova linha '\n' no final. fgets(admin.nome, 50, stdin); /* * --- Restante do seu código -- **/ return 0; } DICA: Para deixar mais limpo a sua função main(), você poderia colocar este monte de if em uma função que retorne o resultado. Exemplo: float teste_salario(float *s); // Define a função para fazer o teste do salario int main() { /* * --- Restante do seu código -- **/ printf("\n:: Digite o salario: "); scanf("%f", &admin.salario); printf("\n- Imposto sera: %.2f\n", teste_salario(&admin.salario)); return 0; } float teste_salario(float *s) { float i = 0; // Valor que será retornado (imposto) if (*s <= 1637.11) { printf("Isento de imposto de renda"); i = 0; } /* * --- Restante do seu código -- **/ return (i); } Espero ter lhe ajudado em algo, até mais!
  14. @Cícero Santoss Olá, Neste caso, se você utilizar char ao invés de string você teria que apenas passar apenas um caractere. Se você pegar o seu código e passar apenas uma letra(char) ele irá executar mas, um nome com apenas uma letra... O uso de string no caso é porque você quer/precisa de múltiplos caracteres, por exemplo: "Cícero" 6 caracteres unidos, e não apenas 'C'. É se você tentar passar caracteres para a variável salariofixo, vai acontecer algo similar que tentar passar uma string(nome) para char. Espero ter lhe ajudado, até mais!
  15. @Cícero Santoss Olá, Você, se esqueceu de incluir as bibliotecas necessárias, não soube ou esqueceu de como definir a precisão para o salário total. O código que fiz para exemplo é bem similar ao seu, com algumas alterações: #include <iostream> #include <iomanip> #include <string> using namespace std; int main() { string nome; double salariofixo, vendasefetuadas; double salariototal; cout << "Nome: "; getline(cin, nome); cout << "Salario: "; cin >> salariofixo; cout << "Total de vendas: "; cin >> vendasefetuadas; salariototal = salariofixo+((vendasefetuadas*15)/100); cout << "Salario total = " << fixed << setprecision(2) << salariototal << "\n"; return 0; } Espero ter lhe ajudado em algo, até mais!
  16. @Erkling Olá, Utilize a flag -Wall para o compilador, alterei o gets() para o fgets() e funcionou. Deixarei um código como exemplo: int main(int argc, char *argv[]){ int opc, cont = 0; char nomeR[TAM_NOME]; noContato *dados = (noContato*)malloc(sizeof(noContato)); do{ //do..while para o menu printf(">> 1 para inserir um contato na agenda\n>> 2 para remover um contato na agenda\n>> 3 para listar todos os contatos da agenda\n>> 4 para sair da agenda\nDigite a opcao desejada:\n"); scanf("%d", &opc); getchar(); switch(opc){ case 1: printf("Digite o nome:"); fgets(dados->nome, TAM_NOME, stdin); printf("Digite o telefone:"); fgets(dados->telefone, TAM_TELEFONE, stdin); if(pesquisaContato(dados)==-1){ if(insereContatoNaAgenda(dados)==true){ printf("Nome inserido com sucesso.\n"); } else{ printf("Nao foi possivel inserir o nome.\n"); } } else{ printf("Dados ja existentes.\n"); } printf("\n"); break; case 2: printf("Digite o nome a ser removido:"); fgets(nomeR, TAM_NOME, stdin); if(removeContatoDaAgenda(nomeR)==true){ printf("Nome removido com sucesso.\n"); } else{ printf("Nao foi possivel remover.\n"); } printf("\n"); break; case 3: imprimeAgenda(prim); printf("\n"); break; case 4: cont++; destroiAgenda(); break; default: printf("Opcao invalida\n"); printf("\n"); break; } }while(cont==0); }//end main Espero ter lhe ajudado em algo, até mais!
  17. @Anderson.Cruz Olá, Utilize o botão <> para passar seu código. Eu testei este código da seguinte forma e funcionou perfeitamente, depois de alterar as aspas. #include <stdio.h> int main(){ char letra; int a; a = 10; letra = 'L'; letra = letra + a%2; printf("a = %d e letra = %c.\n", a, letra); return 0; } Era isto que você estava precisando? Espero ter lhe ajudado em algo, até mais!
  18. @callwano Olá, Poderia explicar melhor a sua questão. A sintaxe do for para repetir duas vezes é a seguinte: for (size_t i = 0; i < 2; ++i) { } Com base no seu código eu presumo que o que você precise é de um loop tipo do-while, mas preciso saber mais sobre o que você precisa. Espero ter lhe ajudado em algo, até mais!
  19. @Cayê , Tente da seguinte seguinte forma: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Template</title> </head> <body> <div class="__site"> <div id="player"> <audio autoplay hidden> <source src="./kddC4gi72UE.mp3" type="audio/mpeg"> If you're reading this, audio isn't supported. </audio> </div> </div> </body> </html> Espero ter lhe ajudado, até mais!
  20. Olá @HenriqueXD, Basta inserir dentro de um loop tipo do-while, eu fiz deixando desta forma: import java.util.Scanner; import javax.swing.JOptionPane; class Atividade { public static void main(String[] args) { Scanner teclado = new Scanner(System.in); int n1, n2; char operacao; do { System.out.println("Digite o primeiro número: "); n1 = teclado.nextInt(); System.out.println("Digite o segundo número: "); n2 = teclado.nextInt(); System.out.println("Escolha operação: "); System.out.println("============"); System.out.println("CALCULADORA"); System.out.println("============"); System.out.println("[+] Para somar"); System.out.println("[-] Para subtrair"); System.out.println("[*] Para multiplicar"); System.out.println("[/] Para dividir"); System.out.println("[0] Para sair"); operacao = teclado.next().charAt(0); switch(operacao) { case '+': System.out.println("O resultado será: " + (n1 + n2)); break; case '-': System.out.println("O resultado será: " + (n1 - n2)); break; case '*': System.out.println("O resultado será: " + (n1 * n2)); break; case '/': System.out.println("O resultado será: " + (n1 / n2)); break; } } while(true && operacao != '0'); } } Espero ter lhe ajudado, até mais!
  21. Olá @Serena, O seu erro foi basicamente com a variável saldoFim além de ser inútil a criação, neste simples caso, você estava verificando o valor final ao invés do valor operado causando o erro lógico, além da redundância causada pelo uso inadequado do switch() e if() fazendo a mesma verificação. Como não foi passado o código inteiro eu presumo que o programa poderia ser simplificado da seguinte forma: #include <stdio.h> int main() { float saldoInicial, valorOperado; int codigo, conta; printf("\n - Qual seu saldo atual? "); scanf("%e", &saldoInicial); printf("\n Digite:\n 1) Para Saque;\n 2) Para Transferência;"); printf("\n Código de operaçao escolhido: "); scanf("%d", &codigo); switch (codigo) { case 1: printf("\n Informe o valor a ser sacado: "); scanf("%e", &valorOperado); break; case 2: printf("\n Conta de Transferência: "); scanf("%d", &conta); printf("\n Informe o valor a ser transferido: "); scanf("%e", &valorOperado); break; default: printf("\nCódigo informado inválido.\n"); return 2; } if (valorOperado > saldoInicial) { printf("\n[!] Saldo Insuficiente \n"); return 1; } printf("\n[+] Operaçao realizada com sucesso. Seu saldo atual é de %.2f \n", (saldoInicial - valorOperado)); return 0; } Espero ter lhe ajudado de alguma forma, até mais!
  22. @William Omar Olá! 1- Para verificar se a posição no array é null/empty. Exemplo, em código: char userInput[5]; if (userInput[0] == '\0') { // Ações caso seja null/empty } 2- Para verificar se contém apenas espaço. Exemplo, em código: if (userInput[0] == ' ') { // Ações caso contenha apenas espaços } Alterei um pouco o seu código ficou assim: #include <iostream> #include <stdio.h> #include <stdlib.h> #include <ctype.h> using namespace std; int main() { //Declarando variaveis Globais char c_Quantidade[100]; //quantidade no estoque char c_Venda[100]; //quantidade vendida int i_Quantidade; //recebe a quantidade do estoque int i_Venda; //recebe a quantidade vendida int total; //Efetua operação de subtração entre estoque e venda //Declarando variaveis globais cout << "DIGITE a quantidade: \n"; cin >> c_Quantidade; //Entra com a quantidade em estoque // Testa os valores de c_Quantidade[0] se forem nulos ou apenas espaços em branco if ((c_Quantidade[0] == '\0') || (c_Quantidade[0] == ' ')) { cout << " NENHUM VALOR PASSADO, SAINDO...\n"; return 1; } // Testa os valores de c_Quantidade[0] se são digitos if (((isdigit(c_Quantidade[0])) == 0) && ((isdigit(c_Quantidade[0])) == 0)) { cout << "DIGITE UM NUMERO ANTA\n"; return 1; } cout << "Digite a venda: \n"; cin >> c_Venda; //Entra com a quantidade vendida // Testa os valores de c_Venda[0] se forem nulos ou apenas espaços em branco if ((c_Venda[0] == '\0') || (c_Venda[0] == ' ')) { cout << " NENHUM VALOR PASSADO, SAINDO...\n"; return 1; } // Testa os valores de c_Venda[0] se são digitos if (((isdigit(c_Venda[0])) == 0) && ((isdigit(c_Venda[0])) == 0)) { cout << "DIGITE UM NUMERO ANTA\n"; return 1; } // Executa ação caso os requerimentos sejam validos i_Quantidade = atoi(c_Quantidade); i_Venda = atoi(c_Venda); total = i_Quantidade - i_Venda; cout << total; return 0; } Espero ter lhe ajudado, até!
  23. @Wanderson2016 Olá! Parece que você está enfrentando um worm (Bem feito por sinal), ele está em algum dispositivo com acesso a sua rede. Porque? você formatou as máquinas e mesmo assim voltaram a ser infectadas, se não houver outro motivo e for por apenas acessar a rede, simplesmente desconecte. Apenas conecte após certificar que a rede está "segura". Não passe apenas um antivírus worm são feitos para ficarem invisíveis e se espalhar, conseguem lidar facilmente com algoritmos de antivírus. Para lidar com worm não se lida com algoritmos prontos você deve achar e limpar ele da existência. Verifique todas possibilidades um worm pode ser passado por um pendrive plugado em um computador com acesso a rede e infectar varios dispositivos conectados na mesma rede. E colocar outros códigos para executar, Ex.: chamar um vírus para roubar passwords, um spyware, etc. Se, não for um worm você pode estar passando por um ataque direcionado aí... complica. Porque, não se trata mais de apenas um código lidando com diversas possibilidades mas, uma ou mais, pessoas analisando e executando essas ações. Tratando-se de um ambiente de trabalho não poderei recomendar mais nenhuma ação específica, apenas procure ajuda de um profissional da área! Worm e ataques direcionados, não são algo que alguém com conhecimento apenas em informática médio/básica conseguirá lidar. Vou torcer para que eu esteja errado e seja algum problema bobo, porque já enfrentei ambos problemas citados e a dor de cabeça é f0d@. Espero que tudo de certo no final! Até!
  24. @JDias9 Olá! É possível obter domínio total de um dispositivo remotamente? Sim, mas não tão exagerado como você citou, domínio total de um aparelho é bem complexo, muito raro de conseguir remotamente tendo alvo um dispositivo desconhecido (Da pra obter mas, muito difícil se, não impossível). Mas, pode acontecer ainda mais se o atacante de alguma forma já tiver trabalhado com um software dentro do dispositivo. Mas, se tratando de Android graças ao SELinux torna-se muito difícil (quase impossível) uma ataque de controle remoto. Obter conversas, conversas de zap, instagram, facebook? Pode acontecer, se não houvesse criptografia. Ou se houver uma falha de aplicação. E o mais comum é falha do usuário. Os Ataque Contra Provedor Roaming: Podem interceptar mensagens, rastrear dispositivos e gerar outros ataques de fraude, além do famoso ataque Denial of Service. Graças a algumas ferramentas existentes online torna isto automático e "simples". Potencialmente, também pode obter informações relacionadas à topologia, causar erros logicos, falhas de implementação. Obs.: Há e só pra constar, alguns scammers usam falácias sobre isto só para ganhar algo em cima de leigos. Muitos deles não sabem nem explorar uma vulnerabilidade sem ferramentas prontas na Internet, quem dirá obter controle remoto de um dispositivo sem a ajuda do usuário. É bem comum ver scammers ameaçando usuário por mensagens e spam, com ameaças deste tipo. Quer, ficar seguro, desculpe lhe informar, mas ninguem está, mas para aliviar: As operadoras e Facebook com suas aplicações estão constantemente criando mitigações e precauções para evitar esses problemas. Busque se informar sobre, porque grande parte (se não for todos) dos ataques remotos possuem ajuda do próprio usuário sem o mesmo saber. Algum tempo atrás estava em uma máquina virtual, rodando Fedora Linux e fui navegar em uns sites conhecidos por scam, um deles pedia: "Clique para atualizar a licença do seu Norton Security". Obviamente eu achei engraçado mas, imagina um leigo que tivesse no Windows usando esta ferramenta... Provavelmente iria clicar. Espero ter lhe ajudado com sua dúvida.
  25. @Naite Olá! - A primeira mensagem de erro: "Metadata file 'D:\New folder (2)\wa\wabbajack-20200119\Wabbajack\bin\Debug (no commandargs)\Wabbajack.exe could not be found", Aparentemente está dizendo que não foi possível encontrar o arquivo de metadata Wabbajack.exe. Possível solução? Recomendo que leia as instruções para compilar o programa, porque algo pode estar faltando as chamadas dependencias pre-compilação (Ações que devem ser feitas antes de compilar o programa) normalmente passada em um arquivo README no repositório do projeto. - A segunda mensagem de erro: Está dizendo que você provavelmente não instalou de forma correta o git no seu sistema, ou o software não conseguiu encontrar. (Há chance de que o software tentou usar o git para fazer o download do arquivo de metadata mas, falhou e emitiu estas duas mensagens de erro. Não posso afirmar com certeza, visto que não tenho muito conhecimento sobre os software em questão.) Possível solução? Certifique, que você instalou o Git de forma correta. E há um monte de mensagens de alerta que vale a pena você dar uma estudada para entender o que pode ser feito, o que são e se são importantes. Como não uso o Visual Studio a muito tempo, ficarei limitado a mais informações sobre o mesmo. Obs.: Se você não entende Inglês, é mais do que recomendado que busque estudar este idioma, grande parte das documentações e informações nesta área estão em Inglês, sem contar que as linguagens de programação utilizam palavras que com conhecimento de Inglês você conseguirá entender muito melhor. Espero ter lhe ajudado, com o pouco que sei sobre isto.

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