-
Posts
1.558 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que isrnick postou
-
Maior numero palíndromo feito a partir do produto de dois números de 3 dígitos.
isrnick respondeu ao tópico de Anatanael Barbosa em C/C#/C++
Essa seria minha versão para fazer apenas o mínimo de operações necessárias para encontrar o maior número palíndromo: #include <stdio.h> int main() { int i = 999, //contador j, //contador n, //numero calculado t, //numero temporario ni, //numero invertido im, //i do MNC jm, //j do MNC mnc = 0; //maior numero capicua for (n = i * i; n > mnc; n = i * i){ for (j = i; n > mnc; n = i * j){ ni = 0; //inverte o número: for (t = n; t > 0; t /= 10){ ni = ni * 10 + t % 10; } //Se for capicua guarda como sendo o novo MNC: if (n == ni) { mnc = n; im = i; jm = j; } j--; } i--; } printf("Maior numero capicua: %d = %d x %d\n", mnc, im, jm); return 0; } Aqui a diferença em relação ao meu programa original é que a contagem dos multiplicadores é regressiva, e também para de procurar o maior palíndromo assim que determinar que as próximas multiplicações sempre vão resultar em números menores que o maior palíndromo encontrado até o momento. -
Maior numero palíndromo feito a partir do produto de dois números de 3 dígitos.
isrnick respondeu ao tópico de Anatanael Barbosa em C/C#/C++
Eu postei uma solução pra esse mesmo problema nesse outro tópico: -
Maior numero palíndromo feito a partir do produto de dois números de 3 dígitos.
isrnick respondeu ao tópico de Anatanael Barbosa em C/C#/C++
Se quer encontrar o maior faça o contrário, comece pelos maiores números com 3 dígitos 999 x 999 e vá diminuindo ao invés de aumentando, 999 x 998, 999 x 997, etc até encontrar o primeiro palíndromo... Fazer as multiplicações na ordem crescente realmente vai fazer muito cálculo até chegar no maior... -
C Converter um caractere de várias letras em uma STRING
isrnick respondeu ao tópico de Eduardo Cesar Lenz em C/C#/C++
Isso não é possível, não há como colocar mais de 1 caractere dentro de uma variável char... Por isso não entendemos o que quer dizer com isso. Para ficar tudo na posição [0] só se for uma matriz de strings, algo do tipo: unsigned char m[3][5] = { { 'P', '1', '2', '3', '\0'}, { '\0', '\0', '\0', '\0', '\0' }, { '\0', '\0', '\0', '\0', '\0' } }; Nesse caso m[0] contém a string "P123" e usaria m[0][0] para acessar o caractere 'P'. Se não for esse o caso, então talvez a variável poderia estar sendo usada como um tipo inteiro? E na verdade nesse caso 123 seria um número inteiro ao invés de uma string, e talvez P é um estado indicado pelo bit mais significativo estar ligado ou desligado? Nesse caso aí o que você quer é converter um inteiro para string. Mas estou apenas dando chutes aleatórios nesse ponto, pois não temos informação suficiente sobre o que quer dizer com a mensagem estar na posição [0]. -
Bat Criar um script bat ou vbs para executar todo dia 30.
isrnick respondeu ao tópico de Snave em Programação - outros
Nos arquivos que você postou não está chamando o outro bat apenas imprime. Mas descobri onde está o problema... Eu usei o parâmetro usebackq no comando FOR, isso implica que o comando que gera o texto a ser analisado, nesse caso date /T, será englobado entre crases ` ` ao invés de aspas simples ' ', isso serve para não haver confusão em casos que o próprio comando contém o caractere de aspas simples ' , mas no seu comando tem usebackq e está usando aspas simples ao invés de crases o que gera o problema. Então você deve remover o parâmetro usebackq ou então usar crases no comando: FOR /F "delims=/" %%A IN ('date /T') DO (IF %%A == 15 backup_email_local.bat) ou FOR /F "usebackq delims=/" %%A IN (`date /T`) DO (IF %%A == 15 backup_email_local.bat) -
Bat Criar um script bat ou vbs para executar todo dia 30.
isrnick respondeu ao tópico de Snave em Programação - outros
Os 2 bats estão na mesma pasta? Tente usando CALL ou START: FOR /F "usebackq delims=/" %%A IN ('date /T') DO (IF %%A == 15 CALL backup_email_local.bat) -
Bat Criar um script bat ou vbs para executar todo dia 30.
isrnick respondeu ao tópico de Snave em Programação - outros
@ECHO OFF FOR /F "usebackq delims=/" %%A IN (`date /T`) DO ( if %%A == 30 backup.bat ) -
Bat Criar um script bat ou vbs para executar todo dia 30.
isrnick respondeu ao tópico de Snave em Programação - outros
Não entendo de GPO mas olhando na internet parece existir solução para esse problema. De qualquer maneira um script batch simples pra checar se é dia 30 seria algo assim: @ECHO OFF FOR /F "usebackq delims=/" %%A IN (`date /T`) DO ( if %%A == 30 ECHO Hoje eh dia 30! ) Mas como mencionado acima isso não funcionaria em fevereiro que não tem dia 30, então teria que fazer um caso específico para fevereiro, ou escolher outra data. Também tem que verificar os casos em que dia 30 cai no fim de semana pois isso também depende do computador estar ligado na data. -
Outro Condição IF Vinculado a um Processo Específico no Windows (BatScript)
isrnick respondeu ao tópico de TiagoSantanaDI em Programação - outros
Leia esses 2 tópicos, devem te ajudar pois são similares ao seu caso: -
Bat Criar um script bat ou vbs para executar todo dia 30.
isrnick respondeu ao tópico de Snave em Programação - outros
Pode criar uma tarefa no Agendador de Tarefas do Windows pra fazer ele executar o script mensalmente. -
Eu consigo pensar em 2 maneiras: A primeira seria pegar cada número entre A e B e testar se é um múltiplo de N. Pra isso bastaria fazer uma variável começar igual a A, e usar um ciclo para ir testando se o número atual é múltiplo de N (se é múltiplo imprime o número), e depois soma +1 a variável para obter o próximo número, continua no ciclo até a variável chegar no valor B. Nesse caso iria usar o método que eu mencionei para fazer o teste. A segunda maneira seria ir obtendo os múltiplos de N e checar se o múltiplo atual está entre A e B. Pra isso poderia fazer uma variável começar com valor N, e dentro de um ciclo ir testando se o valor da variável está entre A e B (se estiver imprime o múltiplo), e depois ir somando +N na variável para obter o próximo múltiplo de N, e continua no ciclo enquanto o múltiplo atual for menor ou igual a B.
-
O problema é que não dá pra usar Qt no C diretamente, que é o que o autor do tópico está procurando, no melhor caso seria necessário fazer o GUI em C++ e a lógica do programa em C linkando os 2 pra fazer o programa, mas ainda seria necessário saber programar em C++. Se for programar GUI estritamente em C, pode usar GTK ou no caso específico do Windows também pode usar o Windows API.
-
@Main.cpp Seu programa está em C++ não em C.
-
Para facilitar pode usar as funções da biblioteca ctype.h para verificar o tipo de caractere: isalpha() - Checa se o caractere é uma letra. isdigit() - Checa se o caractere é um dígito numérico. isalnum() - Checa se o caractere é alfanumérico (digito ou letra). ispunct() - Checa se o caractere é uma pontuação isspace() - Checa se o caractere é um espaço em branco (espaço, tabulação, nova linha, ou etc) isblank() - Checa se o caractere é um espaço ou tabulação. https://en.cppreference.com/w/c/string/byte Só o caso de vogais e consoantes que vai ter que fazer você mesmo, mas aí só precisa checar se for uma letra se ela é uma vogal, pois se não for só pode ser consoante.
-
? Estão sendo obtidos 2 parâmetros por essa função fscanf: %s obterá uma string sem espaços em branco, e em seguida %c obtém o primeiro caractere após a string (que logicamente será um espaço ' ', tabulação '\t', nova linha '\n', etc). Exatamente, é para limitar os caracteres, pois no programa o vetor de caracteres palavra tem comprimento 200, e se a string lida for mais longa que isso estouraria o limite do vetor, logo por segurança é necessário sempre indicar a quantidade máxima de caracteres lidos pelo %s. Vale notar que strings em C devem sempre conter o caractere nulo '\0' indicando o fim da string, então neste vetor de caracteres podem ser armazenados no máximo 199 caracteres não nulos, e nesse caso extremo a última casa do vetor guardaria o caractere nulo '\0' da string. Por isto a o especificador ficou assim %199s indicando que serão lidos no máximo 199 caracteres não nulos. Não deveria funcionar sem o & no caractere. Quando se usa o nome de uma variável normalmente (ou seja, sem o &) o que é retornado é o valor armazenado na variável, por exemplo ao fazer: int a = 10; Se usarmos o nome a subsequentemente no programa obteremos o valor 10 armazenado na variável. Entretanto colocando & antes do nome da variável obteremos o endereço do lugar na memória onde os valores desta variável são guardados. Nesse caso &a obteria um número que indica uma posição da memória (a fim de exemplo digamos que seja 0x00001A01 em hexadecimal), mas em geral não precisamos saber esse valor, basta saber que ao fazer &a será obtido o endereço de memória da variável a. Tendo esse endereço de memória podemos armazená-lo num tipo especial de variável chamado ponteiro, que serve exatamente para isso armazenar endereços de memória, e dizemos que um ponteiro 'aponta' para um endereço de memória, e poderemos usar esse ponteiro para fazer alterações nesse lugar da memória para onde ele aponta, mas esse lugar da memória é onde estão o valores da variável a , logo ao fazermos alterações nesse lugar da memória estaremos alterando o valor da variável a. Então ao usarmos &caractere estamos passando para a função fscanf o endereço de memória da variável caractere, na função o endereço é armazenado num ponteiro, permitindo que a função faça alterações nesse lugar da memória, assim ela pode guardar o caractere lido do arquivo na variável caractere. Sem o & o que será enviado para a função fscanf é um valor qualquer que está armazenado na variável caractere, e a função não terá como guardar valor algum na variável. Já no caso do vetor de caracteres palavra a diferença é que o nome de um vetor já é uma referência (mais especificamente usar o nome palavra como parâmetro já é o mesmo que usar &palavra[0]), logo para um vetor não vai um & antes do nome (daí vemos sendo dito que vetores sempre são passados por referência, logo alterações dentro da função sempre alteram o vetor original fora da função).
-
Pode fazer usando fscanf ao invés de fgetc: #include <stdio.h> #include <string.h> int main() { char palavra[200], caractere; int npalavras = 0, nlinhas = 1; FILE *texto; texto = fopen("texto.txt", "r"); while ( fscanf(texto, "%199s%c", palavra, &caractere) > 0 ) { if ( strlen(palavra) != 0 ) npalavras++; if ( caractere == '\n' ) nlinhas++; } fclose(texto); printf("%d linhas e %d palavras.\n", nlinhas, npalavras); return 0; }
-
Um número n1 é múltiplo de outro número n2 se o resto da divisão inteira n1 / n2 é igual a zero. Em C utiliza-sem o operador % para calcular o resto da divisão inteira, logo basta verificar se n1 % n2 é igual a zero para verificar se o n1 é múltiplo de n2.
-
Faltou retornar os valores calculados dentro das funções usando return , e não sei por que está realizando operação && entre os valores calculados.
-
O melhor seria: c = malloc(n * sizeof *c); ou c = malloc(n * sizeof(*c)); Ou seja, o tamanho daquilo para o qual o ponteiro c aponta. Em C nunca precisa dar casting no retorno de malloc.
-
E nesse caso o tipo da variável s deveria ser float ao invés de int. Também precisa fazer com que as constantes tenham ponto para indicar que se é uma divisão entre números com ponto flutuante (do contrário todos os números são inteiros, e será entendido que deseja-se calcular divisão inteira, ao invés de calcular a parte fracionária do resultado). s += (1.0 + i) / (50.0 - i)
-
Com i indo de 0 a 49. E deve dar algo próximo disso: = 179.4594722548006779355840614412032236905006930223401453126... Calculado pelo WolframAlpha: https://www.wolframalpha.com/input/?i=sum_(i%3D0)^49+(1%2Bi)%2F(50-i)
-
printf pertence a biblioteca cstdio, então basta adicionar outro include com essa biblioteca no começo do código. #include <iostream> #include <cstdio> #include <windows.h> #include <conio.h> As mensagens de erro estão aí por um motivo, elas normalmente dão uma boa indicação de onde está o problema...
-
Por que na sua tela todas as partes que estavam comentadas com /* e */ no código do @devair1010 estão sem o asterisco * ? Isso removeu os comentários e introduz comandos e texto no código que não deveriam fazer parte do dele.
-
Está diferente do código do @devair1010 , tem um #include <filename> e não existe essa biblioteca, deveria ser #include <iostream>. (Ou apenas copie o código do @devair1010 aqui do fórum novamente.)
-
Se está usando o código que o @devair1010 postou sem alterações, você colocou o código num arquivo com extensão .cpp? (Na imagem que você postou estava com extensão .c, logo com certeza não vai funcionar.)
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