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

Вычислить сумму положительных нечетных элементов и заменить все четные элементы массива на эту сумму

07.02.2017, 18:58. Просмотров 719. Ответов 17
Метки нет (Все метки)

2. Вычислить сумму положительных нечетных элементов и заменить все четные элементы массива на эту сумму. Желательно использовать одномерные массивы. Заранее спасибо!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2017, 18:58
Ответы с готовыми решениями:

Дано массив из 15 элементов. Вычислить сумму положительных нечетных элементов и заменить все четные элементы массива на
Дано массив из 15 элементов. Вычислить сумму положительных нечетных элементов и заменить все четные...

Вычислить сумму положительных элементов в нечетных строках матрицы
Доброй ночи. Помогите с программой, заранее спасибо. Вычислить F , где Sn – сумма положительных...

Найти сумму трех наибольших Положительных Нечетных элементов массива
Подскажите как написать код этой задачи на языке программирования С, буду благодарен за помощь)...

Найти сумму всех элементов массива и поделить каждый элемент на эту сумму
уже голову сломала че тут не так:wall: задание:дан массив А(5), найти сумму всех элементов, потом...

Вычислить сумму положительных элементов массива x[1],x[2],., x[55]
Вычислить сумму положительных элементов массива x,x,..., x.

17
PavelBabiak
0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 46
07.02.2017, 19:20  [ТС] 2
Помогите понять в чем ошибка? Может я что-то не так делаю, если не трудно, напишите как правильно нужно написать код.
P.S Я его перевел с С++, возможно, ошибка именно в этом.
Заранее спасибо!



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
#include <stdio.h>
#include <stdlib.h>
int main()
{
void Sum(int a[], int n, int sum)
{
    for (int i = 0; i < n; i++)
    {
        if (a[i] % 2 != 0)
            sum += a[i];
        if (a[i] % 2 == 0)
        {
            int temp = a[i];
            a[i] = sum;
            temp = sum;
        }
    }
}
int main()
{
    int a[7], sum = 0;
    printf("Vvedit massiv\n");
    for (int i = 0; i < 7; i++) scanf("%d",&a[i]);
    Sum(a, 7, sum);
    printf("Suma=%d",sum);
    for (int i = 0; i < 7; i++)
        printf("Massiv=%d",a[i]);
    return 0;
}
}
0
PavelBabiak
0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 46
07.02.2017, 19:23  [ТС] 3
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
#include <iostream>
using namespace std;
void Sum(int a[], int n, int& sum)
{
    for (int i = 0; i < n; i++)
    {
        if (a[i] % 2 != 0)
            sum += a[i];
        if (a[i] % 2 == 0)
        {
            int temp = a[i];
            a[i] = sum;
            temp = sum;
        }
    }
}
int main()
{
    int a[7], sum = 0;
    cout << "Vvedite massiv" << endl;
    for (int i = 0; i < 7; i++) cin >> a[i];
    Sum(a, 7, sum);
    cout << "Summa=" << sum << endl;
    for (int i = 0; i < 7; i++)
        cout << "Massiv=" << a[i] << endl;
    return 0;
}
Нужно перевести программу из С++ в Си.
Заранее спасибо!
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
27420 / 18358 / 7264
Регистрация: 22.10.2011
Сообщений: 32,300
Записей в блоге: 6
07.02.2017, 19:30 4
C
1
void Sum(int a[], int n, int sum) // Переменная sum
в программе на С++ передавалась по ссылке, поэтому при возврате из функции в ней было значение. В Си ссылок нет, она передается по значению, разумеется, что ничего возвращаться в этой переменной не будет. Используй указатель.
0
07.02.2017, 19:30
PavelBabiak
0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 46
07.02.2017, 19:38  [ТС] 5
Можете написать что именно мне нужно написать?
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
27420 / 18358 / 7264
Регистрация: 22.10.2011
Сообщений: 32,300
Записей в блоге: 6
07.02.2017, 19:44 6
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
#include <stdio.h>
#include <stdlib.h>
 
void Sum(int a[], int n, int *sum)
{
    for (int i = 0; i < n; i++)
    {
        if (a[i] % 2 != 0)
            *sum += a[i];
        if (a[i] % 2 == 0)
        {
            int temp = a[i];
            a[i] = *sum;
            temp = *sum; // Зачем вообще эта строка?
        }
    }
}
 
int main()
{
    int a[7], sum = 0;
    printf("Vvedit massiv\n");
    for (int i = 0; i < 7; i++) scanf("%d",&a[i]);
    Sum(a, 7, &sum);
    printf("Suma=%d",sum);
    for (int i = 0; i < 7; i++)
        printf("Massiv=%d",a[i]);
    return 0;
}
1
PavelBabiak
0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 46
07.02.2017, 19:51  [ТС] 7
Простите что доставил Вам много хлопот. Скопировал ваш код - вставил и попробовал запустить, но выдает всё ровно ошибка, никак не могу понять какую(
0
LFC
730 / 535 / 416
Регистрация: 17.09.2015
Сообщений: 1,598
07.02.2017, 19:58 8
PavelBabiak, что программа должна делать?
0
PavelBabiak
0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 46
07.02.2017, 20:00  [ТС] 9
здесь надо вычислить сумму положительных нечетных элементов и заменить все четные элементы массива на эту сумму
0
likehood
987 / 829 / 397
Регистрация: 25.12.2016
Сообщений: 2,727
Завершенные тесты: 3
07.02.2017, 20:11 10
Подозреваю, что в 13 строке ошибка, на самом деле должно быть sum = temp.
Также непонятно, зачем использовать выходной параметр sum, если можно просто вернуть это значение из функции.
С учётом сказанного код будет выглядеть так:
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
35
36
37
38
#include <stdio.h>
 
int Sum(int a[], int n)
{
    int s = 0;
    for (int i = 0; i < n; i++)
    {
        if (a[i] % 2 != 0) {
            s += a[i];
        }
        else
        {
            int temp = a[i];
            a[i] = s;
            s = temp;
        }
    }
 
    return s;
}
 
int main()
{
    int a[7];
    puts("Vvedite massiv");
    for (int i = 0; i < 7; i++)
        scanf("%d", &a[i]);
 
    int s = Sum(a, 7);
    printf("summa = %d\n", s);
 
    printf("Massiv: ");
    for (int i = 0; i < 7; i++)
        printf("%d ", a[i]);
 
    printf("\n");
    return 0;
}
0
LFC
730 / 535 / 416
Регистрация: 17.09.2015
Сообщений: 1,598
07.02.2017, 20:15 11
так работать должно?(орфографию сохранил авторскую...)
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
#include <stdio.h>
#include <stdlib.h>
 
void Sum(int a[], int n, int *sum)
{
    int i;
    for (i = 0; i < n; i++){
        if (a[i] % 2 != 0 && a[i] >= 0)
            *sum += a[i];
    }
    for(i = 0; i < n; i++)
        if(i % 2 == 0)
            a[i] = *sum;
}
 
int main()
{
    int a[7], sum = 0;
    printf("Vvedit massiv\n");
    for (int i = 0; i < 7; i++)
        scanf("%d",&a[i]);
    Sum(a, 7, &sum);
    printf("Suma = %d\n",sum);
    for (int i = 0; i < 7; i++)
        printf("%d ",a[i]);
    return 0;
}
0
PavelBabiak
0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 46
07.02.2017, 20:20  [ТС] 12
Спасибо!
0
PavelBabiak
0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 46
07.02.2017, 20:40  [ТС] 13
Ваша программа выдает ошибку, когда же я исправил, она не правильно считает массив(
0
likehood
987 / 829 / 397
Регистрация: 25.12.2016
Сообщений: 2,727
Завершенные тесты: 3
07.02.2017, 21:01 14
Цитата Сообщение от PavelBabiak Посмотреть сообщение
Ваша программа выдает ошибку
Какую?

Цитата Сообщение от PavelBabiak Посмотреть сообщение
когда же я исправил, она не правильно считает массив(
А исходная программа правильно считает?
0
PavelBabiak
0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 46
07.02.2017, 21:24  [ТС] 15
Нет, в вашей не читает сумму не парных эелементов
0
bsa916115
51 / 24 / 12
Регистрация: 10.10.2015
Сообщений: 107
07.02.2017, 23:17 16
Если ближе к исходному тексту программы на C++
В строке 3 - параметры функции - параметр ссылка (&) в C не поддерживается.
Вместо этого надо использовать указатель. Эффект один и тот же. В качестве параметра передается адрес переменной. Разница в синтаксисе. Ну и указатель можно менять. Соответственно 3-> void Sum(int a[], int n, int *sum)
В теле функции Sum заменить везде (sum =) на (*sum =) и ( = sum) на (= *sum)
Переменные в C можно описывать только в начале блока, т.е. сразу после скобочки {. Соответственно везде, где есть
for(int i = ,надо ставить for(i = . Переменную i описать сразу после заголовка функции и {.
void Sum(int a[], int n, int *sum
{
int i;
То же самое в main()
Соответственно cout и cin заменить на printf и scanf
В 22 строке придется передавать адрес переменной sum.
Sum(a, 7, &sum);
0
MrGluck
Форумчанин
Эксперт CЭксперт С++
8127 / 4979 / 1436
Регистрация: 29.11.2010
Сообщений: 13,456
08.02.2017, 13:03 17
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10
 
int main(void)
{
    int A[N], sum = 0, i;
    srand(time(NULL));
 
    for (i = 0; i < N; i++)
    {
        A[i] = rand() % 10 - 5;
        printf("%2d ", A[i]);
        if (A[i] > 0 && A[i] & 1)
            sum += A[i];
    }
    printf("\n");
 
    for (i = 0; i < N; i++)
    {
        if (!(A[i] & 1))
            A[i] = sum;
        printf("%2d ", A[i]);
    }
 
    return 0;
}
0
sourcerer
Модератор
Эксперт CЭксперт С++
4927 / 2113 / 326
Регистрация: 20.02.2013
Сообщений: 5,577
Записей в блоге: 24
Завершенные тесты: 1
09.02.2017, 22:42 18
Цитата Сообщение от bsa916115 Посмотреть сообщение
Разница в синтаксисе.
bsa916115, и не только.
  1. Указатель - это полноценный тип. Ссылка - всего лишь псевдоним (другое имя) объекта, на которую она ссылается.
  2. Можно легко взять адрес указателя. У ссылки адреса нет: адрес ссылки - это адрес объекта, на который ссылается ссылка.
  3. Можно легко создать указатель на указатель. Ссылку на ссылку создать нельзя.
  4. Значение указателя (адрес объекта, на который он указывает) можно менять (если только указатель не объявлен как константный). Ссылка всегда константна - нельзя заставить её ссылаться на другой объект.
  5. Указатель можно объявить без инициализации. Ссылку всегда обязательно инициализировать во время объявления.
0
09.02.2017, 22:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2017, 22:42

Вычислить сумму положительных элементов массива
В одномерном массиве, состоящем из n вещественных элементов, вычислить: - сумму положительных...

Вычислить сумму положительных и отрицательных элементов массива
Вычислить Z=(S1+S2)/2, где S1 – сумма положительных элементов массива X(50), а S2 – сумма...

Вычислить сумму четных (по значению) элементов массива, стоящих на нечетных позициях
Одномерный массив. В одномерном массиве, состоящем из n целых элементов, - вычислить сумму...


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

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

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