Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 18.02.2014
Сообщений: 44
1

Вектор. Переменной С присвойте значение, равное сумме всех элементов, предшествующих первому по порядку такому элементу

26.03.2014, 12:21. Просмотров 1699. Ответов 8
Метки нет (Все метки)


Если в заданном целочисленном векторе A(N) есть элементы со значением, равным заданному числу B, то переменной С присвойте значение, равное сумме всех элементов, предшествующих первому по порядку такому элементу; в противном случае вывести соответствующий текст.
Помогите пожалуйста! Не могу понять эту задачу( Как её решать??
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.03.2014, 12:21
Ответы с готовыми решениями:

Переменной Х присвоить значение, равное сумме всех положительных четных элементов, предшествующих первому
Если у массива А(10) есть элемент, равный В, то переменной Х присвоить значение, равное сумме всех...

Найти сумму всех положительных четных элементов массива, предшествующих первому по порядку такому элементу
#include <iostream> #include <ctime> using namespace std; int main() { setlocale...

Подсчитать число элементов массива, предшествующих первому по порядку нулевому элементу
помогите сделать программу В массиве чисел D3 : D13 подсчитать число элементов, предшествующих...

Найти среднеарифметическое значение элементов массива, предшествующих первому элементу, большему 50
Найти среднеарифметическое значение элементов вещественного массива A1, A2, ..., An, предшествующих...

8
Продам уран 238U
125 / 124 / 127
Регистрация: 22.01.2013
Сообщений: 298
26.03.2014, 13:40 2
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>
#define n 10
 
int main(){
int b = 6;
int c, sum = 0;
int a[n], i, tmp = -1;
printf("A: ");
for(i = 0; i < n; i++){
    a[i] = rand() % 10 + 1;
    printf("%d ", a[i]);
    if(a[i] == b)
        tmp = i;
    if(tmp == - 1)
        sum += a[i];
}
c = sum;
if(tmp == -1)
    printf("\nВывести какой-то текст");
else
    printf("\n c = %d", c);
return 0;
}
1
Модератор
Эксперт Python
28375 / 15274 / 3011
Регистрация: 12.02.2012
Сообщений: 25,005
Записей в блоге: 4
26.03.2014, 14:29 3
bradobrei, нерационально. Как только элемент обнаружен, из цикла нужно выходить:

C
1
2
3
4
5
6
7
8
9
10
11
12
int func(int *A, int n, int b)
  {
         int s,i;
         s=0;
         for (i=0; i<n; i++)
             if (A[i] == b)
                return s;
             else
                if (A[i]>0) s+=A[i];
         printf("Нет числа %d\n",b); 
         return -1; 
}
1
1 / 1 / 0
Регистрация: 18.02.2014
Сообщений: 44
26.03.2014, 16:56  [ТС] 4
Спасибо большое!!!
0
429 / 383 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
27.03.2014, 12:29 5
Catstail, у Вас решение хорошее, но много избыточного кода. Вот более идиоматичненько:

C
1
2
3
4
5
6
7
8
int sum_for_b(int* arr, size_t siz, int b)
{
    int sum = 0;
    while( siz-- && *arr != b ) {
        sum += *arr++;
    }
    return sum;
}
2
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10908 / 6833 / 1625
Регистрация: 25.07.2009
Сообщений: 12,540
27.03.2014, 16:35 6
Цитата Сообщение от Vtulhu Посмотреть сообщение
Вот более идиоматичненько:
Только тогда прийдётся считать сумму всех элементов массива, сравнивать с тем, что вернёт эта чудо-функция и, если значения совпадут, выдавать сообщение, что элемент со значением b не найден. Что, кстати, тоже не комильфо - сумма элементов до некоторого значения вполне может совпасть с суммой всех элементов. ТруЪ вэй - сначала искать элемент, найдётся - считать сумму, не найдётся - писать сообщение...
0
429 / 383 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
27.03.2014, 16:49 7
Да, я невнимательно прочитал задание. К сожалению, ничего не известно о диапазоне чисел. Например, если бы было известно, что они неотрицательные, то можно было бы возвращать отрицательное, как признак того, что число b не было найдено. Можно даже устанавливать само число b в ноль. Но в общем случае остается только такой вариант:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
int sum_for_b(int* arr, size_t siz, int b, bool* b_found)
{
    *b_found = false;
    int sum = 0;
    do {
        if( *arr == b ) {
            *b_found = true;
            break;
        }
        sum += *arr++;
    } while( --siz );
    return sum;
}
0
1 / 1 / 0
Регистрация: 26.04.2014
Сообщений: 121
27.04.2014, 11:24 8
а в паскале можно пожалуйста?
0
Модератор
Эксперт Python
28375 / 15274 / 3011
Регистрация: 12.02.2012
Сообщений: 25,005
Записей в блоге: 4
27.04.2014, 11:55 9
Цитата Сообщение от Vtulhu Посмотреть сообщение
Но в общем случае остается только такой вариант:
- равный по длине моему

Цитата Сообщение от ZaRinKa97 Посмотреть сообщение
а в паскале можно пожалуйста?
- в раздел "Паскаль"
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.04.2014, 11:55

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Переменной l присвоить значение, равной сумме всех компонент, предшествующих ей
Задан целочисленный вектор a={a1, .. , an}, n&lt;=20. Если среди компонент этого вектора есть...

Получить массив B, присвоив его k-му элементу значение равное сумме элементов k-го столбца.
Mawrat, добрый день,не могли бы вы подсказать решение этой задачи: 4. Задана матрица размером ....

Каждому элементу массива Q присвоить значение, равное сумме значений соответствующих элементов одномерных массивов P и H
Каждому элементу одномерного массива Q присвоить значение, равное сумме значений соответствующих...

Присвоить значение переменной, равное сумме элементов строки матрицы
Уважаемые программисты! у меня такая беда,не могу въехать в смысл этой задачи! будьте добры...


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

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

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