Jump to content
Fórum Script Brasil
  • 0

Ajuda com uma funçao em C++ URGENTE!


sinkz

Question

Bom dia pessoal, estou tendo dificuldades de criar uma funçao para calcular a soma da maior sequencia crescente de uma lista.

por exemplo

1) conteudo da lista

1,3,5,2,7,1,3,4,6,0

soma=14

no exemplo 1 ex= 14istem duas somas de sequencia, a soma dos elementos 1,3,5 e a soma dos elementos 1,3,4,6. sendo que a soma dos elementos 1,3,4,6 é igual a 14.

Gostaria de uma funçao para expressar melhor tudo isso. Obrigado.

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Oi!

não te entendi... Voce quer a sequencia que resulte na maior soma ou a soma da sequencia com mais elementos?

No primeiro caso, crie duas variaveis: uma para a maior soma e outra para uma soma qualquer. Faca um loop, e enquanto aparecerem numeros em sequencia vai somando e colocando na variavel de soma qualquer. Se ao fim da sequencia (isto é, aparece um numero que quebre a sequencia ou chega no fim da lista) a soma qualquer for maior que a soma na variavel que guarda a maior soma atualize-a.

No segundo caso, faca parecido mas crie tambem variaveis que contam o numero de elementos da maior sequencia e da atual.

Link to comment
Share on other sites

  • 0

Tipo assim:

#include <iostream>
using std::cout;
using std::endl;

void printArr(int arr[], int pos, int qtde)
{
  int fim = pos + qtde;
  for (int i = pos; i < fim; i++)
    cout<<arr[i]<<' ';
}

int main(void)
{
  int lista[10] = {1,3,5,2,7,1,3,4,6,0};
  int soma, ant = lista[0], novaSoma = ant, tam, novoTam = 1, pos = 0, novaPos = 0;
  bool none = true;

  cout<<"Lista: ";
  printArr(lista, 0, 10);
  cout<<endl;

  for (int i = 1; i < 10; i++) {
    if (lista[i] > ant) {
      novaSoma += lista[i];
      novoTam++;
    }
    else {
      if (none) {
    soma = novaSoma;
    tam = novoTam;
    pos = novaPos;
    none = false;
      }
      // Se for o 2o caso, é só mudar a condicao para (tam < novoTam)
      else if (soma < novaSoma) {
    soma = novaSoma;
    tam = novoTam;
    pos = novaPos;
      }
      novaSoma = lista[i];
      novoTam = 1;
      novaPos = i;
    }
    ant = lista[i];
  }

  cout<<"Sequencia com maior soma: ";
  printArr(lista, pos, tam);
  cout<<"\n                    Soma: "<<soma<<endl;
  return 0;
}

Edited by == Douplus ==
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...