Suma elementów dwucyfrowych ujemnych

0

Witam. Chce napisać program liczący sumę elementów dwucyfrowych ujemnych ; elementy typu int wczytywane z klawiatury
do napotkania wartości (bez tej wartości), ale nie więcej niz n elementów. Napisałem kod który nie działa i nie moge poradzic sobie ze znalezieniem błędu, proszę o pomoc.

#include <iostream>
#include <math.h>


using namespace std;

int liczba,stoper,i,ile,n,suma;

int ile_cyfr(int liczba) // Funkcja ma sprawdzac ile cyfr ma liczba
{	
	int licznik=0;
	if(liczba==0)licznik = 1;
	else
	{
		while(fabs(liczba)>=1)
		{
			liczba=liczba/10;
			licznik++;
		}
	}
	
	return licznik;
}

int main()
{

cout << "Podaj ile max elementow: ";
cin >> n;
cout <<"Podaj stoper: ";
cin >> stoper;

cout << "Podaj liczbe: ";
cin>> liczba;

while(n>0 && liczba!=stoper) 
{
if(liczba<0) // jesli liczba jest ujemna .. 
{
	ile=ile_cyfr(liczba);
	
	if(ile==2) // jesli liczba jest dwucyfrowa to... 
	{
		suma+=liczba;
	}
}
	
n--;

}

cout << "Suma = "<< suma;

	return 0;
} 
0

Dwie sprawy:

  1. przeniesienie
cout << "Podaj liczbe: "; cin>> liczba;

do pętli while na pewno pomoże
2) listę zmiennych: int liczba,stoper,i,ile,n,suma; przenieś do funkcji main - staraj się unikać jak ognia zmiennych globalnych

0

Sprawdzenie czy liczba jest ujemna i dwucyfrowa można zrobić znacznie prościej.

if(liczba < -9 && liczba > -100)
{
    suma+=liczba;
}
0

ps

int count_digits(int number) {
	return std::floor(std::log10(std::abs(number)))+1;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1