Ir ao conteúdo

Reberth Siqueira

Membro Pleno
  • Posts

    105
  • Cadastrado em

  • Última visita

posts postados por Reberth Siqueira

  1. Novamente peço desculpa pela minha falta de atenção... Esqueci de adicionar o asterisco no sizeof(Fork)

     

    Eu quis dizer assim:

     

    Fork** root = (Fork**)malloc(sizeof(Fork*) * nodes);

     

    adicionado 6 minutos depois
    1 hora atrás, arfneto disse:

    os ponteiros devem ser inicializados

    Show. Era isso que eu imaginava. valeu

  2. Certo. Muito interessante essa declaração de escopo dentro dos métodos switch, while e for... Vou começar a utilizar, sempre que possível.

     

    Só pra confirmar... Após criar o vetor de Fork*:

     

    Fork** root = (Fork**)malloc(sizeof(Fork) * nodes);

     

    Todas posições no vetor já são NULL?
     

    *(root+1) == NULL
    *(root+2) == NULL
        .
        .
        .
    *(root+n) == NULL

     

    Ou tenho que setar como NULL?

     

    for (int i = 0 ; i < nodes ; i++) {
      *(root+i) = NULL;
    }

     

     

     

  3. Com esse programa eu queria que fosse possível criar, adicionar uma aresta e depois liberar o grafo. Ontem peguei novamente para estudar e identifiquei alguns erros no método em que eu determinei para criação das arestas. Começando pela struct:

     

    Mudei de:

     

    struct FORK {
        int value;
        PFork next;
    };

     

    Para:

    struct FORK {
        int col;
        PFork next;
    };

     

    Onde int value eu queria armazenar um valor qualquer e no int col eu desejo armazenar o indice de refêrencia ao node desejado.

     

    A partir dai utilizei os métodos para matrizes esparsas e acho que deu certo...

     

    AGORA REFERENTE A SUAS OBSERVAÇÕES

     

    11 horas atrás, arfneto disse:

    Fork** createRoot(int nodes, int maxConnections) { int i; Fork** root = (Fork**)malloc(sizeof(Fork) * nodes); for (i = 0; i < nodes; i++) { root[i] = NULL; } return root; }

     

    invés de fazer igual acima eu posso fazer que nem abaixo?

     

    Fork** createRoot(int nodes) {
       return (PPFork) malloc(sizeof(Fork *)*nodes);
    }

     

  4. 18 minutos atrás, Samuel Perini disse:

    Qual o tamanho dessa partição? 

     

    Imagino que ela somente não tem um sistema de arquivo definido (ntfs, fat, fat32) ou ela é uma partição do HD que foi criada durante a instalação do sistema. 

    É uma partição NFTS. Esse é um disco de 1TB que retirei de um servidor que está em RAID1 onde está com problema de filesystem. Tentei conectar esse HD no meu PC para poder tentar recuperar os arquivos mas não consigo acessar o volume.

     

    Eu sei que é NFTS pois eu utilizei o TestkDisk para scannear o disco, eu consegui até copiar os arquivos que tem nele para um outro HD externo, mas não deu certo (a pasta em que está os arquivos copiados no HD externo não está 'mostrando' os arquivos que foram copiados desse HD de 1TB).

     

  5. Eu estou com o livro físico e nele está igual o pdf :(

    Enfim,

     

    23 horas atrás, arfneto disse:

    Quando você aloca por exemplo um vetor de estruturas, você faz a conta do tamanho total a alocar. Peguei um pedaço de um programa que postei outro dia aqui para exemplo

    
    struct exemplo
    {
        int    i_parametro;
        double d_parametro;
        char*  s_parametro;
        int    (*f_parametro_i)(int); //<- ESSE        //_ Protótipo 
        void   (*f_parametro_v)(int, int); //<- ESSE   //            de função?
    };
    typedef struct exemplo Exemplo;

     

     

    Eu não entendi os ultimos dois parametros... Eles são protótipos de função?? Eu to entre prototipo de função e ponteiros que podem ser alocados para virar vetor/matriz

     

    23 horas atrás, arfneto disse:

    Os deslocamentos são 1464 1465 e 1466

     

    Esses deslocamentos são números de bytes?

     

     

    Enfim, também consegui chegar nos números deslocamentos que você chegou. Tá muito confuso pra mim esse exercicio kkkk

     

    Mas desde já obrigado pela ajuda!! Sempre é bom contar com você nos tópicos que eu crio, sempre sei que vou aprender muita coisa.

    Curti muito a tua explicação sobre vetores de estruturas.

     

    Boas ferias pra você também

     

  6. Por enquanto cheguei no código abaixo, onde é criado um vetor de n dimensões com range[n] elementos.

    Se estiver correto, agora, estou tendo problemas pra entender a parte final da questão:

     

    Em 07/01/2020 às 15:44, Reberth Siqueira disse:

    A função listoff deve imprimir os deslocamentos a partir da base do vetor a, representado por range, de todos os elementos de a que estejam incluídos no vetor (ou o deslocamento do único elemento, se todos os índices estiverem dentro dos limites) representado por sub.

     

    Até

    Citação

    ...base do vetor a

     eu entendi. Depois disso... kkk

    #include<stdio.h>
    #include<stdlib.h>
    
    
    int main(){
    
    int n; 
    scanf("%i",&n);//2
    
    int range[n],sub[n];
    
    for(int i = 0 ; i < n; i++){
        scanf("%i",&range[i]); //5 5
    }
    
    for(int i = 0 ; i < n; i++){
        scanf("%i",&sub[i]); // 0 0
    }
    
    
    listOff(range,sub,n);
    
    
    
        return 0;
    
    }
    
    void listOff(int range[], int sub[],int n){
    
    int base;
    int aux=1;
    int offset = 0;
    int* vet;
    int* posicao;
    
    for(int i = 0 ; i < n ; i++){
        aux*= range[i];
    }
    
    vet = (int*) malloc(aux*sizeof(int));
    
    base = vet;
    
    
    
    for(int i = 0 ; i < n ; i++){
    
        offset=range[i]*offset+sub[i];
    }
    
    vet[0] = -3;
    
    
    posicao = base+(offset*sizeof(int));
    
    printf("%i",*posicao); //-3
    
    free(vet);
    }
  7. Ainda estou em dúvida em como criar o ponteiro que vai ser utilizado para realizar a alocação. Por exemplo

     

    n = 1
      range[n] // 1 dimensão
      
      scanf("%i",&range[n]); // 2 
    
      int* vet;
    
    vet = (int*) malloc(range[n] * sizeof(int)); // será criado um vetor vet[2]

     

    Como a variável n  fica a critério do usuário, podemos ter n dimensões... Logo, pra cada dimensão eu teria que transformar o ponteiro atual em outro ponteiro:

     

    se n = 1
      
      *vet //1 dimensao
    se n = 2
      **vet // 2 dimensões
    se n = 3
      ***vet // 3 dimensões
      

    Existe um algoritmo que cria um ponteiro de ponteiro com base nas dimensões especificadas?

  8. Boa tarde @DiF, tudo bem?

     

    Então cara, ainda estou de férias da faculdade e estou me preparando para adiantar algumas máterias. Algoritmos e Estrutura de Dados é uma delas, que inclusive é a máteria que estou estudando com o livro que eu anexei no inicio do post.

     

    Como pode ver, eu linkei o livro e mencionei onde encontrar o enunciado, e sobre qual conteúdo eu ACHO que a questão está se referindo.

     

    Acredito que houve um mal entendido, pois eu fiz esse post com intuito de sanar minhas dúvidas que estão no final do post e não obter respostas prontas.

     

    Talvez eu não tenha sido muito claro e por isso peço desculpas.

     

    Vou reformular minhas dúvida  :)

     

  9. Enunciado:

    Citação

    Escreva uma função em C, listoff, que aceite como parâmetros dois vetores unidimensionais do mesmo tamanho: range e sub.

    range representa a faixa de um vetor de inteiros. Por exeplo, se os elementos de range são:

     

           3 5 10 6 3

     

    range representa um vetor a declarado por:

     

          int a[3][5][10][6][3]

     

    Os elementos de sub representam índices para o vetor anterior. Se sub não estiver entre 0 e range-1, todos os índices a partir do iésimo em diant estão ausentes. No exemplo anterior, se os elementos de sub são:

     

           1 3 1 2 3

     

    sub representa o vetor unidimensional a[1][3][1][2]. A função listoff deve imprimir os deslocamentos a partir da base do vetor a, representado por range, de todos os elementos de a que estejam incluídos no vetor (ou o deslocamento do único elemento, se todos os índices estiverem dentro dos limites) representado por sub. Pressuponha que o tamanho (esize) de cada elemento de a seja 1. No exemplo anterior listoff imprimiria os valores 4, 5 e 6.

    Legenda:

    esize == sizeof

     

    Essa questão (Questão 1.2.7 - página 56 do livro)  foi retirada do livro  ESTRUTURA DE DADOS USANDO C (Tenenbaum/Langsam Augenstein)

     

    Talvez a resposta esteja na seção "Vetores multidimensionais" que tá a partir da página 50, no final da sessão foi passado até um algoritmo que consegue percorrer as posições do vetor:

     

    offset = 0;
    for(j = 0 ; j < n ; j++){
    	offset = r[j]*offset+i[j];
    }
    addr = baseVetor + esize * offset;

     

     

    mas mesmo assim eu ainda tenho dúvidas sobre como:

                       -> OBS: Pode ser que eu tenha entendido errado o enunciado, ainda não compreendo esses novos termos de deslocamento, faixa, etc

    Citação

    Se os dois vetores (range e sub) tem o mesmo tamanho ->

                       cada elemento do vetor range = tamanho de cada dimensão do vetor

                       cada elemento do vetor sub = indice de cada dimensão do vetor

    Com isso, na main.c eu criei o vetor range[n] e o vetor sub[n] (n é o tamanho do vetor, definido pelo usuario)

    
    int n;
    
    scanf("%i",&n);
    
    int range[n],sub[n]
     for(int i = 0 ; i < n ; i++){
      scanf("%i", &range[i]);
    }
    for(int i = 0 ; i < n ; i++){
      scanf("%i", &sub[i]);
    }

    Com isso eu eu tenho o tamanho do vetor que vai ser criado (os elementos do vetor range) e tenho o elemento do vetor criado que vai ser procurado (os elementos do vetor sub)

     

    Minha DÚVIDA vem agora:

    Eu tenho que criar a função que vai receber os vetores range e sub

    
    void listoff(int range[],sub[]){
    
    
    
    
    
    }

    Pelo que eu entendi do enunciado, eu tenho que criar uma vetor a dentro da função listoff, de tamanho a[range[n1]] ... [range[n-1]]

     

    Meu problema é nesta parte... Como vou criar um vetor com base nos números dos elementos de range?

     

    Já pensei em utilizar alocação dinamica mas aí eu teria que criar o ponteiro com base no número de elementos de range:

    
    n = tamanho do vetor
    range[n];
    
    if(n == 4){
      int**** vet;
    }
    
    vet = (int****) malloc(range[0]*sizeof(int***);
    vet[0] = (int***) malloc(range[1]*sizeof(int**);
    vet[1] = (int***) malloc(range[1]*sizeof(int**);
                             .
                             .
                             .
    vet[0][0][0] = (int*) malloc(range[3]*sizeof(int);
                             .
                             .
                             .
    vet[n][n][n] = (int*) malloc (range[3]*sizeof(int);
                              

    E sinceramente, ainda não tenho noção se da pra fazer isso.

                     

       - Imprimir os deslocamentos

     

     

    Obrigado desde já!

  10. Em 17/12/2019 às 22:07, ezequiel972 disse:

    caro @Reberth Siqueira, boa noite!!

     quando clonamos um objeto usando x.cloneNode(true), nos criamos um objeto irmão do primeiro com as mesmas propriedades, exceto pelos listners que  nao sao copiados e precisam ser adicionados novamente a cada objeto.

    segue ex.

    
    X = document.createElement("div");	// cria o elemento div
    X.classList.add("classteste");		// add a class nele
    
    document.body.appendChild(X.cloneNode(true)); // clona e anexo o elemento
    document.body.appendChild(X.cloneNode(true));
    document.body.appendChild(X.cloneNode(true));
    document.body.appendChild(X.cloneNode(true));
    document.body.appendChild(X.cloneNode(true));
    
    elementList = document.querySelectorAll(".classteste");	//seleciona todos elementos pela class, retorna um array de elementos 
    for(i=0 ; i<elementList.length ; i++){ // repassa cada elemento do array e adiciona o listner nele
    	console.log(elementList[i]);
      elementList[i].addEventListener("click", function(e){ //preferivel usar addEventListener a   element.onclick = function(). 
      	console.log(e);
      }, false);} 

     

     

    Bom dia Ezequiel!

     

    Só passando aqui pra avisar que criei um bloco de código  que a função dele é anexar um novo formulário na pagina através do DOM para cada novo evento de click em um botão.

    Eu criei um método que cria o formulário e configura as proriedades do formulário (inclusive o botão que vai ser clicado), e ao utilizar o addEventListener eu tive um problema o qual o mesmo acumulava novos métodos no botão.

    O mesmo botão era utilizado nos outros forms, acho que foi por isso que foi acumulando os eventos de click.

     

    Então eu aprendique o AddEventListener não sobrepoe os eventos anteriores. Muito legal

  11. Olá!!

     

     

    Finalmente iniciei com NodeJS e sinceramente, eu to totalmente perdido kkkk Já vi algumas video aulas e ainda estou vendo. Mas eu não tenho paciencia.... eu gosto de praticar. Então, já entendi como são feitas as requisições POST e GET, e agora estou tentando aprender como manipular os dados que são retornados do servidor. O que eu estou fazendo é:

     

     

    (seguind a ordem abaixo)

     

    Client-side: Através do POST estou mandando os dados {tipo=este 

    Server-side: Recebe o dado e o retorna em formato JSON {"tipo":"teste"} (O MEU PROBLEMA VEM A SEGUIR)

    Client-side: Ao receber o responseText, armazezar a resposta em uma variavel global chamada teste e dar um console.log(teste)

     

     

    Atualmente só tá sendo printado undefined no teste. Já tentei  utilizar .slice() mas mesmo assim não deu certo ;|

     

    o que eu to fazendo de errado?

     

     

     

     

    Código CLIENTE-SIDE

    let teste; // AQUI QUERO QUE RECEBA O VALOR DO RESPONSETEXT
    
    const post = () => {
    
         event.preventDefault();
        let ajax = new XMLHttpRequest();
        let params = "tipo=teste";
    
        ajax.open('POST', 'http://localhost:3000/');
    
        ajax.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
    
        ajax.onreadystatechange = () => {
    
            let resposta = ajax.responseText;
    
            teste = resposta.slice();
    
        }
    
        ajax.send(params);
    
    }
    
    window.addEventListiner('onload', () => {
    
    
        post();
    
        console.log(teste); //UNDEFINED
    });

     

    Código Server-side

    let express = require('express');
    let bodyParser = require('body-parser');
    let cors = require('cors');
    
    let app = express();
    
    let objet;
    
    
    let urlEnconded = bodyParser.urlencoded({ extended: false });
    
    app.use(function (req, res, next) {
        res.header("Access-Control-Allow-Origin", "*");
        res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
        next();
    });
    
    app.use(cors());
    
    app.post('/', urlEnconded, (req, res) => {
    
        objet = {
            tipo: req.body.tipo
        }
    
        res.send(objet);
    
    
    
    })
    
    
    app.listen(3000, () => {
        console.log('hey');
    });
    
    

     

  12. Boa tarde!! Tudo bem??

     

    Estou voltando pra dizer que estou tendo problemas para settar eventos:

     

    Se eu setto algum evento no elemento X:

    x.onclick = () => {
    console.log("hey");
    }

    e realizar  o appendChild como informado:

     

    document.body.appendChild(x);
    document.body.appendChild(x.cloneNode(true));
    document.body.appendChild(x.cloneNode(true));

     

    Se eu clicar no primeiro elemento que foi anexado ao document.body a mensagem será printada no console. Mas se eu clicar nas outras duas depois, nada acontece.

     

    já tentei algumas coisas e mesmo assim nao deu 😕

  13. Boa noite,

    Eu estou desenvolvendo um projeto o qual eu desejo integrar o iFood para obter os dados de pedido. Mas eu não faço mínima ideia de por onde começar...

     

    Alguem já fez algo semelhante antes? Eu ainda não parei pra estudar integrações de serviços. Essa vai ser minha "primeira", eu to meio perdido quanto a isso.. Não sei nem se tenho que usar php ou alguma outra linguagem e nem sei se realmente é possivel fazer isto...

     

    Já entrei em contato com as empresas pedindo um auxilio e estou aguardando respostas.

     

    Enfim... Se alguem puder me dar uma direcionada eu agradeço muito!!

     

    att,

    reberth

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!