Ir ao conteúdo
  • Cadastre-se

C++ Vetores - Conta negativos e soma positivos


Posts recomendados

Visitante

Boa noite! Eu preciso fazer um programa que preencha um vetor com dez números reais, calcule e mostre a quantidade de números negativos e a soma dos números positivos desse vetor. Porém no meu código está dando o seguinte erro: invalid types 'float [10][float]' for array subscript.

Porém eu preciso que os números também possa ser com casas decimais. Este é meu código:

#include <iostream>
using namespace std;
int main()
{
	float n[10], cont, soma=0, neg = 0;
	for (cont=0; cont<=10; cont++)
	{
		cin>>n[cont];
		if (n[cont]<0)
		{
			neg = neg + 1;
		}
		if (n[cont]>0)
		{
			soma = soma + n[cont];
		}
	}
	cout<<neg<<endl<<soma;
	return 0;
}

Alguém poderia me ajudar? Sou iniciante...

Link para o post
Compartilhar em outros sites
  • Membro VIP

@farnyy O contador deve, obrigatoriamente, ser inteiro.

A variável conta negativo também deve ser inteira. Entenda que números que servem para contar, incrementar ou decrementar, números índice (como é o núimero dentro do vetor), devem ser inteiro, pois não podem ser números quebrados.

float somente a soma e o vetor.

  • Curtir 1
Link para o post
Compartilhar em outros sites
  • Membro VIP

Testei aqui e está funcionando perfeitamente.

Link para o post
Compartilhar em outros sites
Visitante

@Math.Pi o meu está dando o seguinte resultado:

entrada: 9.4   2.5   1   5.9   1.6   -1   -6.7   -8.1   -2.3   -9.5

saída: 5   2

Porém tem que ter a saída: 5    20.4

#include <iostream>
using namespace std;
int main()
{
	float n[10], soma=0;
	int cont, neg = 0;
	for (cont=0; cont<=10; cont++)
	{
		cin>>n[cont];
		if (n[cont]<0)
		{
			neg = neg + 1;
		}
		if (n[cont]>0)
		{
			soma = soma + n[cont];
		}
	}
	cout<<neg<<endl<<soma;
	return 0;
}

 

Link para o post
Compartilhar em outros sites
  • Membro VIP

A saída pra mim está certa. Só que ele está pedindo 11 números. Tire a igualdade no cont<=10.

Nos números 0 que são float, tente mudar para 0.00. Talvez seu compilador traduza o 0 como int e esteja causando o problema.

 

#include <iostream>
using namespace std;
int main()
{
	float n[10], soma=0.00;
	int neg = 0, cont;
	for (cont=0; cont<10; cont++)
	{
		cin>>n[cont];
		if (n[cont]<0.00)
		{
			neg = neg + 1;
		}
		if (n[cont]>0.00)
		{
			soma = soma + n[cont];
		}
	}
	cout<<neg<<endl<<soma;
	return 0;
}

 

  • Amei 1
Link para o post
Compartilhar em outros sites
5 horas atrás, farnyy disse:

Consegui resolver esse problema, mas o resultado ainda está saindo diferente

 

Uma soma não pode dar um resultado "diferente"

 

Sobre esse trecho: 

 

		if (n[cont]<0)
		{
			neg = neg + 1;
		}
		if (n[cont]>0)
		{
			soma = soma + n[cont];
		}

 

deve imaginar que se já testou n[cont] < 0 não há muito sentido, se algum, em testar se é maior que zero., A outro possibilidade seria igual a zero e nesse caso a soma não mudaria nada...  E existe o else para o if...

 

	float n[10], soma=0;
	int cont, neg = 0;
	for (cont=0; cont<=10; cont++)
      /// ...

 

De 0 a 10 são 11. E só declarou 10... Pense nisso. 

 

Não declare mais de uma variável por linha.

 

As linhas são grátis. Não fazer isso só atrapalha. Talvez não tivesse errado na primeira versão se tivesse feito isso...

 

Em nenhum lugar está escrito que precisa ler do usuário esses 10 números. E só perde seu tempo ao fazer isso se está começando. Aprenda a começar com valores constantes ou calculados antes de tentar fazer algo interativo. Não leva a nada ficar inventando dez números a cada teste se está aprendendo a programar. Programas interativos não acrescentam nada: só demoram uma eternidade para testar.

 

E faça seu programa testar para você: antes de ficar imaginando use uma série conhecida e mostre na tela antes...

 

Uma alternativa ingênua até:

 

Veja essa saída 
 

PS C:\src\ifdef> g++ -o teste -Wall c1312.cpp
PS C:\src\ifdef> ./teste
        Valores: -5 -4 -3 -2 -1 5 4 3 2 1     
        negativos: 5    soma dos positivos: 15
PS C:\src\ifdef>

 

Deste programa

 

#include <iostream>
using namespace std;
int main()
{
	float valor[10]{ 
        -5,-4,-3,-2,-1, 
         5, 4, 3, 2, 1
    };
    float soma = 0.;
	int negativos = 0;
    cout << "\tValores: ";
	for (auto x : valor)
	{
        cout << x << " ";
		if ( x >= 0 )
            soma +=x;
            else
            negativos +=1;
	}

	cout <<
        "\n\tnegativos: " << negativos <<
        "\tsoma dos positivos: " << soma <<
        endl;
    return 0;
}

 

 

 

  • Curtir 1
  • Amei 1
Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Redes-Wi-Fi-capa-3d-newsletter.png

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!