Ir para conteúdo
Fórum Script Brasil
  • 0

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


sinkz

Pergunta

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 para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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;
}

Editado por == Douplus ==
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...