Ir ao conteúdo
  • Cadastre-se

Ansi C

Membro Pleno
  • Posts

    3.223
  • Cadastrado em

  • Última visita

Tópicos solucionados

  1. O post de Ansi C em Variavel Receber Aquele valor foi marcado como solução   
    O que você deseja e trocar a variável de lugar...
    Podemos atribuir nas variáveis, não importando o seu escopo (lugar). Existem alguns formas de provar isso, basicamente se usa ponteiros em C, já em C++ temos as referências que são menos que ponteiros, entretanto Referências  e ponteiros são utilmente a mesma coisa.
     
    Supomos uma função que chamaremos de sum, a função imaginária realiza a soma de duas parcelas e logo após atribui a resultado. Uma variável que foi declarada fora da função que chamamos de sum.
    Em C++ essa rotina poderia ser assim:
     
    EXEMPLO
    #include <iostream> using namespace std; void sum (int parcela0, int parcela1, int &resultado) { //! Estou aqui resultado= parcela0 + parcela1; } int main() { int resultado; //< Estou aqui sum(10,10,resultado); cout << "10 + 10 = " << resultado << "\n"; } Esse código mostra a passagem por referência, veja se isso responde a sua pergunta. É como se a variável da função main() estivesse indo para o outro lado do código, pelo caminho do argumento referenciado.
  2. O post de Ansi C em Programa não recebe dados pelo scanf foi marcado como solução   
    Está capturando o nova linha [ENTER]
    para solucionar tente colocar este código antes do scanf( );
    while(getchar() != '\n'){} @Paulo Moraes da Silva
  3. O post de Ansi C em Sequencia de numeros descrescentes - portugol foi marcado como solução   
    Boa tarde;
    Se eu bem entendi Y é maior que X onde Y tendendo a x será igual a x
    Y > x  <- Y, x = Y
     
    algoritmo: NumerosDecrecentes
    inicio       escreva("digite o maior numero: ")       leia(Y)              escreva("digite o menor numero: ")       leia(x)      enquanto Y >= x faça          escreva(""y"")          Y = Y - 1      fimEnqunto fim  
     
    '-' tendi isso!
  4. O post de Ansi C em Struct em função sem ou com ponteiro foi marcado como solução   
    Bom dia todos,
    Utilizando ponteiros podemos reduzir o uso significativo de memória por parte do programa e permite também a manipulação direta dos dados contidos, apesar de que manipular estes dados diretamente reduz lhe a segurança, pensando neste último fator, podemos modificada a função que através do retorno alterar dados, para isso, será necessário mais memória.
     
    bool preenche(Usuarios u[], int &c); Aqui há o cabeçario escrito; Os parâmetros desta função "são todos ponteiros", pois até mesmo uma referência pode se dizer que contém um ponteiro abstrato ou o próprio objeto.
    Individualmente explico que no caso do parâmetro u[ ] é de fato um ponteiro, que aponta para um vetor de tamanho indefinido. E ainda do parâmetro &c que é uma referência onde disse que contem um objeto, se pode falar que é o próprio objeto, e dentro do universo da linguagem C' posso dizer ser um ponteiro sem a possibilidade de aritmética de ponteiros.
  5. O post de Ansi C em Ajuda com código - C foi marcado como solução   
    Então @mi2011,
    Não minha linha de pensamento: NULO/ NULL pode ser tanto 0 quando -1.
    Fica a critério do programador ou da implementação da linguagem, você na qualidade de programador pode definir esta e ou outra condição.
     
    Por exemplo em C:
    Um ponteiro de valor 0 é um ponteiro nulo;
    Um literal de caractere '\0' é nulo, pois é 0 na tabela ASCII;
    O Macro EOF (End of File) que representa do fim de um stream é -1.
     
    Uma Situação:
    1> Se escrevermos uma função que solicita através de parâmetro uma idade, podemos implementar essa função de maneira a retorna -1 caso o valor passado pelo parâmetro seja um valor negativo, alertando que não existe idade negativa.
    Assim entendesse que uma idade negativa é uma valor nulo.
    2> Temos uma função que exige por parâmetro números diferentes de 0, então se passamos o valor 0 ele não
    afetará a operação desta função pois é nulo.
    Supomos que a função do caso 2 seja: pegar esse valor e multiplicar por 1000,
    Você concorda que 1000 + 0 é 1000 (NULO)?
    Você concorda que 1000 *  1 é 1000(NULO)?
     
     
    Resolução:
    O problema faz menção a valor/ número; 
    Para seu problema Zero é NULO já que zero não tem valor, aproposito zero é isso mesmo kkk.
    EXEMPLO:

    /** Converte Numerador e Denominador de uma fração em valor* decimal do tipo Float */float To_Float(int as_numerado, int as_denominador);int main(){ float f_tmp; setlocale(LC_ALL, ""); f_tmp = To_Float(1,3); printf("Show variable: %f float.\n\n", f_tmp); return 0;}float To_Float(int as_numerador, int as_denominador){//CONDIÇÃO PARA EXECUÇÃO DA FUNÇÃO: //DENOMINADOR MAIOR E DIFERENTE DE 0, E NUMERADOR MAIOR QUE 0. if(as_denominador <= 0 || as_numerador < 0) return 0; return ((float)as_numerador / as_denominador);} 
     
    Não sei se fui claro, qualquer coisa estamos aqui.
    </byR3X>
  6. O post de Ansi C em [C] - Programa não funciona como o esperado foi marcado como solução   
    Boa Dia @Trying,
    Esse problema é causado pelo o caractere nova linha que resta no buffer de entrada apos digitar o número e teclar ENTER;
    Com isso é capturado pelo função scanf.
    Eu já abordei uma solução no seguinte poste: Meu vetor esta pulando a primera Posisão 0 para 1
    Ficou com dúvida, questione?
  7. O post de Ansi C em Função em C (Tipo e Parâmetros) foi marcado como solução   
    Boa Noite @mi2011, 
     
    --Também estou inciando e nos meus estudos autônomos, e a resposta para sua pergunta é: Sim claro que pode.
    No exemplo, void é o tipo de retorno (que não retorna nada), porém poderia ser float que retornaria um número decimal.
    Em seguida fiz um exemplo para ilustrar melhor:
    #include <stdio.h>int main (void) { float decimal_number = 0; decimal_number = To_Decimal(1,3); printf("DECIMAL: %f\n\n", decimal_number); return 0; }/** \brief Converte dos valores inteiros em um valor decimal.* \return float- numerador e denominador, ambos para ponto flutuante.*/float To_Decimal(int num, int den) { float ret = 0; ret = num; ret = ret / den; return (ret); } okey?
  8. O post de Ansi C em Permissão negada foi marcado como solução   
    Com relação a permissões: As vezes o Antivirus implica com código/app.
    Agora se a mensagem vem de uma janela do grupo de trabalho do Code Block, então pode ser uma falha de instalação, bem subjetiva as causas.  
  9. O post de Ansi C em Programa que envolve matriz em função foi marcado como solução   
    Tire o * em toda ocorrência de
    int *mat[TAM][11]
    PS.: chato d+ de saber quando se post todo o código, prejudica aprendizado detenha se apenas a parte do problema.
  10. O post de Ansi C em Problemas na hora de mostrar inteiros foi marcado como solução   
    na estrutura onde há:
    int idade[3];
    Troque por:
    int idade;
    PS. Acho que foi descuido seu em ter posto idade como vetor sendo que em nenhum momento apos tratou a variável como tal.
  11. O post de Ansi C em Loop for não executando foi marcado como solução   
    Muito improvável, se o vetor tem 10 elementos e queremos percorrer todos elementos,
    basta que a sentinela tem 10. Com essa afirmativa tenho:
    int vetor[10], x = 10; ou
    int i; for (i = 0, x = 10; i < x; i++) { printf("%d", vetor[i]); } ou ainda
    int vetor[10], x = sizeof (vetor) / sizeof (*vetor);... int i; for (i = 0; i < x; i++) { printf("%d", vetor[i]); }
  12. O post de Ansi C em Ajuda sobre bibliotecas C++ foi marcado como solução   
    Este sítio é o dos melhores de referência para quem estuda ou vai estudar C.
    Até mesmo quem é profissionais recomenda /utiliza.
    http://www.cplusplus.com/ 
  13. O post de Ansi C em Como achar a diferença entre dois vetores em C? foi marcado como solução   
    Escreva uma busca/pesquisa em que cada elemento em x deve ser pesquisado em y. Você já estudou estruturas de loop for aninhadas, vai ter que ser com 2 declarações de loop ou modular com função de busca.
  14. O post de Ansi C em Problema em Czão - Armazenamento de Variável foi marcado como solução   
    @Grégori Sória
    O problema pode ser na pilhagem (código abaixo acessa bytes do código acima).
    a solução seria reestruturar o código, você
    já aplicou esta e funcionou. Supondo que essa etapa de loops não seja parte de nenhuma avaliação, simplesmente passe de uma estrutura (tmp) pra outra.
  15. O post de Ansi C em Dúvida - Problema com Struct foi marcado como solução   
    Então existe declarações de nomeCliente como sendo objeto e membro de estrutura simultaneamente. Quando se remove o campo nomeCliente da estrutura, aonde houver a sentença: clientes[?].nomeCliente haverá também erro de copilação neste linhas.
  16. O post de Ansi C em Me ajudem a voltar as configurações do code blocks foi marcado como solução   
    Vá com mouse até; View~ Toolbars~
    E todas estão listadas. Para escolher
    Qual queremos ativar clicando nela.
  17. O post de Ansi C em Qual o problema na lógica do programa? foi marcado como solução   
    Oi Ana Luiza Cunha tudo bem? Veja abaixo 
     do {        algarismos_AC++;        numero_AC=numero_AC/10;    }    while (numero_AC!=0); o fragmento acima é do seu código, ele é o motivo de ter dito o fator 0 em
    poster anterior. Observei que a condição while em que; 
    (numero_AC!=0) Leia-se: enquanto não for 0, sustenta o loop Statement
     
    Tem que ser 0 em algum momento ou resulta em um loop infinito, entretanto o
    problema não é mencionado, assumimos que em algum momento o valor fixou
    em comprimento 0.
     
    Outra questão, não foi você que atribui, foi o programa. Ainda usando o código:
    Se inicialmente numero_AC = 101 o que se verá nos registro a cada step é:
    Observe o que aconteceu dentro do WHILE loop.
     
    Loop 1: numero_AC = 101 / 10;
    Loop 2: numero_AC =  10  / 10;
    Loop 3: numero_AC =    1  / 10;
    Loop 4: numero_AC =    0  / 10;
    END LOOP numero_AC = 0;
     
     
     
     
    PS.: Eu não sou bom em dar explicações,
    justamente não espero nada das outras.
    {'!'}
  18. O post de Ansi C em Dúvidas em relação a descobrir maiores valores em vetores com estrutura definida pelo usuario em c++ foi marcado como solução   
    Teu algorithm está correto costumo usar também a mesma lógica com pequena correção:
    p = 0;
    for(int i = 1; i < n; i++)
    if (pontos.x > pontos[p].x)
    p = i;
    returno p; //índice do maior valor em x.
  19. O post de Ansi C em Dúvida em executar um arquivo .exe no c++ foi marcado como solução   
    Se estou acerto, basta adicionar <stdio.h>
    E função getchar(); no final do bloco obtendo uma pausa do tipo enter keypress.
  20. O post de Ansi C em Dúvida em relação a recursividade em c++ foi marcado como solução   
    Hey!
    Você errou ao colocar: a == 0, invés de b == 0   !!!!!!!!!!!!
     
    kkkk
  21. O post de Ansi C em Warning de ponteiro foi marcado como solução   
    Agora sim!
    Faz assim, modifique para;
    1.
    struct Teste {
    char v1[6];
    char v2[6];
    char v3[6];
    }teste = { 0 };
    Depois.
    ptr = &buffer[0];
    strncpy(teste.v1, ptr, 5);
    ptr = &buffer[5];
    strncpy(teste.v2, ptr, 5);
    ptr = &buffer[9];
    strncpy(teste.v3, ptr, 5);
    Teste ai por favor que estou longe de casa
  22. O post de Ansi C em Programa em C (Equação) foi marcado como solução   
    Bhaskara para equações do 2 grau: ax2 + bx + c = 0
    Para saber mais sobre a Formula, consulte em um buscador web, ou em livros de Ensino Médio.
     
     

  23. O post de Ansi C em Inserção ordenada em lista simplesmente encadeada foi marcado como solução   
    Será que se tu tira lhes o código tmp->prox = NULL do bloco de comentários em; contato *criar() talvez resolva.
  24. O post de Ansi C em Como criar vetor de struct em C foi marcado como solução   
    Pensei um pouco hoje, e fiz da seguinte maneira, observem:
     
    Code

  25. O post de Ansi C em Variável mudando sozinha! em C foi marcado como solução   
    
    #include <stdio.h> // entrada e saída de dados //
    #include <stdlib.h>
    //* função principal do software
    //* pós-dados: fim do programa
    int main(void)
    {
    // Supomos que o local na memória é...
    unsigned char vaium = 0; // 0x28FF1F
    unsigned char hcuVal2 = 0; // 0x28FF1E
    // Neste ponto você pode notar um fato
    // como o nosso suposto copilador iniciou
    // as variáveis na stack.
    // Vamos atribuir valor as duas
    vaium = 1;
    hcuVal2 = 1;
    // Imprimi-las...
    printf("vaium=:%d""\n"
    "Val2=: %d""\n",
    vaium, hcuVal2);
    // Agora vamos a experiencia...
    // Entre com sprintf();
    char hcNew = '1';
    puts("Entrou com sprintf()");
    sprintf(&hcuVal2, "%d", hcNew);
    // Imprimi-las...
    printf("vaium=:%d""\n"
    "Val2=: %d""\n",
    vaium, hcuVal2);
    puts("Wow!!! vaium =: 0 ????");
    // Se a experiencia foi bem sucedida como aqui
    // você percebeu que ambas as variáveis tiveram
    // o valor modificado... E Então você já
    // entendeu o por que!
    // Suponho que tenha relação com o que aconteceu
    // com à variável vaium;
    // Tudo neste problema veem do interno da função
    // ??? " %d", ???; ela espera um int (16 bits);
    // mais hcuVal2, tem apenas 8 bits, então a função
    // invade os próximos bits na memória da stack.
    //
    // Isso me ocorreu enquanto dormia
    // achei tão interessante que postei de celular mesmo.
    // Tenha um boa noite.
    return ( 0); //<
    }

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