Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
#1

Неубывающая последовательность. - C++

30.03.2010, 21:52. Просмотров 1731. Ответов 5
Метки нет (Все метки)

Написать и протестировать функцию, которая определяет, образуют ли элементы целочисленного массива неубывающую последовательность. Функция возвращает NULL, если всё в порядке, или индекс первого элемента массива, на котором условие нарушается.

Необходима эта задача, точнее как выглядит решение. Вот нашёл как она пишется на С#. Есть ли человек, который сможет мне перевести её с этого языка на Си?

C#
1
2
3
4
5
6
7
8
9
10
11
12
private int prover(int[] arr)
{
bool tf=false;
for(int i=0;i<arr.Length;i++)
{
if(arr[i]<arr[i+1])
{tf=true;}
else{break;return i+1;}
}
if(tf==true)
{return null;}
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2010, 21:52     Неубывающая последовательность.
Посмотрите здесь:

Что такое неубывающая последовательность ? C++
Преобразовать литерную последовательность в другую литерную последовательность всеми описанными ниже способами C++
Вводится последовательность из N целых чисел. Сформировать последовательность, C++
C++ Вычислить число различных элементов последовательности (предположить, что последовательность неубывающая)
C++ Вводить последовательность вещественных чисел, пока следующее вводимое число не окажется меньше предыдущего. Вывести полученую последовательность.
Вводится последовательность целых чисел,0 –конец последовательности. Определить, содержит ли последовательность хотя бы три отрицательных четных числа C++
C++ Дана последовательность, элементы которой есть целые двузначные числа. Упорядочить последовательность по убыванию произведений цифр
Массив: Вставить в последовательность действительное число b так, чтобы последовательность осталась неубывающей. C++
Если последовательность отсортирована по возрастанию, оставить ее без изменения. Иначе получить иную последовательность C++
C++ Вводится последовательность из N вещественных чисел. Определить, является ли последовательность знакочередующе
Неубывающая последовательность C++
C++ Получить сумму членов исходной последовательности если преобразованная последовательность неубывающая

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M128K145
Эксперт C++
 Аватар для M128K145
8277 / 3496 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
31.03.2010, 00:42     Неубывающая последовательность. #2
Поверьте, этот код, который на шарпе не рабочий и написан более чем криво.
C++
1
2
3
4
5
6
7
int prover(int* arr, int size)
{
    for(int i = 0; i < size - 1; ++i)
        if(arr[i] >= arr[i + 1])
            return i + 1;
    return -1;
}
Возвращать NULL - глупо, это может привести к большим ошибкам, логичнее возвращать отрицательное число
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
31.03.2010, 07:39  [ТС]     Неубывающая последовательность. #3
M128K145, спасибо! а для Си код такой же? и...какие переменные из этой функции использовать в основной?
M128K145
Эксперт C++
 Аватар для M128K145
8277 / 3496 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
31.03.2010, 10:11     Неубывающая последовательность. #4
Bloodykeeper, никаких. Просто передаете в функцию массив и его длину, и получаете индекс
На С точно также
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
31.03.2010, 18:16  [ТС]     Неубывающая последовательность. #5
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    int *a, i, n, k;
 
    printf("Enter n, k: ");
    scanf("%d %d", &n, &k);
 
    arr = (int *) malloc(sizeof(int) * n);
    for(i = 0; i < n; i++) {
        printf("array[%d]: ", i);
        scanf("%d", &a[i]);
    }
     prover(int* arr, int size)
............................................
 
int prover(int* arr, int size)
{
    for(int i = 0; i < size - 1; ++i)
        if(arr[i] >= arr[i + 1])
            return i + 1;
    return -1;
}
Пока что вот так вот застрял. Помогите плиз доделать.

Добавлено через 4 часа 11 минут
Актуально!
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
31.03.2010, 18:55     Неубывающая последовательность. #6
Цитата Сообщение от M128K145 Посмотреть сообщение
Возвращать NULL - глупо, это может привести к большим ошибкам, логичнее возвращать отрицательное число
В книжках про программирование в UNIX часто такой подход наблюдал: в случае успеха функция возвращает 0, неудачи - какое-нибудь число, ошибки - -1
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
 
/*
    возвращает 0, если последовательность неубывающая,
    положительное число, если нет, -1 в случае ошибки
*/
int test(int * arr, int count){
    int i;
    if ( !arr || count < 2 )
        return -1;
    for ( i = 1; i < count && arr[i] >= arr[i-1]; ++i )
        ;
    return ( count - i ) ? i : 0;
}
 
int main(void){
    int arr1[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    int arr2[] = { 1, 4, 3, 2, 5, 6, 7, 9, 8 };
    int t;
 
    if ( ( t = test(arr1, sizeof(arr1) / sizeof(*arr1)) ) < 0 ){
        fprintf(stderr, "Error!\n");
        return 1;
    }
    printf("Array #1 is %s\n", ( t ) ? "BAD" : "OK");
 
    if ( ( t = test(arr2, sizeof(arr2) / sizeof(*arr2)) ) < 0 ){
        fprintf(stderr, "Error!\n");
        return 1;
    }
    printf("Array #2 is %s\n", ( t ) ? "BAD" : "OK");
 
    return 0;
}
Yandex
Объявления
31.03.2010, 18:55     Неубывающая последовательность.
Ответ Создать тему
Опции темы

Текущее время: 12:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru