Jump to content
Sign in to follow this  
Dougg_Ghost

Ajuda em Ponteiros e funções

Recommended Posts

Basicamente, tenho esse exercício (que foi passado em duas provas de C na faculdade), e nas duas acabei deixando em branco por não ter ideia de como fazer (nem como começar), não queria pedir resolução, mas sim explicação e se possível uma ajuda com código.
Realmente não tenho ideia do que fazer por isso não coloquei meu código.

Segue enunciado:

Escreva uma função remove_dup(floatv[],int n) que receba o vetor e verifique a existência de elementos duplicados. Caso não existam elementos duplicados retorne 0. Caso existam, remova estes elementos (deixando apenas um) e retorne o número de elementos removidos.

Share this post


Link to post
Share on other sites

os parametros da função são o vetor e o numero de elementos nele.

dentro da função vc percorre o vetor olhando de repete algum. Se não repetir nenhum retorna 0, se repetir é meio complicado, mas vc desenrola um algoritmo para "remover" os repetidos. consegue fazer?

  • +1 1

Share this post


Link to post
Share on other sites

explica uma coisa, suponhamos o seguinte vetor:

1 | 2 | 2 | 3 | 4

 

a função vai mexer nesse segundo dois. Mas é para o vetor ficar assim:

 

1 | 2 | | 3 | 4

 

ou assim?

 

1 | 2 | 3 | 4

 

se sua duvida for na hora da passar o vetor, na hora de chamar a função:

 

funcaoRomover(nomeDoVetor, tamanhoDoVetor); "o nome do vetor é sem colchete mesmo"

 

dentro da função você trabalha normal com o vetor como trabalharia dentro da main

Share this post


Link to post
Share on other sites

explica uma coisa, suponhamos o seguinte vetor:

1 | 2 | 2 | 3 | 4

 

a função vai mexer nesse segundo dois. Mas é para o vetor ficar assim:

 

1 | 2 | | 3 | 4

 

ou assim?

 

1 | 2 | 3 | 4

 

se sua duvida for na hora da passar o vetor, na hora de chamar a função:

 

funcaoRomover(nomeDoVetor, tamanhoDoVetor); "o nome do vetor é sem colchete mesmo"

 

dentro da função você trabalha normal com o vetor como trabalharia dentro da main

 

Então, se eu entendi bem, a função ficaria 1|2|3|4.

Sou iniciante em ponteiro e.e, por isso to com tantas dúvidas

Share this post


Link to post
Share on other sites
remover(int vet[], int n)
{
    int i, j;
    for(i=1; i<n; i++)
    {
        for(j=0; j<i; j++)
        {

            if(vet[i]==vet[j])
            {
                vet[i]=-1;
            }
        }
    }

}

olha, essa função coloca o valor -1 no lugar dos repetidos, foi o que eu consegui pensar, mas se vc quiser "espremer" os valores, tenta fazer uma que percorra o vetor e quando encontrar -1, substitua o valor pelo proximo numero

  • +1 1

Share this post


Link to post
Share on other sites
remover(int vet[], int n)
{
    int i, j;
    for(i=1; i<n; i++)
    {
        for(j=0; j<i; j++)
        {

            if(vet[i]==vet[j])
            {
                vet[i]=-1;
            }
        }
    }

}

olha, essa função coloca o valor -1 no lugar dos repetidos, foi o que eu consegui pensar, mas se você quiser "espremer" os valores, tenta fazer uma que percorra o vetor e quando encontrar -1, substitua o valor pelo proximo numero

 

Cara, muito obrigado mesmo!! :D

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By edvaldo joviano de paula
      Prezados, boa tarde!
      Preciso de uma ajuda sendo possível:
       
      Tenho o seguinte cenário em uma consulta ( formação de kits de produtos tendo como produto principal um valor igual, ex: produto 1 é formado pelos produtos 2 e 3)
      select codkit, produtos from kit where codkit = 1
      ---   ----
      1    2
      1    3
      Percebem que o resultado traz o codigo do kit (1) e os produtos que compoem este kit (2,3), porem o produto 2 tambem faz parte do kit 4 junto com o produto 10 e produto 3 faz parte do kit 5 junto com o produto 11 sendo:
      kit 1 (2,3)
      kit 4 (2,10)
      kit 5 (3,11).
       
      Eu preciso de uma ajuda sobre alguma função que ao comprar os produtos 2 e 3 e estes estando na mesma nota fiscal (select produtos from notafiscal = x) traga o resultado do kit que estes dois produtos juntos formam, exemplo, ao pesquisar (select produtos from notafiscal = x) nesta nota existir os produtos 2 e 3 traga o resultado 1, se na nota existir os produtos 2 e 10 traga o resultado 4 e se existir na consulta dos itens da nota os itens 3 e 11 o resultado seja 5. Caso na pesquisa eventualmente existir por exemplo 10 unidades do item 2, 5 unidades do item 3 e 5 unidades do item 10, o resultado deve ser 1 e 4 pois 5 unidades do 2+5 unidades do 3 forma o kit 1 e 5 unidades do 2+ 5 unidades do 10 formam o kit 4.
       
      Espero ter explicado de forma a ser entendido e agradeço a ajuda.
       
    • By Diogo Dall'Orto
      Ola pessoal boa tarde.
      Por  gentileza preciso da vossa ajuda.
       
      O programa para verificar o maior,  menor e seus respectivos índices eu consegui fazer conforme podem observar no código e saída abaixo, o problema esta quando tenho que implementa-lo na função.
       
      #Escreva um programa em Python com uma função que recebe por parâmetro uma lista de números inteiros e retorna o índice em que se encontra o maior elemento da lista.
      #Escreva um programa em Python com uma função que recebe por parâmetro uma lista de números inteiros e retorna o índice em que se encontra o menor elemento da lista.
       
      Estou a uma semana agarrado nisso! Help please!
       
      # Criar um programa em python que cria # uma lista com 10 elementos. Após isso # implementar o algoritmo para verificar e # exibir o maior elemento do vetor lista = list() for i in range(1, 11): lista.append(int(input(f'{i} - Digite um valor: '))) pos = maior = menor = indice = indicemai = indicemen = 0 while pos < len(lista): if pos == 0: maior = menor = lista[pos] indice = pos else: if lista[pos] > maior: maior = lista[pos] indicemai = pos pos += 1 while pos < len(lista): if pos == 0: menor = maior = lista[pos] indice = pos else: if lista[pos] < menor: menor = lista[pos] indicemen = pos pos += 1 print() print(f'Maior valor na lista esta é {maior}, e esta na posicao [{indicemai}] ') print(f'Menor valor na lista esta é {menor}, e esta na posicao [{indicemen}]') "D:\Python\Projetos Pycharm\venv\Scripts\python.exe" "D:/_____Impacta_____/Python/Projetos Pycharm/MaiorValorNoVetor.py" 1 - Digite um valor: 34 2 - Digite um valor: 54 3 - Digite um valor: 65 4 - Digite um valor: 76 5 - Digite um valor: 87 6 - Digite um valor: 34 7 - Digite um valor: 54 8 - Digite um valor: 23 9 - Digite um valor: 54 10 - Digite um valor: 45 Maior valor na lista esta é 87, e esta na posicao [4] Menor valor na lista esta é 34, e esta na posicao [0] Process finished with exit code 0  
       
    • By LucasOficial
      Me foi passado um trabalho de faculdade que consiste em:
      imagine um vetor inicialmente vazio com capacidade CAP.
      cria um programa que através de um menu permita o usuário
      inserir um novo numero
      remover um valor
      remover o elemento de uma determinada posição
      alteração de um valor por outro
      buscar determinado valor e dizer sua posição (caso exista)
      exibição de todos os elementos do vetor
       
      quero algumas ideias de como começar, quais funções, variáveis usar. sou bastante leigo nesse assunto.
    • By Charles Ramos
      Bom dia, estou com uma dificuldade em um algoritmo para um jogo da forca em VisuALG, o algoritmo foi solicitado para um trabalho e um dos requisitos é que ele tenha uma função, como vocês podem ver foi colocado uma função, porém a professora disse que aquela função não retorna nenhum valor, e por isso ela se encaixa como procedimento, pesquisei, tentei e não conseguir encaixar uma função nesse algorítimo, queria acrescentar também a cada final de rodada a opção de jogar ou não novamente.
      desde já agradeço a ajuda. 
       
      abaixo segue o Algorítimo - obs o visuALG utilizado foi o 2.0
       
      algoritmo "Jogo da forca"
      var
      op,frutas,ne,na:inteiro //op: opçao, ne: numero erro, na:numero de acertos
      l1,l2,l3,l4,l5,l6,l7,ld1,ld2,ld3,ld4,ld5,ld6,ld7,dig,verifica:caracter //linhas(l1,l2,l3...) serão usadas para o aleatorio, já as ld (ld1, ld2, ld3) serão usadas para verificar o acerto
      V,D:Caracter
      funcao Derrota () :caracter
      inicio
                        Escreval("============================================================")
                        escreval("============================================================")
                        escreval
                        escreval(" --------- FIM  DE JOGO! ------- ")
                        ESCREVAL
                        ESCREVAL(" --------- GAME OVER =( ------- ")
                        ESCREVAL
                        Escreval("============================================================")
                        escreval("============================================================")
      fimfuncao
      funcao   vitoria () : caracter
      inicio

                        limpatela
                        Escreval("============================================================")
                        escreval("============================================================")
                        escreval
                        escreval(" PARABÊNS VOCE VENCEU!  ")
                        ESCREVAL
                        Escreval("============================================================")
                        escreval("============================================================")
                        fimfuncao
      inicio
      aleatorio on  // ativa o modo aleatorio fonte, palavra on é opcional
      aleatorio 1,7 // seleciona o ranger do aleatorio, é preciso definir para o comando ter as opção para escolha
      leia (frutas) // todo leia vai ser lançado um numero aleatorio nesse caso de 1 a 3
      aleatorio off  // desativa o modo aleatorio, assim ele escolher uma das opções das palavras.
      limpatela  // limpa tela
      repita // (repita 1) repitir o comando ate achar o comando interrompa
      escreval("---SEJA BEM VINDO---")
      escreval
      escreval(" ---JOGO DA FORCA--- ")
      escreval("Autores: Charles Ramos, Pedro Duca, Richard Vepo")
      escreval
      escreval
      escreval("Digite 1 para jogar e 0 para sair")
      leia(op)
      escolha op // verificar qual opção foi selecionada
             caso 0 //sair
                  escreva("você escolheu a opção 0 para sair")
                  escreval
                  escreval
                  fimalgoritmo  // encerrar o algoritmo
             caso 1
                  interrompa  // para o loop de escolher opção
             outrocaso   // caso digite algo diferente de 0 ou 1 ele vai limpar a tela
             limpatela   // limpa a tela, e vai voltar para o loop de opção.
      fimescolha
      fimrepita// fim repita 1
      escolha frutas // palava que vai ser escolhida automaticamente pelo aleatorio no inicio do código em aleatorio on
              caso 1
                   l1 <- "d"
                   l2 <- "a"
                   l3 <- "m"
                   l4 <- "a"
                   l5 <- "s"
                   l6 <- "c"
                   l7 <- "o"
              caso 2
                   l1 <- "a"
                   l2 <- "b"
                   l3 <- "a"
                   l4 <- "c"
                   l5 <- "a"
                   l6 <- "x"
                   l7 <- "i"
              caso 3
                   l1 <- "a"
                   l2 <- "b"
                   l3 <- "a"
                   l4 <- "c"
                   l5 <- "a"
                   l6 <- "t"
                   l7 <- "e"
              caso 4
                   l1 <- "a"
                   l2 <- "c"
                   l3 <- "e"
                   l4 <- "r"
                   l5 <- "o"
                   l6 <- "l"
                   l7 <- "a"
              caso 5
                   l1 <- "l"
                   l2 <- "a"
                   l3 <- "r"
                   l4 <- "a"
                   l5 <- "n"
                   l6 <- "j"
                   l7 <- "a"
              caso 6
                   l1 <- "p"
                   l2 <- "e"
                   l3 <- "s"
                   l4 <- "s"
                   l5 <- "e"
                   l6 <- "g"
                   l7 <- "o"
              caso 7
                   l1 <- "g"
                   l2 <- "u"
                   l3 <- "a"
                   l4 <- "r"
                   l5 <- "a"
                   l6 <- "n"
                   l7 <- "a"
      fimescolha

      ld1 <- "_"           // LINHAS USADAS PARA ESCREVER
      ld2 <- "_"
      ld3 <- "_"
      ld4 <- "_"
      ld5 <- "_"
      ld6 <- "_"
      ld7 <- "_"

               // inicio do jogo
                repita //repita2
                       se (ne > 7) entao  // Se número de erros for maior que 6 que é o tamanho das palavras logo, jogador perde, ou seja, jogador possui 6 chances apenas.
                         D<- Derrota
                        FIMALGORITMO
                       fimse

                       se (ld1 <> "_") e (ld2 <> "_") e (ld3 <> "_") e (ld4 <> "_") e (ld5 <> "_") e (ld6 <> "_") e (ld7 <> "_") entao // Se as linhas forem diferentes de _ significa que existe letra no local,
                         V<- Vitoria
                        FIMALGORITMO
                        fimse

                limpatela
                Escreval("============================================================")
                escreval("============================================================")
                escreval("")
                escreval("    /-----|")
                escreval("   /      |")
                se (ne > 0 ) entao
                   escreval("  /     (x.x)")
                senao
                   escreval("  /")
                fimse
                se (ne > 1 ) entao
                     escreval(" |      __||__  ")
                senao
                     escreval(" |   ")
                fimse
                se (ne > 2 ) entao
                   escreval(" |     /|     |\\")
                senao
                   escreval(" |   ")
                fimse
                se (ne > 3) entao
                   escreval(" |   /  |_____| \\")
                senao
                     escreval(" |   ")
                fimse
                se (ne > 4) entao
                   escreval(" |       ||  ||")
                senao
                     escreval(" |      ")
                fimse
                se (ne > 5) entao
                   escreval(" |      _|| _||")
                senao
                   escreval(" |     ")
                fimse
                se (ne > 6) entao
                   escreval(" |     |__||__|")
                   escreval("=====                ULTIMA CHANCE! ")
                senao
                     escreval(" |    ")
                   escreval("=====               ")
                fimse
      escreval("")
      escreval("Acertos: ",na)
      escreval("Erros: ",ne)
      escreval("")
      escreva("Palavra com 7 letras:     ",ld1," ",ld2," ",ld3," ",ld4," ",ld5," ",ld6," ",ld7)
      Escreval("")
      escreval("Dica da palavra: FRUTA ")
      escreval
      escreva("digite uma letra: ")
      leia(dig)

      verifica <- "0"
      se (l1 = dig) e (ld1 = "_") entao
           ld1 <- dig
           na <- na + 1
           verifica <- "1"
      fimse

      se (l2 = dig) e (ld2 = "_") entao
               ld2 <- dig
               na <- na + 1
               verifica <- "1"
      fimse
      se (l3 = dig) e (ld3 = "_") entao
               ld3 <- dig
               na <- na + 1
               verifica <- "1"
      fimse
      se (l4 = dig) e (ld4 = "_") entao
               ld4 <- dig
               na <- na + 1
               verifica <-  "1"
      fimse
      se (l5 = dig) e (ld5 = "_") entao
               ld5 <- dig
               na <- na + 1
               verifica <- "1"
      fimse
      se (l6 = dig) e (ld6 = "_") entao
               ld6 <- dig
               na <- na + 1
               verifica <- "1"
      fimse
      se (l7 = dig) e (ld7 = "_") entao
               ld7 <- dig
               na <- na + 1
               verifica <- "1"
      fimse
      se (verifica = "0") entao
      ne <- ne + 1
      fimse
      escreval("==============================================================")
      escreval("==============================================================")
                fimrepita

      fimalgoritmo
    • By rogarfil
      Estou trabalhando com PHP e utilizo URL amigável. Ao clicar no link <a class="nav-link" href="<?php echo URL::getBase(); ?>blog" tabindex="12">blog</a>, minha URL fica:
      Abrindo a página blog.php esta contém a função function getBlog() que lista todos os artigos, com uma paginação de 10 por página.
      Ao clicar em um destes artigos, minha URL fica:
      Abrindo a página artigo.php esta contém a função:
      function getViewBlog() { // Ler URL (array) $url = $_SERVER['REQUEST_URI']; $valor = explode("/", $url); // Recebe o id do rgf_content via GET $id_blog = $valor[3]; ... } Onde pega o id_blog da URL e mostra todo o conteúdo deste artigo nesta página.
      O que estou buscando realizar é fazer com que estas duas funções abram na mesma página que aqui neste caso seria a blog.php.
      O motivo que leva-me a essa lógica é que da maneira que se encontra e quando estou na página artigo.php e ao clicar no link do breadcrumbs em artigo surge o erro:
      Pois na URL não aparece o conteúdo da variável $id_blog.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.