Ir para conteúdo
Fórum Script Brasil

tanure

Membros
  • Total de itens

    3
  • Registro em

  • Última visita

Posts postados por tanure

  1. Olá galera, boa tarde, sou novo na área de programação e tenho a seguinte questão

    1 – Ajuste o algoritmo que implementa Lista Encadeada para:

    a) Imprimir a lista da seguinte forma:

    à | Posição | Elemento | Endereço de memória |

    B) Permitir a inserção em qualquer posição da lista, bastando informar o elemento e a posição desejada para o mesmo.

    c) Efetuar a remoção de qualquer elemento da lista, informando apenas a posição do elemento.

    fiz este código

    #include <stdio.h>
    #include <conio.h>
    #include <iostream>
    
    #define N 10
    
    typedef struct {
        int Chave;
    } TipoItem; //Cria o TipoItem como struct
    
    typedef struct TipoCelulas *TipoApontador; //Cria apontador para TipoCelula
    typedef struct TipoCelulas {
        TipoItem Item;
        TipoApontador Ant,Prox;
    } TipoCelula[N]; //Cria TipoCelula como struct
    
    
    void FLVazia (TipoCelula *Lista){
         int i;
         i = 1;
         while(i <= 10) {
             if (Lista[i]->prox != NULL)||(Lista[i]->ant != NULL){
               Lista[i]->prox = NULL;
               Lista[i]->ant = NULL;
               Lista[i]->item = NULL;
            i++;
         }
    }    
    
    
    int Vazia(TipoCelula *Lista) { //verifica se a lista está vazia
        int i;
        i = 1;
        while(i <= 10) {
            if (Lista[i]->prox != NULL)
              if (Lista[0].prox==Lista[i].prox){
                return (Lista[0].prox==Lista[i].prox);
                break;
              }  
        i++;
        }
    }
    
    void Insere(ultimo, posicao, TipoItem x, TipoLista *Lista) {//Insere elemento na lista
        
        Lista[posicao]->Ultimo->Prox=(TipoApontador) malloc(sizeof(TipoCelula));//Aloca dinamicamente em memoria espaco do tamanho TipoCelula para o ponteiro TipoApontador
        if (ultimo != posicao)
          Lista[posicao]->ant = &Lista[ultimo];
        Lista[posicao]->item = x;    
        Lista[posicao]->prox = NULL;
    }
    
    void Retira(TipoApontador p, TipoLista *Lista, TipoItem *Item) { //Remove um elemento da lista
        TipoApontador q; // Cria um apontador auxiliar
        if(Vazia(*Lista)) { // Verifica se alista não está vazia
            printf("Erro: Lista vazia ou posicao não existe\n");
            return;
        }
        if (lista[posicao]->item == NULL)
            printf("Erro: Posicao não existe\n");
        else{
           lista[posicao]->ant->prox = lista[posicao]->prox;
           lista[posicao]->prox->ant = lista[posicao]->ant;
        }   
    }
    
    void Imprime(TipoLista Lista) { //Imprime o conteudo da lista
        while(i <= 10) {
            if (Lista[i]->item != NULL)
               Printf("%d, ",i);
               Printf("%d, ",Lista[i]->item);
               Printf("%d\n",&Lista[i]);
            }  
        i++;
        
        TipoApontador Aux; //Cria um apontador auxiliar
        Aux=Lista.Primeiro->Prox; //Atribui o endereco do primeiro elemento ao apontador
        while(Aux!=NULL) {
            printf("%d\n",Aux->Item.Chave); //Imprime o elemento para qual o apontador auxiliar aponta
            Aux=Aux->Prox;//Atribui o endereco do proximo elemento ao apontador auxiliar
        }
    }
    
    void BuscaERetira(int num, TipoLista Lista) { //Busca um determinado elemento e o remove da lista
        TipoApontador Aux; //Cria um apontador auxiliar
        Aux=Lista.Primeiro->Prox;//Atribui o endereco do primeiro elemento ao apontador
        while(Aux!=NULL) { //Percorre a lista até o final dela
            if(Aux->Item.Chave==num){ //Compara se é o elemento procurado da lista
               printf("Elemento encontrado: %d\n",Aux->Item.Chave);
               printf("Ponteiro para o elemento: %d\n",Aux);  
               Retira(Aux,&Lista,&Aux->Item);//Efetua a remocao do elemento identificado da lista
               system("pause");     
               }
            Aux=Aux->Prox; //Atualiza o ponteiro auxiliar para o proximo elemento da lista
        }
    }
    
    int main() {
        int t,opcao, ultimo, posicao;
        TipoLista NumerosInteiros;
        FLVazia(&NumerosInteiros);
        ultimo = NULL;
        do {
            printf("Digite a opcao desejada ou 0 para sair:\n ");
            printf("1 - Inserir elemento na lista\n ");
            printf("2 - Remover elemento da lista\n ");
            printf("3 - Exibir a lista\n");
            scanf("%d", &opcao);
            switch (opcao){
                   case 1:
                        TipoItem temp;
                        printf("Digite a posicao a inserir\n");
                        scanf("%d",&posicao);
                        printf("Digite o valor a inserir\n");
                        scanf("%d",&temp.Chave);
                        Insere(ultimo,Posicao,temp,&NumerosInteiros);
                        ultimo = posicao;
                        break;
                   case 2:
                        printf("Digite o valor a ser removido da lista\n");
                        scanf("%d",&t);
                        BuscaERetira(t,NumerosInteiros);
                        break;
                   case 3:
                        Imprime(NumerosInteiros);
                        system("pause");
                        break;
                   default:
                        printf("Tchau\n\n ");
                        system("pause");
                        break;
            }
            system("cls");
        } while (opcao != 0);
        return 0; 
    }

    porém da erro do começo ao final e o problema é que eu não sei nada de programação e este é o trabalho mais importante do semestre, o que vale mais nota, tenho também o programa em que o professor deu de exemplo, se alguém quiser de coração me ajudar, posso passar o código fonte, conto com a ajuda de vocÊs abraços

  2. vamos a um exemplo

    CREATE TABLE tab_nota_fiscal
    (num_nota INTEGER);
    INSERT INTO tab_nota_fiscal VALUES (1);
    INSERT INTO tab_nota_fiscal VALUES (2);
    INSERT INTO tab_nota_fiscal VALUES (3);
    INSERT INTO tab_nota_fiscal VALUES (4);
    INSERT INTO tab_nota_fiscal VALUES (6);
    INSERT INTO tab_nota_fiscal VALUES (7);
    INSERT INTO tab_nota_fiscal VALUES (8);
    INSERT INTO tab_nota_fiscal VALUES (9);
    seria o mesmo que
    var a : integer;
    begin
       for a := 1 to 9 do
          begin
             SQLQuery1.Close;
             SQLQuery1.SQL.Clear;
             SQLQuery1.SQL.Add('INSERT INTO tab_nota_fiscal VALUES ('+a+')');
             SQLQuery1.ExecSQL;
          end;
    end;

    abraço

    Grande jonas, obrigado pela atenção meu camarada

    mas o que eu precisava mesmo fazer era inserir em um banco de dados elementos,

    mas estes devem ser variaves do delphi

    consegui aki depois de muitas dificuldades hehe

    ai vai o código pois alguém pode ter a mesma duvida que eu...

    DataModule1.SQLQuery1.Close;

    DataModule1.SQLQuery1.SQL.Clear;

    DataModule1.SQLQuery1.SQL.Add('insert into loopfor(VALOR) values (:Valor)');

    DataModule1.SQLQuery1.Prepared := true;

    for linContador := low(larLoop) to high(larLoop) do

    begin

    DataModule1.SQLQuery1.ParamByName('Valor').Value := larLoop[linContador];

    DataModule1.SQLQuery1.ExecSQL;

    end;

  3. olá boa noite

    sou iniciante em delphi e gostaria de saber como enviar pelo delphi 7 uma variável para o firebird 2.1, uso o IBEXPERT

    segue a parte do codigo:

    for linContador := low(larLoop) to high(larLoop) do

    begin

    DataModule1.SQLQuery1.Close;

    DataModule1.SQLQuery1.SQL.Clear;

    DataModule1.SQLQuery1.SQL.Add('insert into loopfor(VALOR) values (larLoop[linContador])');

    DataModule1.SQLQuery1.ExecSQL;

    end;

×
×
  • Criar Novo...