-
Posts
3.284 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que Ansi C postou
-
Sim, cfuncao1() aguardará na memoria por funcao() acabar. Na wikipédia se encontra muito sobre recursividade.
-
Uma alternativa com aritmética é usar a seguinte equação: MaiorAB = (a + b + abs(a-b)) / 2 int i,j,k, maior; scanf(" %d%d%d", &i,&j,&k); if ((i+j+abs(i-j))/2 == i) maior = ((i+k+abs(i-k))*.5); else maior = ((j+k+abs(j-k))*.5); abs() é função que retorna sempre o resultado positivo. Outra alternativa também é organizar as variáveis em ordem crescente int i,j,k; if (i>j) {int t = i; i = j, j = t;} if (i>k) {int t = i; i = k, k = t;} if (j>k) {int t = j; j = k, k = t;} //Dessa maneira a menor estará em i e a maior estará em k.
-
Sim, chega a ser um pouco enfadonho. Contudo o que me impressiona é a organização deles, nesse sentido eles estão bem amadurecidos. Eu confesso até as mais longas de transformação de unidades eu faço. São questões comuns de livros iniciante, porém que na internet passa a sensação de ser melhor. Vou ver esse também, vou vendo um de casa vez, na medida que ficar em uma atoleiro vou para o outro e assim vou 'jogando' os dois. E outros que forem surgindo valeu
-
Obrigado pela referência, não sabia deste site e achei muito divertido, fiz 23 questões inicial e gostei e o fórum lá é meio lento, porém temos o CdH para tirar nossas dúvidas.
-
C++ Questões relacionadas aos modificadores em C++
Ansi C respondeu ao tópico de Gabriel_Menezes em C/C#/C++
@Gabriel_Menezes A Tipagem Dinâmica, isso não existe no C, pelo menos não nos compiladores mais populares. Vemos isto na Python linguagem de alto nível (de objetos prontos para serem usados), tem fama de ser inteligente é uma das primeiras nisso. Já C++ a qual consideramos multi paradigmática não é de tipagem dinâmica. Linguagens da categoria do Python, Ruby e outras multi paradigmáticas são capazes de fazer coisas com poucas linhas de código. -
Maioria realmente não fazem esse tratamento de maneira autônoma principalmente mingw32-gcc, pois esse eu conheço. Olha pode ser o windows, por exemplo aqui temos o windows 10 com 4Gb, quando inicializando ele reserva para seus programas o máximo de memória possível para fazer uma rápida inicialização, depois que termina essa tarefa os programas deixam gravados na memoria alguns dados inúteis e incoerentes. Então é muito comum esta prática de todo programa limpar [zerar] suas variáveis antes de usar e deixa lixo [resto de dados] na memória quando não precisa mais dela ou quando finaliza a tarefa e até mesmo saímos do software. Pode ocorrer de que o windows do amigo não ocupa toda a memória, então temos ai parte significativa da memória limpa [zerada] que coincidentemente é ocupada pelo programa C quando compilado.
-
Inicialize a variável x. int dado[30], i, x = 0;
-
@jpaulofsa , esqueceu de colocar o argumento para máscara [%d] contida na função printf. printf("A quantidade de consoantes eh: %d \n", vogais); O programa procede!
-
a função scanf possui algumas mascaras. Para este caso use esta mascara: "%29[^\n]s" O número é o tamanho máximo do string ( tome o tamanho do vetor -1). Esta parte [^\n] indica que a função vai capturar todos caracteres ate que uma nova linha surja. while (string[i] != '\0'){ ... /// Conta os caracteres ignorando os ESPAÇOS. if (' ' != string[i]) qnt_caracteres = 1 + qnt_caracteres; i++; } return qnt_caracteres - vogais; Referência cplus: Function cstdio::scanf
-
||@jpaulofsa int i = 0; while (string[i] != '\0'){ ... i--; } Define-se i contendo 0, depois a cada fim do laço do bloco WHILE se decremente 1. É um erro de conceito, pois todo vetor inicia no 0, inclusive a constante de nome string contem o primeiro local na memória do vetor. Se decrementarmos a partir do 0 iremos acessar os locais que estão aquém do valor inicial, ou seja, 'andasse' para trás em locais desconhecidos. Enfim o correto é i++, ou i += 1 ou ainda i = 1 + i; Para assim 'andarmos' para frente sobre locais conhecidos de memoria reservada. Por ultimo faltou ; no final de char uma_string[30] //cria a variável string Sequência de caracteres é " %s" e não "%c", pois dessa maneira se pegou apenas 1 caractere. scanf("%c", &uma_string); Referência Cplus - Função scanf.
-
C Imprimir valor dos cálculos matemáticos.
Ansi C respondeu ao tópico de Veronica Ortigoza em C/C#/C++
Você não entendeu(1) o que se pede no problema, ou você não entendeu(2) como escrever o enunciado em código? Hints: Poste-nos uma tentativa. -
Problemas com alocação de memória numa Matriz Esparsa
Ansi C respondeu ao tópico de hidantachi em C/C#/C++
Olá! Essa questão III) depende muito de como você pensou na solução II) Interpretando o examinador suponho que nos pede uma variável que nos sirva de entrada, o que estou dizendo há necessidade da declaração de variável intermediária entre a entrada de dados e o vetor strings propriamente de memória alocada e de extensão definida, como seria isso? é simples vetor de char é um strings, exemplo: char to_input[101]. Esse vetor (nem precisar ser alocado, declare-o) vai capturar o texto no limite de100 caracteres. É necessário que você saiba quantos caracteres o usuário entrou, para com isso delimitar a quantidade exata de memória para essa entrada no vetor de strings, quando tiver com este número parta para cópia de to_input para vetor. PS. existe funções prontas na lingua que fazem isso, entretanto, tente fazer você mesmo, pois é mais desafiador, isto é, se dispuser de tempo. -
Seja A uma matriz, e Aij um elemento de A | i vezes j = a número de elemento de A. A é uma matriz quadrática somente se j = i e i > 0. Aixj = 16, então i = j = 4, para todo 0 < i < 4 existe pelos menos 1<= j <= 4. Matriz[ 6 ][ 4 ] é igual em termos a Matriz[ (N) vezes M ], assim Matriz( M vezes (i)+j ) logo i j M vezes i + j Matriz[5][0] implica em Matriz( 4 vezes (5)+(0) ) Matriz[4][1] implica em Matriz( 4 vezes (4)+(1) ) Matriz[3][3] implica em Matriz( 4 vezes (3)+(3) ) Matriz[1][1] implica em Matriz( 4 vezes (1)+(1) ) Ajudou? +Perguntas?
-
Boa noite @Pedro Henrique Marchese O que posso dizer é que em seu código temos alguns erros e digitação ou conceitos observe: if (codigo>0 && codigo<5) { printf("\nVocê gostaria de um refrigerante adicional?\n"); scanf("%c\n", &refrigerante); } Vemos na função scanf, a máscara (string format) de '\n' no final de entrada. Não é o problema de o qual buscas solução, porém desta forma que estais com scanf exigindo um ENTER extra, o que não dever ser intencional. if (refrigerante="s") { preco=vcodigo*quantidade+1.5; } Vemos aqui, um erro de conceito, string é vetor de tipos char sua comparação em C necessita de função adequada, importante saber que os tipos char e string não comparasse diretamente. Enfim o correto é: variávelPrimitivaTipoA == vPTipoA, em outras palavras, refrigerante == 's'. Tome bastante cuidado, pois comparações são feitas com '==' dois sinais de igualdade em C. Para prevenir tamanho erro, é que muito comum alguns copiarem à constante antes desta forma: 's' == refrigerante. Portanto, este foi o erro que ocasionou o bug. Até
-
Não é questão de gosto, estrategia para resolução de problemas por medidas lógicas, e organizada. Algumas tarefas são na verdade conjuntos de tarefas menores e as funções nos permite de maneira muita mais sistemática encontrar a solução, através de reutilização de código, otimização e atualização Um massa enorme de código indivisível é estática, ou seja, só serve para aquela tarefa e não permite melhorias, e se tal necessidade surgir haverá muitas dificuldades para se obter resultados. "Dividir para Conquistar"(Lê Prince del Maquiavel); Assim como na guerra política há também na programação um tarefa pare ser realizada necessita de outras tarefas menores. Isto torna a programação mais limpa e dinâmica, e evitará muitos erros lógicos se abrir a cabeça para o uso de funções e da programação prototificada.
-
E qual é a dificuldade exatamente?
-
Bom dia, Neste link Cifra de césar encontra-se um post para melhor a cifra bem como o efeito circular alfabético escrito em C. Pode vir a ser útil.
-
Locais na memória não são fixo. p -> é um local na memoria, e em printf o string format correto é "%p". E naturalmente é exibido um número hexadecimal.
-
Se p é um ponteiro, então para imprimir o valor de p tem que referenciar: *p. E.i.: printf( "Show valor de p: %d", *p ); Se p é um ponteiro, então para imprimir o número do local na memória de p basta tratar p como um int: p. E.i.: printf( "Show Address memory: %d", (int)p );
-
Exercicio Telhado em C. Ques passos seguir.
Ansi C respondeu ao tópico de Pedro Henrique Faria Teixe em C/C#/C++
A saída é a coisa mais estranha, vejo a repetição alterna de certos valores observe abaixo enxergo: 0 1 2 1 0 1 0 1 0 1 2 1 0 1 2 1 0 1 0 1 0 1 2 1 0 Os números coloridos são alternos em 0 e 2. Plano Vertical: 0 1 2 1 0 1 0 1 0 1 2 1 0 1 2 1 0 1 0 1 0 1 2 1 0 Plano Horizontal 0 1 2 1 0 1 0 1 0 1 2 1 0 1 2 1 0 1 0 1 0 1 2 1 0 * Onde havia 0, tornasse 2 e onde havia 2 tornasse 0. * Acontece apenas nas linhas e colunas ̶p̶a̶r̶e̶s̶ impares Desculpa queria ajudar mais não entendo os porquês destes números. adicionado 1 minuto depois PS.: Mesmo acontece nas colunas e linhas pares em relação ao 0 e 1 sendo tão simplesmente isto pode resolver com 2 loops 1 loop- preenche de 0 e 1 alternado; 2 loop- opera somente as linhas ímpares e salta 1 elemento apos o primeiro começa a inserir 0 e 2 alternados e salta 1 elemento apos casa inserção. -
O contador a que me refiro é o contador de fatores, por exemplo: E.I.: fatoração(18): 2*3*3. Logo possui 18 3 fatores primos. Nas circunstâncias do exemplo a variável contador é : 3. Observe que no primeiro instante o número 2 é divisor inteiro, depois não é mais porque iniciou: numero = 18 / 2: 9 numero = 9 / 2: 4.5, neste instante incrementa o vet[pv++] numero = 9 / 3: 3 numero= 3 / 3: 1, neste instante finaliza o loop. finalizou. _____________________________
-
Divisão sucessiva por números primos; Sempre que o número for divisível inteiro pelo primo o contador é incrementado e o novo valor de número é o razão de número / primo atual. Quando não divisível o primo assume o valor do próximo primo na sequência até um divisível ser encontrado. Para facilitar o código, podemos assumir a variável primo que seja um vetor dos primos mais usuais: {2, 3, 5, 7, 11, 13, 17}.
-
Olha que ilustrativa maneira de ver o quanto é poderosa a estrutura de dados, fazendo vários tipos em sequencia comportarem se como primitivos circunstancialmente. int main( void ) { struct VectorStt { char length[11]; }; char nome[11] = "Hello Bob!"; /**< String vector */ char cnome[11]; /**< Vector char*/ //! Vou realizar copia entre vetores "diretamente" cnome = nome; *((struct VectorStt *) cnome ) = *((struct VectorStt *)nome); /** A estrutura comparta-se como bloco de memoria único feito um todo * converte os vetores e torna-se possível criar novos tipos personalizados. * Semelhante o que acontece com tipos primitivos, exemplo: * int a, b; * a = b; * struct a, b * a = b; */ printf("Result: %s", cnome); return 0; } A aplicação disto; Permite realizar copia de enormes formulários com apenas uma linha de código, isto só pra começar.
-
Eu acho muito interessante a discussão a respeito do buffer do stream in, porque ela vem de uma limitação da prompt , por falta de imposição de limites de campos o que torna esta discussão tema de segurança de dados. E dentre as funções de capturas de dados char * gets(char *str); é pouquíssimo recomendada seu maior problema é continuar a gravação mesmos depois de atingir o limite de memória do veto r que foi entregue no ponteiro str. Por ocasião disto, recomenda- se a função fgets e com um pouco mais de código implementar contra futuros bugs ou erros input. É importante salientar que na função char * fgets(char *str, int len, FILE *stream) "em todo input tem" um caractere de nova linha no final; e isto não é convencional para nomes pessoais.
-
//Start( ... ) /**< Declare 3 variáves: decimal, base e ret. */ unsigned int decimal, base, ret; /**< Faça a chamada para leitura de dados: Mensagem. */ cout << "Entre com numero e base (numero base): " cin >> decimal; cin >> base; /**< Processando dados: decimal to base. */ ret = decimal_to_convert(decimal, base); /**< Exibir resultado. */ cout << "Resultado: " << ret << endl; //End. Faça tal qual acima.
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