Ir para conteúdo
Fórum Script Brasil

herbertbahiaa

Membros
  • Total de itens

    9
  • Registro em

  • Última visita

Posts postados por herbertbahiaa

  1. Em 27/07/2020 em 07:47, arcsaraiva disse:

    para acessar a primeira posição eu uso offsetZero.index[0]. Se é isso eu já sabia. Meu problema seria fazer :

    se você já consegue acessar o endereço daquilo que voce quer então o que falta?

    vamos supor que você achou isso "offsetZero.index[0]"  e lá nessa primeira posição tem um valor,  e sse valor que será armazenado em um vetor dinamico.

    ok vamos declarar o vetor dinamico

    int *v;//declarei um ponteiro do mesmo tipo de dados do que os dados que vou guardar.
        v = malloc( 1 * sizeof(int));// o meu ponteiro agora tem espaço para guardar 1 inteiro
    *(v+0) = offsetZero.index[0];//armazenei o primeiro valor na primeira posicao

    vou guardar outro? acrescento espaço para outro inteiro e guardo ele também...

    ainda tem dúvida ? ainda acha que precisa me pagar?

     

  2. 17 horas atrás, Guilherme31415 disse:

    Olá, meu nome é Guilherme e estou com um dúvida. Em uma certa parte do meu programa há um loop e eu preciso gerar uma variável aleatória dentro desse loop. Só que o valor dessa variável fica mudando e não queria que acontecesse isso. Como faço para "fixar" essa variável logo após que ela foi gerada?

    poste o seu algoritmo e diga o que esta errado nele para que eu possa ver como ajudar

  3. sobre os vetores dinamicos

    	//se voce declara um vetor dinamico de x posicoes voce pode acessar os elementos através dos índices
    	int *v;
    	v = malloc(x * sizeof(int));
    	//essas são duas maneiras de acessar o indice zero
    	*(v+0) = 700;
    	printf("%d\n", *(v+0));
    	v[0]=500;

    o que é realmente importante saber é que se voce declara um ponteiro voce precisar ter espaço suficiente para guardar tudo aquilo que voce pretende, então muitas vezes é bom fazer calculos separadamente para saber se realmente estamos alocando a quantidade necessaria.

  4. sobre o uso da setinha

    //quando o novo tipo de alguma estrutura for um ponteiro poderá usar setinha ->
    //resumindo o que permite usar -> é possuir um asteristico(*)
    //ex 1:
    struct estrutura5{
     int membro;
    };
    // Acessando através de uma variavel não-ponteiro: e
    estrutura5 e;
    e.membro = 0;
    // Acessando através de uma variavel ponteiro: e2
    estrutura5* e2;
    e2->membro = 0; // ou 
    (*e2).membro = 0;
    
    
    //ex2:
    struct no{		
      int dado;
      struct no *prox;
    };
    struct no *ptr = (struct no*) malloc(sizeof(struct no));
    ptr->dado // ou
    (*ptr).dado
    ptr->prox// ou
    (*ptr).prox

    ponteiro-> é um jeito mais curto de escrever de (*ponteiro). , é uma abreviação mais legível.
    Esses operadores  -> e . são similares. Apenas você usa -> quando o que está à esquerda é um endereço e usa "."
    O operador "." (ponto) é utilizado para acessar membros em estruturas cuja variável não seja um ponteiro.
    O operador "->" (seta) é utilizado para acessar membros em entruturas cuja variável seja um ponteiro. É uma abreviação para "(*variavel)." .

    voce postou um pedaço de algoritmo e ninguém vai adivinhar o que mais que voce escreveu muito menos a intenção que teve quando tentou escrever essas coisas e alocar a memoria dinamicamente

     

  5. #include <stdio.h>
    #include <stdlib.h>
    
    struct lista{
        int info;
        struct lista* prox;
    };
    typedef struct lista Lista;
    
    void inserir(Lista *l){
        Lista* novo= (Lista*)malloc(sizeof(Lista));
        if(!novo){
            printf("SEM MEMORIA!\n");
            exit(1);
        }
        printf("\nInforme um valor: ");
        scanf("%d", &novo->info);
        if(l!=NULL){
            l->prox=novo;
        }
        else{
            Lista *aux = l-> prox;
            while(aux->prox!= NULL){
                aux=aux->prox;
            }
            aux->prox=novo;
        }
    }
    
    Lista *retira_ultimo(Lista *l){
        if(l!=NULL){
            printf("Lista vazia.\n");
            return NULL;
        }
        else{
            Lista *ultimo = l->prox, *penultimo = l->prox;
            while(ultimo->prox!=NULL){
                penultimo=ultimo;
                ultimo=ultimo->prox;
            }
            penultimo->prox=NULL;
            return ultimo;
        }
    }
    main(){
        int op=1;
        Lista *l= (Lista*)malloc(sizeof(Lista));
        l ->prox = NULL;
        Lista* novo= (Lista*)malloc(sizeof(Lista));
    
        inserir(l);
        while(op==1){
            printf("Inserir novo elemento: 1 <sim> outro valor <não> : ");scanf("%d", &op);
            if (op==1)
                inserir(l);
        }
    
        retira_ultimo(l);
    
        printf("\n\nA lista depois de retirar o ultimo numero digitado e o seguinte.\n\n");
        if(l!=NULL){
            printf("Lista vazia.\n");
        }
        Lista *aux = l->prox;
        while(aux!=NULL){
            printf("%d\n", aux->info);
            aux=aux->prox;
        }
    
        return 0;
    }

     

  6. a primeira questao pode ser resolvida criando 7 variaveis e usando ifs ou tambem pode ser resolvida lendo uma string,comparando e usando strpcy.

    a segunda questao use if(num<menor)menor=num;

    a terceira voce vai calcular a media de 3 floats somando eles e dividindo por 3, use if para saber se é menor que 7 e use os mesmos procedimentos para terminar a questao

    a quarta e so receber os valores e calcular e mostrar o resultado

    bons estudos

     

  7. o problema está nessa linha :          scanf("%s",&car);           %s é para strings e não para caracteres

    use:  scanf(" %c",&car);                    não esqueça de deixar um espaço antes do %

×
×
  • Criar Novo...