Untitled
unknown
c_cpp
4 years ago
2.2 kB
10
Indexable
/*
ex5b : Finding a zigzag in an array
* ===============
* written by : Tamar Ayache,id : 211359559 , login: tamaray
* This program defines a one-dimensional array of six cells, reads
* data into it, and displays the number
* the cell where the longest zigzag begins in the array,
* as well as the length of that zigzag.
* input: 6 int from the user
* output: The length of the zigzag and the cell number in which it begins
*/
//----------include section-------
#include <cstdlib>
#include <iostream>
//---------using section------
using std::cin;
using std::cout;
using std::endl;
//--------const and enum section------
const int SIZE = 6;
//------prototypes section------
bool is_even(int num);
void input (int arr[], int size);
int zigzag_size (const int arr[], int arr_size, int index);
void find_max_zigzag(const int arr[] , int arr_size, int & max, int & index);
//--------main-------
int main()
{
int arr [SIZE];
int index;
int max;
input(arr, SIZE);
find_max_zigzag(arr , SIZE , max , index);
cout << "Longest zigzag is: " << max << ", starting at index " << index << endl;
return EXIT_SUCCESS;
}
//----------- Input reading function.
void input(int arr[], int size)
{
for (int i= 0 ;i < size ; i++)
cin >> arr[i];
}
//----------A function that finds the length of the zigzag
int zigzag_size(const int arr[], int arr_size, int index)
{
int counter = 1; //counter stars from 1.
for ( ; index < arr_size - 1 ; index++)
{
if (is_even(counter)) //even
{
if (arr[index] > arr[index+1])
counter++;
else
break;
}
else
{
if (arr[index] < arr[index+1])
counter ++;
else
break;
}
}
return counter;
}
//------A Boolean function in which the length of the zigzag is
//an even number
bool is_even(int num)
{
return (num % 2 ==0);
}
//---------A function that finds the longest zigzag length
void find_max_zigzag(const int arr [] , int arr_size, int & max, int & index)
{
max = 0;
int curr_size;
for(int i= 0 ; i< arr_size ; i++)
{
curr_size = zigzag_size(arr, arr_size, i);
if (curr_size >= max)
{
index = i;
max = curr_size;
}
}
}Editor is loading...