Program do obliczania zmienności liczb.

0

Witam. Potrzebuję program który obliczy ile razy liczby się zwiększyły lub zmniejszyły. Przykłady dla wejść i wyjść:
1.{
wejścia:
3
1 2 3
wyjście:
1
}

2.{
wejścia:
3
1 3 2
wyjście:
2
}

3.{
wejścia:
5
1 5 2 4 7
wyjście:
2
}

4.{
wejścia:
7
1 2 1 4 7 2 3
wyjście:
3
}

0

A jakie jest wyjście dla poniższego?

3
2 1 3
1

Przykłady 3 i 4 są dla mnie niezrozumiałe (nie potrafię ich logicznie pogodzić z wcześniejszymi przykładami).
Według mnie wyniki powinny być tam większe:
dla 3 wynik 3
dla 4 wynik 5

Ergo same przykłady ze szczątkowym opisem: nie są dla nas jasne.

0
kq napisał(a):

A jakie jest wyjście dla poniższego?

3
2 1 3

2
@MarekR22
Dokładnie chodzi o zliczenie wszystkich zmian do podnoszenia i opadania wartości liczb. Zaczynamy od 1 i dodajemy 1 po każdej zmianie.

1
Count+=((First)||(Prev!=Curr));
First=false;
Prev=Curr;

0

@_13th_Dragon: A jak wyglądał by cały kod?

0

@Spine chodziło mi bardziej jak i gdzie umieścić te linjiki w całym kodzie

0

Kod programu który powinien działać:

#include <iostream>
#include <cstdlib>

using namespace std;

int N,lp,wynik=1;

int main()
{
	cin>>N;
	int L[N];
	for(int i=0; i<N; i++)
	{
		cin>>L[i];
	}
	for(int j=0; j<N; j++)
	{
		if(L[0]>L[1])
		{
			lp=1;
		} else {
			lp=2;
		}
		if(lp==2)
		{
			if(L[j+1]<L[j] && L[j-1]<L[j])
			{
				wynik++;
				lp==1;
			}
		}
		else 
		{
		if(lp==1)
			{
			if(L[j+1]>L[j] && L[j-1]>L[j])
				{
					wynik++;
					lp==2;
				}
			}
		}
		if(L[j+1]>L[j] && L[j-1]==L[j])
		{
			wynik++;
			lp==1;
		}
		if(L[j+1]<L[j] && L[j-1]==L[j])
		{
			wynik++;
			lp==1;
		}
	}
	cout<<wynik<<endl;
	system("pause");
	return 0;
}

Aha, w następnych postach proszę o podanie zmodyfikowanej części kodu, która naprawi program.

0

Nie potrzebujesz do tego tablicy!

#include <iostream>
using namespace std;

int main()
{
    size_t i=0,N=0,Count=0;
    int Curr=0,Prev=0;
    for(cin>>N;(i<N)&&(cin>>Curr);++i,Prev=Curr) Count+=(i)&&(Prev!=Curr);
    cout<<Count<<endl;
    return 0;
}
0

@_13th_Dragon: Zkompilowany program oblicza źle. Po wpisaniu 1 wejścia 3 i drugiego wejścia 1,3,2 wyskakuje 3 a powinno być 2. Tak samo dla wejścia pierwszego 7 a pozostałe 3 7 11 11 6 2 4 pokazuje 6 a powinno 3

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