-
Posts
1.558 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
posts postados por isrnick
-
-
7 horas atrás, devair1010 disse:
e na linguagem c, diferente de outras , não existe o comando "elseif" , mas apenas o "else" e o "if" , se usados em linhas separadas evita erros de interpretação
Existe "else if" na linguagem C sim, e o @Heitor.Bruns usou corretamente.
Usar "else" e o "if" aninhados em vários níveis como você fez é muito mais confuso, e fica praticamente ilegível se adicionar mais alguns níveis de "else"s e "if"s quando há várias condições que devem ser verificadas.
-
1
-
-
Seu código foi escrito em C não em C++, ou seja você indicou a linguagem errada na tag do título do tópico.
E tem vários problemas no seu código, sendo que o mais óbvio é que fica abrindo o arquivo, escreve uma frase, fecha o arquivo, abre o arquivo novamente, escreve outra frase, fecha o arquivo novamente, etc etc... Seria melhor abrir o arquivo 1 vez, escrever no arquivo tudo que precisa, e então fechar o arquivo.
-
1
-
-
A condição do desvio condicional deve estar entre parênteses.
Então mude:
se distancia1 > distancia2 e distancia1 > distancia3
Para:
se (distancia1 > distancia2 e distancia1 > distancia3)
Em todos os desvio condicionais 'se'.
E a indentação do código pode ser melhorada para facilitar a leitura do código.
-
1
-
-
A faculdade americana Harvard oferece cursos de programação introdutórios online gratuitos, chamados de CS50, dá até pra obter certificação pelos cursos (mas isso pode ter um custo).
Aqui está o site dos cursos CS50 online: https://www.edx.org/cs50
E aparentemente já existe uma versão desse curso em português também: https://materiais.napratica.org.br/cc50
-
1
-
-
Você entende inglês? Se souber inglês fica muito mais fácil aprender a programar, eu recomendo aprender.
Tem muito mais recursos online em inglês para aprender a programar, e as próprias linguagens de programação são em inglês, e as documentações das linguagens e de suas bibliotecas sempre são escritas em inglês (mas raramente em português), e pesquisar e tirar dúvidas online em inglês é muito mais fácil pois tem gente do mundo inteiro postando online em inglês.
16 horas atrás, Obama1617 disse:Bom rapaziada, queria algo grátis, não estou com moral pra ficar gastando muito.
O site do Curso em Vídeo diz que os cursos de Python são grátis, então poderia fazer lá.
16 horas atrás, Obama1617 disse:Tenho um notebook muito velho aqui
Será que teria como adaptar pra usar ele como secundario?
Sim, não tem motivo por que não poderia usá-lo. Você assiste ou lê em um computador, e programa no outro computador pra exercitar o que aprendeu.
-
1
-
-
Você tentou executar o comando python3 matriz.py na pasta errada.
Pelas suas imagens o arquivo matriz.py está dentro da subpasta lembrar, logo o Python não encontrou o arquivo na pasta onde o terminal está.
Entre na pasta lembrar, onde o arquivo está, e depois use o comando:
cd lembrar python3 matriz.py
-
1
-
-
O seu VSCode provavelmente está usando outra instalação do Python do seu computador... Talvez um Python em um ambiente virtual.
Dentro do próprio VSCode você pode acessar um terminal, ou seja você pode acessar o Powershell dentro do VSCode. Se deseja saber qual o caminho da pasta do Python que o seu VSCode está usando você pode digitar no terminal:
py -c "import os, sys; print(os.path.dirname(sys.executable))"
E no terminal do VSCode você também pode instalar o numpy nesse outro Python usando aquele comando.
pip install numpy
-
Ok, agora cheque a variável de ambiente PATH e verifique se existem 2 pastas do Python a lista de pastas.
Uma é a pasta do executável do Python (acabando em "\Python313\") e a outra é a pasta dos Scripts do Python (acabando em "\Python313\Scripts\")
Para ver as pastas do PATH no Powershell você pode usar:
$env:Path -split ';'
Ou no Command Prompt digite:
echo off for %A in ("%path:;=";"%") do echo %~A echo on
-
O aviso está falando que esse caminho da pasta dos scripts f2py.exe e numpy-config.exe não está incluso no PATH (essa é a pasta dos scripts do seu Python), então copie o endereço da pasta e a adicione a variável PATH também.
-
1
-
-
Parece que os caminhos para as pastas do executável do Python e de seus scripts não foram adicionados a Variável de Ambiente PATH do seu Windows, por isso não conseguiu executar o pip pelo terminal, pois o executável não foi encontrado na pasta onde está, nem em nenhuma pasta inclusa na variável PATH....
O instalador do Python deveria ter adicionado o caminho do Python a variável PATH automaticamente, uma maneira que poderia corrigir isso seria reinstalando o Python e se certificando que a opção para adicionar o caminho no PATH está selecionada (se a opção existir).
-
2
-
-
É necessário instalar o numpy no seu python para poder usá-lo, pra isso digite a linha abaixo em um terminal (Command Prompt ou Powershell no Windows):
pip install numpy
-
2
-
-
Quanto a verificar se detecta como virus, você pode enviar o arquivo para o site VirusTotal que vai testar em todos os antivirus (ou a maioria) e ver se algum detecta como virus.
-
Em C usamos as funções malloc, calloc e realloc para alocar(reservar) ou realocar memória dinamicamente, mas estas funções podem falhar, logo sempre é necessário analisar o retorno destas funções para verificar se a memória foi alocada com sucesso.
Então, uma solução para não ter que ficar repetindo a verificação seria encapsular estas funções dentro de outra funções que tratam o caso de falha e nunca retornam um ponteiro nulo (NULL). Como em:
#include <stdio.h> #include <stdlib.h> void *allocateMemory(size_t size) { void *pointer = malloc(size); if(!pointer) { fprintf(stderr, "Could not allocate\n"); exit(EXIT_FAILURE); } return pointer; }
Mas essa função não ajudaria a diagnosticar onde o problema ocorreu no programa, logo uma melhoria seria fazer a função indicar o nome do arquivo e a linha do código onde o erro ocorreu.
E com isso em mente segue uma solução completa, com funções que verificam os casos de falha na alocação e indicam onde o erro ocorreu, e macros para chamar as funções usando os mesmos parâmetros das funções originais (malloc, calloc e realloc):
#include <stdio.h> #include <stdlib.h> #define VMALLOC(Size) allocateMemory(__FILE__, __LINE__, Size) void *allocateMemory(const char *file, long line, size_t size) { void *pointer = malloc(size); if(!pointer) { fprintf(stderr, "Could not allocate: %zu bytes (%s:%ld)\n", size, file, line); exit(EXIT_FAILURE); } return pointer; } #define VCALLOC(NumberOfElements, ElementSize) allocateCleanMemory(__FILE__, __LINE__, NumberOfElements, ElementSize) void *allocateCleanMemory(const char *file, long line, size_t numberOfElements, size_t elementSize) { void *pointer = calloc(numberOfElements, elementSize); if(!pointer) { fprintf(stderr, "Could not allocate: %zu bytes (%s:%ld)\n", numberOfElements * elementSize, file, line); exit(EXIT_FAILURE); } return pointer; } #define VREALLOC(MemoryBlock, NewSize) reallocateMemory(__FILE__, __LINE__, MemoryBlock, NewSize) void *reallocateMemory(const char *file, long line, void *memoryBlock, size_t newSize) { void *pointer = realloc(memoryBlock, newSize); if(!pointer) { fprintf(stderr, "Could not allocate: %zu bytes (%s:%ld)\n", newSize, file, line); free(memoryBlock); exit(EXIT_FAILURE); } return pointer; }
E para usá-las basta chamar o respectivo macro do mesmo modo que faria com a função original, com a diferença de que não há a necessidade de verificar o retorno.
Por exemplo:
size_t bytes = 10 * sizeof(int); int forceFailure = 0; int *anArray = NULL; /* Mude o respectivo 'forceFailure' para um valor diferente de zero para verificar como cada função se comporta quando não consegue alocar memória. */ // Verified malloc forceFailure = 0; if(forceFailure) bytes = -1; anArray = VMALLOC(bytes); free(anArray); // Verified calloc forceFailure = 0; if(forceFailure) bytes = -1; anArray = VCALLOC(1, bytes); // Verified realloc forceFailure = 0; if(forceFailure) bytes = -1; else bytes = 10 * bytes; anArray = VREALLOC(anArray, bytes); free(anArray);
OBS: Vale notar que as funções propostas aqui apenas geram a mensagem de erro e encerram o programa em caso de falha na alocação, mas há situações em que seria preferível tratar o erro de outra maneira que não faça com que o programa seja encerrado abruptamente, logo estas funções não são adequadas para esses casos e precisariam ser adaptadas.
-
3
-
1
-
-
26 minutos atrás, Swalls disse:
a opção E de /DCOPY não existe para mim.
@SwallsNão?
Ah, encontrei isto na documentação do robocopy:
CitaçãoO sinalizador /DCOPY:E solicita que a cópia de atributo estendido seja tentada para diretórios. O Robocopy continuará se os EAs do diretório não puderem ser copiados. Esse sinalizador não está incluído em /COPYALL.
-
@Swalls Não, eu apenas li a documentação do robocopy ("robocopy /?"), e sugeri as opções que parecem ser mais relevantes.
Para arquivos:
/COPYALL é o mesmo que /COPY:DATSOU Onde: D = Dados A = Atributos T = Carimbos de data/hora S = Segurança=ACLs NTFS O = Informações do proprietário U = Informações de auditoria
E para diretórios:
/DCOPY:DATE Onde: D = Dados A = Atributos T = Carimbos de Data/Hora E = Atributo estendido
-
No robocopy tente incluindo:
/COPYALL pra copiar todas as informações dos arquivos (é o mesmo que /COPY:DATSOU)
/DCOPY:DATE pra copiar todas as informações das pastas
-
char* gets_s( char* str, size_t n ){ return fgets(str, n, stdin); }
Uma gets segura seria assim.
Mas já existe gets_s na stdio.h: https://en.cppreference.com/w/c/io/gets
-
1
-
1
-
-
Um problema que estou vendo é que salvou código escrito em linguagem C em um arquivo com extensão ".cpp", que é a extensão usada para código em C++, não C. Use a extensão ".c" para arquivos contendo código em C.
-
1
-
-
#include <stdio.h> #include <math.h> int main() { double A = 0.0, B = 0.0, C = 0.0; double *hipotenusa; double *cateto_maior; double *cateto_menor; printf("Digite o tamanho do lado A do triangulo retangulo: "); scanf("%lf", &A); printf("Digite o tamanho do lado B do triangulo retangulo: "); scanf("%lf", &B); printf("Digite o tamanho do lado C do triangulo retangulo: "); scanf("%lf", &C); if (A <= 0.0 || B <= 0.0 || C <= 0.0) { printf("\nUm ou mais dos valores fornecidos são invalidos.\n\n"); return 0; } if (A >= B+C || B >= A+C || C >= A+B) { printf("\nOs lados não formam um triangulo.\n\n"); return 0; } hipotenusa = &A; if (*hipotenusa < B) hipotenusa = &B; if (*hipotenusa < C) hipotenusa = &C; cateto_menor = &A; if (*cateto_menor > B) cateto_menor = &B; if (*cateto_menor > C) cateto_menor = &C; cateto_maior = &A; if (cateto_maior == hipotenusa || cateto_maior == cateto_menor) cateto_maior = &B; if (cateto_maior == hipotenusa || cateto_maior == cateto_menor) cateto_maior = &C; // printf("\n%lf %lf %lf\n\n", *hipotenusa, *cateto_maior, *cateto_menor); if (fabs((*hipotenusa) * (*hipotenusa) - (*cateto_maior) * (*cateto_maior) - (*cateto_menor) * (*cateto_menor)) > 0.00001){ printf("\nOs lados fornecidos não formam um triangulo retangulo.\n\n"); return 0; } printf("\nA maior altura do triangulo retangulo eh: %lf\n\n", *cateto_maior); return 0; }
-
1
-
1
-
-
Estou configurando um computador para usar como NAS para casa, cuja principal função é para armazenar e assistir videos via PLEX/Emby/Jellyfin, mas também para as funções típicas de um NAS como armazenamento de backups, substituir Dropbox/One Drive/etc...
Até agora a configuração é:
Processador Intel Pentium Gold G7400 3.7GHz, 2-Cores, 4-Threads, LGA 1700
placa-mãe ASUS PRIME H610M-E D4, CHIPSET H610, INTEL LGA 1700, MATX, DDR4
MEMÓRIA DDR4 GEIL ORION, 16GB (2X8GB) 3200MHZ
O processador foi escolhido por ter UHD Graphics 710 para fazer transcode, pois minha coleção de vídeos está principalmente no formato H265/HEVC, e por ter baixo consumo de energia (já que é um servidor pra ficar sempre ligado).
placa-mãe escolhida por ter dois M.2 permitindo usar uma para um SSD NVMe, e a outra para colocar a placa de expansão de portas SATA. (O PCI-e pode ficar livre para ser usado para colocar uma placa Ethernet 2.5Gbits no futuro.)
Ainda não defini a fonte, nem o gabinete, mas por enquanto pretendo usar um gabinete velho que tenho disponível e que caberia várias HDs de 3.5" (umas 8 ou 9 HDs), até achar uma opção melhor.
A ideia é colocar entre 6 a 8 HDs de 4TB. E usar TrueNAS como sistema operacional no SSD NVMe, para montar RAIDZ2 (ZFS com 2 discos de paridade).
Peço que deem suas sugestões e opiniões.
-
Inclui a biblioteca stdio.h ...
-
26 minutos atrás, Lucca Rodrigues disse:
Funciona só se o buffer não estiver vazio.
Mas aí você pode tentar garantir que sempre sobre pelo menos o caractere nova linha na entrada antes de chamar a função para limpar a entrada.
Do contrário vai ter que usar algo que nunca deixe nada sobrando na entrada, como a função getline do padrão PÒSIX, ou minha função nscanf:
OBS: getline não é uma função padrão ISO da linguagem C, então se não estiver disponível no seu compilador pode ter que achar uma implementação pronta na internet, ou implementar você mesmo.
-
1
-
-
@thefill Não use o primeiro método de "limpar" entrada desse link, está usando fflush para algo que ele não foi feito (ele é apenas para fluxos de saída) logo terá comportamento indefinido, ou seja não dá pra garantir que funcione. Use apenas o segundo pois funciona em todas as situações.
-
@kgin Sim, também usei esse método nesse jogo da velha:
Mas não reduz o código muito, a vantagem é que também funciona para tamanhos de velha maiores do que 3x3, mas esse é o tamanho padrão do jogo da velha.
-
2
-
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
Criaçao de arquivo .bat para fazer backup de arquivos
em Programação - outros
Postado
Tentou usando robocopy ou xcopy?