Ir ao conteúdo
  • Cadastre-se

Reberth Siqueira

Membro Pleno
  • Posts

    119
  • 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. Fala galera! Preciso de uma ajuda urgente!

    Eu tenho  um servidor Dell PowerEdge 2950 ao qual eu tenho inicialmente 2 HDs. Esses HDs acredito que devem estar em RAID mas não tenho certeza.

    Acontece que recentemente peguei um + 1 HD. Hoje fui inserir esse HD no servidor e depois que eu inseri e fui ligar o servidor de novo a BIOS começou a indicar o seguinte erro:

    unknown filesystem
    grub rescue

    A partir daí não consegui mais iniciar o sistema operacional. Já tentei algumas coisas que eu andei procurando na internet:

    ps: tudo que eu testei foi após ter removido o HD que eu tinha inserido

    • Buscar pelo disco no console do grub utilizando o comando ls e depois aplicando um set prefix=<(nomeDoHd)>; resultado -> quando chamado insmod normal é retornado failed to read sector 0x2  from <(nomeDoHd)>
    • Colocar só um HD para iniciar; resultado -> bios apontando que mudou configuração do RAID;

    Então de tanto o servidor reclamar do RAID eu fui ver a configuração do raid e vi que tinha um HD com o state Foreign . A unica opção que encontrei para mudar esse state foi aplicando um import foreign . E é isso que eu to tentando agora. O servidor ta lá, rebuildando o disco, espero que de certo....

     

     

    Alguem tem sugestões?

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

     

  7. 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);
    }
  8. 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?

  9. 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  :)

     

  10. 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á!

  11. Boa tarde!

     

    Eu quero implementar a seguinte ideia:

     

    Citação

    Armazenar o resultado de uma consulta no banco de dados em uma variavel (global ou local) para posterior manipulação dos valores.

     

    Então estou tentando utilizar o código abaixo:

    const express = require('express');
    const bodyParser = require('body-parser');
    const MongoClient = require('mongodb').MongoClient;
    const app = express();
    
    
    app.use(bodyParser.urlencoded({ extended: true }));
    
    app.use(bodyParser.json());
    
    const url = "mongodb://localhost:27017";
    const client = new MongoClient(url);
    
    let Global; // <-- Variavel que vai armazenar os dados 
    //               encontrados na procura no banco de dados
    app.get('/exemplo', (req, res) => {
        client.connect((err) => {
            let dbName = 'algumnNomeDeBanco';
            let db = client.db(dbName); // <-- Instanciando conexão com o banco de dados
            let collection = db.collection('algumNomeDeTabela');
    
            collection.find({ nome: 'reberth' }).toArray((err, docs) => {
                Global = docs; //<-- Armazenando o dado encontrado na variavel global
            });
    
    
        });
    
        console.log(Global); // resulltado = undefined
    });
    
    app.listen(3000);
    

     

    Alguem tem alguma ideia de como trabalhar isso?

     

    Obrigado desde já!

     

     

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

  13. 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');
    });
    
    

     

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

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