Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++] Обработка одномерных массивов (векторов)


Автор: grishtyrev 15.11.2013, 09:03
Помогите пожалуйста в написании данной программы.

Дан  одномерный  массив  А(N). Составить программу на языке СИ. Если среди элементов массива есть хотя бы одно число Фибоначчи, то вектор инвертировать.

Автор: bsa 15.11.2013, 09:56
Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 

Автор: darkart 15.11.2013, 11:31
Код

#include <stdio.h>
#include <math.h>

#define eps 1e-6
#define N 5

void ReadArray( int arr[], int n );
void WriteArray( int arr[], int n );
int CheckArray( int arr[], int n );
int IsFibNum( int n );
void InvertArray( int arr[], int n );

int main()
{
    int arr[ N ];

    printf( "Please enter an array[ %d ]:\n", N );
    ReadArray( arr, N );

    printf( "Source array:\n" );
    WriteArray( arr, N );

    if( CheckArray( arr, N ) )
        InvertArray( arr, N );

    printf( "Result array:\n" );
    WriteArray( arr, N );
     
    return 0;
}

void ReadArray( int arr[], int n )
{
    int i;
    for( i = 0; i < n; i++ )
        scanf( "%d", &arr[ i ] );
}

void WriteArray( int arr[], int n )
{
    int i;

    if( n <= 0 )
        return;

    for( i = 0; i < n - 1; i++ )
        printf( "%d, ", arr[ i ] );
    printf( "%d\n", arr[ n - 1 ] );
}

int CheckArray( int arr[], int n )
{
    int i = 0;
    int cond = 0;

    while( i < n && !( cond = IsFibNum( arr[ i ] ) ) )
        i++;
    
    return cond;
}

int IsFibNum( int n )
{
    double val1, val2;

    val1 = sqrt( 5.0 * n * n + 4.0 );
    val2 = sqrt( 5.0 * n * n - 4.0 );

    return ( fabs( val1 - ( int ) val1 ) < eps || fabs( val2 - ( int ) val2 ) < eps );
}

void InvertArray( int arr[], int n )
{
    int i, temp;

    for( i = 0; i < n / 2; i++ )
    {
        temp = arr[ i ];
        arr[ i ] = arr[ n - i - 1 ];
        arr[ n - i - 1 ] = temp;
    }
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)