Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
JuliaOrlova
0 / 0 / 0
Регистрация: 09.05.2013
Сообщений: 13
1

Определить, сколько раз элементы массива при просмотре от его начала меняют знак

23.05.2013, 14:03. Просмотров 863. Ответов 6
Метки нет (Все метки)

Дан массив ненулевых целых чисел. Определить, сколько раз элементы массива при просмотре от его начала меняют знак. Например, в массиве 10, -4, 12, -4, -89, знак меняется три раза.

я вот тут начала но нетбинс ничего не считывает, прошу помощи:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/*
 * 
 */
int main() 
{
    const size_t n=10;    
    int a[10] = {0};
    
    printf ("Vvedite %d znachenii\n", size);
    
    for (int i = 0; i<size; i++)
    {
        printf ("Vvedite element № %d: ", i++);
        scanf ("%d", &a[i]);
        printf ("a[%d] = %d\n", i, a[i]);
    }
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2013, 14:03
Ответы с готовыми решениями:

Определить, сколько раз элементы массива меняют знак при просмотре от его начала
дан массив целых чисел, определить сколько раз элементы массива меняют знак при...

Определить, сколько раз элементы массива меняют знак (отдельно в строках и столбцах)
Что не так??почему выводит не то значение? #include &lt;stdio.h&gt; #include...

Определить сколько раз в последовательности меняется знак
Заданное целое n&gt; 0 и последовательность из n действительных чисел. Определить...

Цикл While: определить, сколько раз в последовательности меняется знак
Вводится последовательность ненулевых целых чисел, оканчивающаяся нулем. ...

Определить, сколько раз во вводимой последовательности меняется знак
Подскажите, как определить сколько раз меняется знак. Именно суть. Если просто...

6
easybudda
Модератор
Эксперт CЭксперт С++
10208 / 6107 / 1536
Регистрация: 25.07.2009
Сообщений: 11,606
23.05.2013, 18:08 2
Цитата Сообщение от JuliaOrlova Посмотреть сообщение
нетбинс ничего не считывает
В каком смысле? У Вас значения читаются и тутже выводятся...

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
 
#define ARRAY_SIZE(arr) ( sizeof(arr) / sizeof(*(arr)) )
 
int main(void) {
    int array[] = { 10, -4, 12, -4, -89 }, i, sign, count;
    
    sign = ( array[0] < 0 ) ? -1 : 1;
    count = 0;
    for ( i = 1; i < ARRAY_SIZE(array); ++i ) {
        if ( array[i] * sign < 0 ) {
            ++count;
            sign *= -1;
        }
    }
    
    printf("Array:\n");
    for ( i = 0; i < ARRAY_SIZE(array); ++i )
        printf("%d ", array[i]);
    printf("\nSign was changed for %d times.\n", count);
    
    return 0;
}
Если в массиве значение -2147483648 (INT_MIN) не встретится, то можно сказать работает...
1
JuliaOrlova
0 / 0 / 0
Регистрация: 09.05.2013
Сообщений: 13
28.05.2013, 16:56  [ТС] 3
Цитата Сообщение от easybudda Посмотреть сообщение
sign = ( array[0] < 0 ) ? -1 : 1;
как понять эту строку??? ее нужно будет как-то объяснить.

Добавлено через 48 секунд
easybudda, большое спасибо!
0
easybudda
Модератор
Эксперт CЭксперт С++
10208 / 6107 / 1536
Регистрация: 25.07.2009
Сообщений: 11,606
28.05.2013, 17:26 4
Цитата Сообщение от JuliaOrlova Посмотреть сообщение
как понять эту строку?
если значение первого в массиве элемента меньше нуля, sign = -1, если нет, то sign = 1
0
JuliaOrlova
0 / 0 / 0
Регистрация: 09.05.2013
Сообщений: 13
28.05.2013, 20:18  [ТС] 5
а по-другому это не записать?
0
easybudda
Модератор
Эксперт CЭксперт С++
10208 / 6107 / 1536
Регистрация: 25.07.2009
Сообщений: 11,606
28.05.2013, 23:40 6
C
1
2
3
4
if ( array[0] < 0 )
    sign = -1;
else
    sign = 1;
но с тренарным оператором и короче и нагляднее, если привыкнуть...

Добавлено через 7 минут

Не по теме:

Цитата Сообщение от JuliaOrlova Посмотреть сообщение
ее нужно будет как-то объяснить
Сдаётся мне, строчка эта - меньшая из проблем... А саму логику программы (как именно количество перемен знака считается) сможете объяснить? И про INT_MIN коварный препод наверняка поинтересуется - чем это значение так карты путает?..

1
MrGluck
Модератор
Эксперт CЭксперт С++
8107 / 4959 / 1436
Регистрация: 29.11.2010
Сообщений: 13,456
29.05.2013, 02:08 7
Учитывая, что 0 не имеет знака
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#define SIZE 5
 
int main(void)
{
    int arr[SIZE] = {10, -4, 12, -4, -89}, i, counter = 0;
    short int isPositiveLast = (arr[0] > 0), isPositive;
    
    for (i=1; i < SIZE; i++)
    {
        isPositive = (arr[i] > 0);
        if (isPositiveLast != isPositive && arr[i] != 0)
            counter++;
        if (arr[i] != 0)
            isPositiveLast = isPositive;
    }
    printf("Counter: %d\n", counter);
    
    return 0;
}
0
29.05.2013, 02:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2013, 02:08

Определить, какие элементы первого массива и сколько раз встречаются во втором массиве
Ребят, помогите разобраться в написании программы на языке Си. Сама задача: ...

Определить, какие элементы первого массива и сколько раз встречаются во втором массиве
Ребят, помогите разобраться в написании программы на языке Си. Сама задача: ...

Дана последовательность чисел. Определить сколько раз в ней меняется знак
Помогите с задачей: Дана последовательность чисел. Определить сколько раз в...


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

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

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