Ir ao conteúdo

isrnick

Membro Pleno
  • Posts

    1.558
  • Cadastrado em

  • Última visita

Tópicos solucionados

  1. O post de isrnick em Como copiar variável (%%f) para outro Batch? foi marcado como solução   
    @JohnWiki Basta usar caracteres de escape:
    http://www.robvanderwoude.com/escapechars.php
     
    Aí o script batch fica assim:
    @echo off echo @echo off >> "Unir.bat" echo if exist #Nivers.txt del /f #Nivers.txt ^>nul >>"Unir.bat" echo for %%%%f in (*.log) do type "%%%%f" ^>^> #Nivers.txt >>"Unir.bat" echo exit /b >>"Unir.bat" pause>nul exit E a saída gerada:
    @echo off if exist #Nivers.txt del /f #Nivers.txt >nul for %%f in (*.log) do type "%%f" >> #Nivers.txt exit /b  
  2. O post de isrnick em Transformar um string char em int foi marcado como solução   
    Os caracteres dos dígitos indo de '0' a '9' estão em sequência na tabela ASCII, indo da posição 48 até 57 na tabela, então basta subtrair '0', que é o primeiro número da seqüência, do caractere que quer converter para obter o número inteiro correspondente.
    oct[i] - '0'  
    Também poderia subtrair 48 que é o número do caractere '0', mas acho que subtrair '0' descreve melhor o que deseja fazer, além de não precisar saber qual é o número dele na tabela para chegar ao resultado.
  3. O post de isrnick em Outro problema com if foi marcado como solução   
    Você usou o especificador de tipo errado no scanf, colocou %s que é para strings, mas deveria ser %c para ler apenas 1 caractere.
     
    scanf (" %c", &sexo); Observe que coloquei um espaço antes do %c na string " %c", isso serve para descartar quaisquer caracteres vazios/branco (espaço, tabulação, nova linha '\n', etc) que venham antes da letra, pois assim o %c só vai pegar o primeiro caractere não-vazio/branco, que seria a letra digitada a qual estamos interessados.
     
    Note também que caractere minúsculo 'm' é diferente do caractere maiúsculo 'M', então se digitar minúsculo não vai satisfazer a condição do seu if.
     
     
    E leia minha assinatura abaixo para ver como postar códigos no fórum.
  4. O post de isrnick em Como identificar a assinatura digital de uma dll? foi marcado como solução   
    Fazendo uma busca por "windows api get digital signature for this file" achei várias referências falando para usar WinVerifyTrust:
    https://msdn.microsoft.com/en-us/library/aa388208(VS.85).aspx
     
    Programa exemplo:
    https://msdn.microsoft.com/en-us/library/aa382384(VS.85).aspx
     
    Pesquise sobre e dê uma estudada e veja se te atende.
  5. O post de isrnick em Problema para calcular a média em C foi marcado como solução   
    Média é igual a soma de todos os salários dividido pela quantidade de salários, então use uma variável para ir somando cada salário que é digitado, e no fim divida o resultado final da soma pela quantidade de salários, ou seja 10 salários, para obter a média.
  6. O post de isrnick em Problemas com a recursividade foi marcado como solução   
    Ele vai entrando a esquerda, até tentar entrar novamente e não existir mais nada, nesse caso ele apenas retorna como mencionei acima, quando retornou ele finalmente imprime o Reg.Chave do último p válido encontrado, e aí entra a direita...
     
    Como falei o melhor método pra entender é você fazer o "teste de mesa" no papel para visualizar.
  7. O post de isrnick em Progrmação C - Nã apresenta posição cadastrada foi marcado como solução   
    Use ponteiros nos parâmetros pos_maior e pos_menor da função, e passe as referências das variáveis no main() quando chamar esta função. Assim toda alteração que fizer dentro da função no local apontado pelos ponteiros vai estar modificando os valores das variáveis fora da função, no escopo onde a função foi chamada.
    #include <stdio.h> #include <string.h> #define NCLI 3 struct cadastro { char nomes[30], escolaridade[30]; float renda; }; typedef struct cadastro TipoCliente; void flush_stdin(){ int c; while((c = getchar()) != '\n' && c != EOF); } int Le_Vetores(TipoCliente cliente[NCLI]) { int num=0; int i; for(i=0; i<NCLI; i++) { printf("\nDigite o nome: "); scanf("%30[^\n]", cliente[i].nomes); flush_stdin(); printf("\nDigite o nivel de escolaridade > 'fundamental', 'media' ou 'superior': "); scanf("%30s", cliente[i].escolaridade); flush_stdin(); printf("\nDigite a renda mensal: "); scanf("%f", &cliente[i].renda); flush_stdin(); num++; } return (num); } int Renda_Superior_5000(TipoCliente cliente[NCLI], int num, char nomes_5mil[NCLI][30]) { int cont=0; int i; for(i=0; i<num; i++) { if (cliente[i].renda > 5000 && strcmp(cliente[i].escolaridade,"media")==0) { strcpy(nomes_5mil[cont],cliente[i].nomes); cont++; } } return (cont); } void Exibe_Nomes(char nomes_5mil[NCLI][30], int cont) { int j; for(j=0; j<cont; j++) { printf("\nO nome do cliente acima de 5mil e escolaridade media: %s", nomes_5mil[j]); } } void Maior_Menor_Renda(TipoCliente cliente[NCLI], int num, int *pos_maior, int *pos_menor) { int i; int maior = 0; int menor = 0; maior = cliente[0].renda; menor = cliente[0].renda; for(i=0; i<num; i++) { if (cliente[i].renda > maior) { maior = cliente[i].renda; *pos_maior = i; } } for(i=0; i<num; i++) { if (cliente[i].renda < menor) { maior = cliente[i].renda; *pos_maior = i; } } } int main() { TipoCliente cliente[NCLI]; int numcli; int pos_maior, pos_menor; char nomes_5mil[NCLI][30]; int cont; numcli = Le_Vetores(cliente); cont = Renda_Superior_5000(cliente, numcli, nomes_5mil); Exibe_Nomes(nomes_5mil, cont); Maior_Menor_Renda(cliente,numcli, &pos_maior, &pos_menor); printf("\nO numero de clientes cadastrados foram: %d", numcli); printf("\nO numero de clientes com RENDA MAIOR que 5 MIL -- E ESCOLARIDADE MEDIA -- : %d",cont); printf("\n\nO maior salario e: [ %d ] e o menor salario e: [ %d ]", pos_maior, pos_menor); return 0; }  
  8. O post de isrnick em queria pedir que reviseis esse programa em python foi marcado como solução   
    A média é uma só para toda a escola, certo? Então poderia pedir para o usuário digitar apenas 1 vez, colocando antes do ciclo while.
     
    O que seria o número de unidades, a quantidade de avaliações? Mas se há 4 notas então será sempre 4 unidades, certo?  Nesse caso não precisaria pedir para o usuário digitar esse número e sempre assumir o valor 4.
     
    E a média é impressa em ambos os casos do if else, então poderia estar fora/antes do if else.
    print('não use virgula e sim o ponto nas notas com numeros decimais') f = int (input ('\nmedia da escola ') ) while True: b = float (input ('\nnota 1 ') ) c = float (input ('\nnota 2 ') ) d = float (input ('\nnota 3 ') ) e = float (input ('\nnota 4 ') ) g = (b + c + d + e) / 4 print('\nsua media foi ', round(g,1)) if g >= f: print('Você foi aprovado') else: print('Você foi reprovado') Fora isso a  coisa que poderia adicionar seria alguma maneira de acabar o ciclo while e finalizar o programa, pois como está o loop é infinito e o programa nunca é encerrado normalmente.
  9. O post de isrnick em Comparar strings em C/C++ foi marcado como solução   
    Nesse caso o problema é o j >=strlen(palavra); no segundo for, deveria ser j >= 0; pois k ainda pode estar incrementando e desse jeito você para antes de chegar ao fim da palavra se a palavra é muito longa (como nesse caso do "alfandega").
    int dir(char **matriz, char *palavra, int n){ int i, j, k, cont = 0; for(i=0; i < n; i++){ k=0; for(j=n-1; j >= 0; j--){ if(matriz[i][j] == palavra[k]){ k++; if(palavra[k] == '\0'){ cont++; break; } }else k = 0; } } return cont; }
  10. O post de isrnick em Compilando em alguns programas só foi marcado como solução   
    Em C quando uma string é armazenada num vetor de chars, os caracteres são guardados em cada posição do vetor começando na posição 0 do vetor, a posição do vetor após o último caractere da string recebe o caractere nulo '\0' para indicar que a string acabou (logo para poder armazenar uma string um vetor de chars deve ter pelo menos 1 posição a mais que o número de caracteres da string, para poder guardar todos os caracteres mais o caractere nulo).
     
    Ex: Quando se guarda a string "ovo" num vetor de chars os caracteres armazenados no vetor serão  'o', 'v', 'o' e '\0', logo o vetor de chars deve ter no mínimo 4 posições (char vetor[4]) para armazenar essa string.
     
    Se o vetor não tiver o caractere nulo a função strcmp() não vai saber onde parar e vai continuar lendo caracteres mesmo depois do fim dos caracteres da string, o que resultaria que ele tentará acessar posições do vetor que não existem quando tentar acessar posições além do comprimento do vetor, dando erro e travando o programa. (O mesmo pode ocorrer se o vetor não for grande o suficiente para armazenar todas as letras + o caractere nulo.)
  11. O post de isrnick em Criar uma função strcat e strncat usando ponteiro foi marcado como solução   
    Os vetores de chars s1 e s3 do main() não são longos o suficiente para armazenar a string completa concatenada.
     
    Declarar o vetor assim:
    char s1[]="sistemas "; Cria um vetor de chars com o número exato de posições para caber a string "sistemas ", ou seja esse vetor tem 10 posições, e a string original já está preenchendo todas as posições. Se tentar concatenar algo nesse vetor vai estar tentando acessar posições que não existem no vetor.
     
    Faça o vetor ser pelo menos grande o suficiente para armazenar a string concatenada.
    char s1[25]="sistemas ";  
  12. O post de isrnick em Como utilizar uma matriz como parâmetro para uma função foi marcado como solução   
    Faz assim no seu main:
    #include <stdio.h> #include "funcoes.h" int main() char tab[TAMBU][TAMBU]; imprimir(tab); printf("\n\n"); return 0; }
  13. O post de isrnick em Exercicio Triangulo foi marcado como solução   
    Basta colocar as análises de tipo de triângulo dentro do if que checa se forma triangulo, assim ele nunca checará essas condição se não formar, veja:

    (Dei uma organizada no seu código)
    //Exercicio Triângulo#include<iostream>#include<string.h>#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<locale.h>int main(){ int A, B, C; setlocale(LC_ALL, "Portuguese"); printf("Informe os lados do triângulo (Separados por espaço):\n"); scanf("%d %d %d",&A,&B,&C); //Verificando se forma triângulo ou não //Condição para formar triangulo if((A+>C && (A+C)>B && (B+C)>A) { /*No caso de fomar triangulo, Verificar qual tipo de triângulo será formado*/ //Condição para triangulo RETANGULO if ((B* + (C*C) == (A*A) || (A*A) + (C*C) == (B* || (B* + (A*A) == (C*C)) { printf("r\n"); } //Condição para triangulo OBTUSANGULO if(A>B && A>C || B>A && B>C || C>B && C>A) { if ((B* + (C*C) < (A*A) || (A*A) + (C*C) < (B* || (A*A) + (B* < (C*C) ) { printf("o\n"); } } //Condição para triangulo ACUTANGULO else if ((B* + (C*C) > (A*A) || (A*A) + (C*C) > (B* || (B* + (A*A) > (B*) { printf("a\n"); } } //Se não formar triangulo já imprime a letra N e finaliza else { printf("n\n"); } system("pause"); } Esse é um problema que é postado aqui no fórum frequentemente, aqui estão 2 tópicos que podem ser interessantes pra você:

    http://forum.clubedohardware.com.br/forums/topic/1067339-programa-em-c/

    http://forum.clubedohardware.com.br/forums/topic/1068211-d%C3%BAvida-em-programa-c/
  14. O post de isrnick em Arquivo Bat abrindo outra Bat foi marcado como solução   
    Use o comando CALL ao invés de START.
  15. O post de isrnick em algoritmo que transforme numero inteiro em binario em C++ como fazer funcionar foi marcado como solução   
    Você precisa armazenar em uma variável o número binário, e para posicionar o dígito na posição correta basta usar um multiplicador que comece com valor 1 e que seja aumentado em 1 ordem de grandeza a cada ciclo, ou seja, seja multiplicado por 10 a cada ciclo, para fazer o deslocamento correto do dígito binário. E aí imprime o binário após obter o número binário completo.  
    Deste modo:
    #include <iostream>using namespace std;int main() { int NUM,REST,NUMBIN,MULTI;    cout<<"\n Digite o numero:";    cin>>NUM; NUMBIN = 0; MULTI = 1;    while (NUM>0)    {        REST = NUM%2; NUMBIN = NUMBIN + REST * MULTI;        NUM = NUM/2;        MULTI = MULTI*10;    } cout<<NUMBIN;    return 0;} Edit: Correção das variáveis com nomes diferentes (todos os MULT para MULTI)...

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