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

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

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

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

30.03.2010, 21:52. Просмотров 1992. Ответов 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;}
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2010, 21:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Неубывающая последовательность. (C++):

Неубывающая последовательность - C++
Понять не могу вроде все должно работать. #include &quot;stdafx.h&quot; #include &quot;stdio.h&quot; #include &quot;conio.h&quot; #include &quot;math.h&quot; #include...

Что такое неубывающая последовательность ? - C++
Подскажите пожалуйсто что такое неубывающая последовательность желательно определение и желательно слово в слово, а то в интернете вообще...

Получить сумму членов исходной последовательности если преобразованная последовательность неубывающая - C++
Помогите!!! Дана последовательность действительных чисел A(n). Если в результате замены отрицательных членов последовательности их...

Вычислить число различных элементов последовательности (предположить, что последовательность неубывающая) - C++
C++ Вычислить число различных элементов последовательности( предположить, что последовательность неубывающая) Если можно то с...

Задана последовательность слов. Определить частоту вхождения каждого слова в последовательность. - C++
Доделать программу, чтобы работала как надо Задана последовательность слов. Определить частоту вхождения каждого слова в...

Вводится последовательность из N вещественных чисел. Определить, является ли последовательность знакочередующе - C++
Вводится последовательность из N вещественных чисел. Определить, является ли последовательность знакочередующейся. не пойму как сделать,...

5
M128K145
Эксперт С++
8293 / 3513 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
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 - глупо, это может привести к большим ошибкам, логичнее возвращать отрицательное число
0
Bloodykeeper
This party getting crazy!
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
31.03.2010, 07:39  [ТС] #3
M128K145, спасибо! а для Си код такой же? и...какие переменные из этой функции использовать в основной?
0
M128K145
Эксперт С++
8293 / 3513 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
31.03.2010, 10:11 #4
Bloodykeeper, никаких. Просто передаете в функцию массив и его длину, и получаете индекс
На С точно также
0
Bloodykeeper
This party getting crazy!
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 минут
Актуально!
0
easybudda
Модератор
Эксперт CЭксперт С++
9683 / 5633 / 956
Регистрация: 25.07.2009
Сообщений: 10,813
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;
}
1
31.03.2010, 18:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2010, 18:55
Привет! Вот еще темы с ответами:

Массив: Вставить в последовательность действительное число b так, чтобы последовательность осталась неубывающей. - C++
дана последовательность действительных чисел. вставить в нее действительное число b так, чтобы последовательность осталась неубывающей. ...

Если последовательность отсортирована по возрастанию, оставить ее без изменения. Иначе получить иную последовательность - C++
Дана последовательность действительных чисел X1,X2,X3,…,Xn (n&gt;2, заранее неизвестно). Если последовательность отсортирована по возрастанию,...

Дана последовательность, элементы которой есть целые двузначные числа. Упорядочить последовательность по убыванию произведений цифр - C++
Здравствуйте. На форуме есть код подобный, но по возрастанию сумм элементов. Как мне подправить код, чтобы было &quot;по убыванию произведений...

Вводится последовательность из N целых чисел. Сформировать последовательность, - C++
Вводится последовательность из N целых чисел. Сформировать последовательность, каждый элемент которой равен сумме цифр исходной...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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