Ir para conteúdo
Fórum Script Brasil

britivaldo

Membros
  • Total de itens

    198
  • Registro em

  • Última visita

Tudo que britivaldo postou

  1. A melhor alternativa é reler todo material teórico até codificar as primeiras linhas, porém exige mais minutos de chateação e angústia. Talvez seja melhor usar uma colinha, ou seja, busque por si entre os exemplos disponíveis na ‘internet’ até encontrar aquele que consideras mais elementar, não é nada difícil para tu que entende os conceitos. Com seu modelo, realize os reparos necessários e gradualmente adapte à tua necessidade. Essa tarefa é menos chata que força uma implementação do nada.
  2. Pilhas e filas de modo fundamental são quase iguais porque diferem, somente, nas operações. Estuda-se em algoritmos de estruturação de dados às filas, ou no inglês: queue, que seus elementos entram no fim da fila e saem no começo, de tal forma, operações de inserção e remoção só ocorrem respectivamente em suas extremidades; ou último elemento a entrar é o último a sair Com pilhas, ou no inglês: stack, a dinâmica é ainda mais restrita que filas, pois, as operações de inserção e remoção são reversíveis, ou seja, o último elemento a entrar é o primeiro a sair porque tem apenas um das extremidades operacional. Por exemplo, como uma pilha de pratos. Fazendo a questão POR você, julgues que não.
  3. britivaldo

    MergeSort

    @Felipe L Silvaa Boa Tarde, Acredito que sim, suponho que tenha interesse em colocar os dados do referido arquivo na memória? Essa é a alternativa mais segura de ordenação, nela se preserva o arquivo e os dados de falhas durante a tarefa, desse modo um vetor com capacidade igual carrega a cópia dos dados na memoria, é na memória que a função de ordenação aplica seu algoritmos sem risco os dados originais.
  4. @WILLIAN S C Boa Tarde, Como aparentemente de um erro associada o IDE e não ao código, troque por outro que não DEV-C++. No geral, os alunos optam por Code :: Block no início até que acumula conhecimento o bastante e migra para outros mais sofisticados.
  5. Não sei porque divergem, mas ambas implementações falham no instanciamento por serem abstratas .
  6. Impossível! Porque essas varáveis ao seu modo são identificadores membros da estrutura, e só é permitido ser assim quando declaradas junto a estrutura (struct). Pode declara um membro de variável indexável flexível, mas acredito que ainda não é o que procura, contudo é o mais próximo que as especificações permite alcançar o que deseja.
  7. Impossível em C! Python, que é uma linguagem de alto nível, permite soma entre variáveis indexáveis e primitivas porque primitivas e lista são objetos, tudo em Python é objeto.
  8. britivaldo

    Exercício de Macro

    Comentário: Difícil porque macros são simplificações que produzem nomes para blocos e expressões que naturalmente é o contrário de mirabolante.
  9. @iagoomarques boa tarde. Qual o método que escolheu e que dificuldade ou problema tem?
  10. @ARSaraiva Bom Dia. Seu problema não é de linguagem e sim de lógica. O que você precisa é calcular o módulo do índice em um ou em ambos os vetores simulando sua restrição de alcance (range). Exemplo // INCLUSOES #include <iostream> // using namespace std; // main ---Função principal do programa int main(void) { int my_array0 [5] = {0 , 1 , 2 , 3 , 4 ,}; int my_array1 [9] = {0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ,}; for (int index = 0 ; index < 10 ; ++index) { std::cout <<(my_array0 [index%5])<<(my_array1 [index%9])<<(" , "); } std::cout <<("\b\b ")<< std::endl; return 0; }
  11. britivaldo

    linguagem c++

    Bom dia @kelcione O que você já implementou?
  12. Boa dia @ezbueno O número de espaços antes da informação é igual ao numero (índice) da linha na informação.
  13. @ezbueno, @Hazzu Boa Tarde! MEMORIA LINEAR Tempo médio de leitura: 2 minutos O problema não é de caractere branco na entrada da função scanf que lê 1x caractere, porém é na função scanf sim na da chamada posterior que está gravando no espaço maior que a capacidade da variável e sobrescrevendo na memória variável posterior. Ordem linear de Declaração ( sobrescrevendo-se variável posterior ) Exemplo int a = 5; /* (4) na ordem de criação */ float b = 2.5; /* (3) na ordem de criação */ char c = 'a'; /* (2) na ordem de criação */ bool d = true; /* (1) na ordem de criação */ As variáveis do sistema são "criadas" na ordem inversa de sua declaração; prove essa afirmação estudando seus ponteiros. No caso do exemplo a variável bool d terá o menor índice das variáveis na memória (referência), enquanto que a variável int a tem o maior índice delas. Ainda com relação as variáveis, observe que a variável bool d tem menos memória (1 byte) que uma variável int qualquer (4 bytes). E se somarmos a variável que vem depois dela (na ordem de criação: char c) ou antes dela (na ordem de declaração: char c) teremos uma equivalente variável do tipo short int (2 bytes). Conclusão Pois então é justamente o que acontece quando escreve-se scanf ("%d", &d); ao que sabemos de ("%d", ...) essa string de formatação lê 1x inteiro decimal do tipo int (4 bytes). Logicamente que o ponteiro da variável bool d, por conta da string "%d", é visto pela função como um ponteiro para tipo int e acaba por alcançar os bytes da variável char c que vem logo depois (na ordem de criação) zerando-a no início. Obrigado
  14. @Murilo Soares, olá! O que você consegue implementar?
  15. Nesse expressão não há valores reais, apenas inteiros. Exite diferença na estrutura de uma variável real e inteiro. O resultada da expressão é um valor 0 < x < 1 que em inteiro é 0
  16. Olá @RAILSON DE JESUS DINIZ ROSExiste um erro, os índices não atribuídos necessários para acessar e gravas informações nos espaços dos vetores. Corrigindo funcionou struct dicionario { char palavra[20]; char definicao[50]; }; //** compara duas palavras. */ bool compararStrings(const char palavra1[], const char palavra2[]){ int i = 0; while(palavra1[i] == palavra2[i] && palavra1[i] != '\0' && palavra2[i] != '\0'){ ++i; } if (palavra1[i] == '\0' && palavra2[i] == '\0'){ return true; }else{ return false; } } // procura String. int procurarStrings(const struct dicionario lingua[], const char procurar[], const int numDePalavras){ bool compararStrings(const char palavra1[], const char palavra2[]); int i = 0; while(i < numDePalavras){ if (compararStrings(procurar, lingua[i].palavra)){ return i; }else{ ++i; } } return -1; } int main(void){ const int N = 7; char palavraI[20] = {'\0'}; int resultadoPesquisa; const struct dicionario portugues[7] = { {"pao","comida de farinha."}, {"mortadela","comida de carne."}, {"feijao","comida basileiria."}, {"tropero","tipo de feijao."}, {"queijo","derivado do leite."}, {"macaronada","de macarrao."}, {"pizza","tipico da Italia."} }; // interação com o usuário. printf("Digite uma palavra: "); scanf(" %s",palavraI); resultadoPesquisa = procurarStrings(portugues, palavraI, N); if(resultadoPesquisa != -1){ printf("%s\n", portugues[resultadoPesquisa].definicao); } else { printf("palavra não encontrada!\n"); } getchar(); return 0; } Dessa maneira funciona tudo como esperado!?
  17. Olá @RAILSON DE JESUS DINIZ ROS , estou tentando uma resposta para sua dúvida, mas preciso que, por favor, re-post o código dentro do CODETAG apropriado; para isso use o botão [<>] logo acima na barra de ferramentas da caixa de texto. Obrigado.
  18. Equívocos fatais comprometem todo o sistema, observe com atenção os comentários para função de cadastramento, recomento também breve revisão sobre tipos de escopo de variáveis. Revisão int cadConta(){ struct Conta add[MAX]; /*< Esse aparente vetor é a base de dados do sistema, seu escopo de função é temporário, nele persiste suas informações até o instante em que a função retorna, logo depois desse evento seram 'apagados' do sistema. */ ... }
  19. Sim porque o inteiro 1 e o caractere '1' possuem magnitudes diferentes, porém a sua lógica pode vir a ser corrigida; para corrigir basta fazer a conversão do tipo caractere da tabela para inteiro. Buffer[] = {'1','2','3'};  /* Declaração */ unsigned char var_uc= 0;  /* Declaração */ unsigned char buffer_string[]= "123";  /* Conversão */ var_uc= 100 * ((buffer_string[ 0 ] - '0') + 10 * (buffer_string[ 1 ] - '0') + (buffer_string[ 2 ] - '0'));
  20. Para o tipo de dados que é RU, você precisa de uma variável e só. Então ao invés de declara int ru[ 7 ] declare apenas int ru. A função printf do jeito que está imprime o número que é referência (local) do primeiro elemento do seguimento RU quando RU é um vetor. struct Aluno { char nome[45]; int RU; } /** Tipo de dados aluno */ struct Aluno me; /** Variável do tipo Aluno */ printf( "Entre com seu nome: " ); scanf( "%s", me.nome ); /** Solicita e captura o nome do aluno */ printf( "%s entre com seu RU: ", me.nome ); scanf( "%d", (& me.RU) ); /** Solicita e captura as dezenas do RU */ printf( "Nome: %s RU: %d \n\n", me.nome, me.RU ): /** Imprimi nome e RU */ Perceba que quando fazemos leitura e gravação de seguimentos (vetores) não precisamos solicitar o local na memória (&), isso acontece no caso do vetor nome[ 45 ]
  21. Olá, a lógica é primária; Vejamos, dados dois números inteiros quaisquer defina: quais e quantos valores existem no intervalo aberto onde o valor inicial se encontra na variável inteira inicio e o valor final na variável inteira fim. Todos os valores do intervalo também são outros inteiros. Faça isso de duas maneiras Iterativamente, neste primeiro caso use uma instrução de repetição, mais precisamente, um loop FOR por exemplo. Recursivamente, neste último caso vai ter que implementar uma função que internamente chama a si mesma para simular uma iteração, ou os mesmo efeitos de um loop FOR. Observação @João Paulo Scopel: Seu algoritmo até o momento não satisfaz nenhum dos quesitos no enunciado, pior, pois sem necessidade o usou de estrutura de dados, o que só deixa o código ainda mais difícil de entender. Update: Surgiu um agravante, o que acontece se o inicio é numericamente maior que o fim? Pois o intervalo ainda existiria.
  22. Olá, td certo? Então... A função tem um parâmetro formal do tipo char, seu limite para inteiros positivos é 127. Logo o valor no argumento da fn está corretamente em seu limiar. Depois, no corpo da função, o parâmetro x é logicamente avaliando usado o operador bitwise, o operador & (E) opera bit a bit retornando a sequencia se e quando pelo menor dois bits são igualmente 1. No exemplo em questão a sequencia de bits comparada é: 001 0100 & 101 0010, disso vemos que apenas o bit que se encontra na 5ª casa binária são iguais, assim sendo a função retorna: 001 0000, logo a resposta correta é a C) Contudo para essa resposta acontece é necessário que a função estivesse retornando o valor r, só que ela não está. Ou seja, faltou a instrução de retorno, o código corrigido deveria ser esse. Código no final da funcao; /* ------------------------------- */ #include <stdio.h> int funcao(char x) { int r; r = x & 20; return r; } void main() { printf("%d", funcao(82)); } /* ------------------------------- */ Por essa razão a resposta correta é nenhuma das alternativas acima.
  23. Exatamente, ainda está correto. Claro que ocorreu, ante de x receber o valor 10 ele é 9. O valor foi modificando quando a variável foi lida pela segunda vez a esquerda. Ou seja, a primeiro vez é a direita e a segunda vez é na esquerda x= x--; é a mesma coisa que x= x - 1, x= 10;
  24. Olá, tudo certo!? Então ... Os compiladores que entende x= x e não x= x - 1, estão todos mais certos. O caso de pós-incremento o valor só é decrementado da variável após sua leitura atual. Assim sendo, após x= x--, x será igual a (x - 1).
  25. Impossível assim, pois *.exe são escritos em linguagem de máquina (amotados de comandos em 0s e 1s), o que para resolver esse problema use um programa de engenharia reversa, nunca usei um desses só ouvi boatos a respeito de como funcionam, basicamente, decodificam a linguagem de máquina com uma grande margem de erro para outra.
×
×
  • Criar Novo...