0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 46

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

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

Author24 — интернет-сервис помощи студентам
2. Вычислить сумму положительных нечетных элементов и заменить все четные элементы массива на эту сумму. Желательно использовать одномерные массивы. Заранее спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.02.2017, 18:58
Ответы с готовыми решениями:

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

Вычислить сумму S положительных нечетных элементов и заменить все четные элементы массива на S
Нужно вычислить сумму S положительных ечетных элементов и заменить все четные элементы массива на S. Во первых, оно меняет только один...

Найти сумму всех нечетных элементов массива и заменить все четные на эту сумму
#include <iostream> using namespace std; void Sum(int a, int n, int& sum) { for (int i = 0; i < n; i++) { if (a % 2 != 0) ...

17
0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 46
07.02.2017, 19:20  [ТС]
Помогите понять в чем ошибка? Может я что-то не так делаю, если не трудно, напишите как правильно нужно написать код.
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
0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 46
07.02.2017, 19:23  [ТС]
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
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33138 / 21432 / 8221
Регистрация: 22.10.2011
Сообщений: 36,753
Записей в блоге: 9
07.02.2017, 19:30
C
1
void Sum(int a[], int n, int sum) // Переменная sum
в программе на С++ передавалась по ссылке, поэтому при возврате из функции в ней было значение. В Си ссылок нет, она передается по значению, разумеется, что ничего возвращаться в этой переменной не будет. Используй указатель.
0
0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 46
07.02.2017, 19:38  [ТС]
Можете написать что именно мне нужно написать?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33138 / 21432 / 8221
Регистрация: 22.10.2011
Сообщений: 36,753
Записей в блоге: 9
07.02.2017, 19:44
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
0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 46
07.02.2017, 19:51  [ТС]
Простите что доставил Вам много хлопот. Скопировал ваш код - вставил и попробовал запустить, но выдает всё ровно ошибка, никак не могу понять какую(
0
738 / 543 / 416
Регистрация: 17.09.2015
Сообщений: 1,601
07.02.2017, 19:58
PavelBabiak, что программа должна делать?
0
0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 46
07.02.2017, 20:00  [ТС]
здесь надо вычислить сумму положительных нечетных элементов и заменить все четные элементы массива на эту сумму
0
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
07.02.2017, 20:11
Подозреваю, что в 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
738 / 543 / 416
Регистрация: 17.09.2015
Сообщений: 1,601
07.02.2017, 20:15
так работать должно?(орфографию сохранил авторскую...)
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
0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 46
07.02.2017, 20:20  [ТС]
Спасибо!
0
0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 46
07.02.2017, 20:40  [ТС]
Ваша программа выдает ошибку, когда же я исправил, она не правильно считает массив(
0
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
07.02.2017, 21:01
Цитата Сообщение от PavelBabiak Посмотреть сообщение
Ваша программа выдает ошибку
Какую?

Цитата Сообщение от PavelBabiak Посмотреть сообщение
когда же я исправил, она не правильно считает массив(
А исходная программа правильно считает?
0
0 / 0 / 0
Регистрация: 08.11.2016
Сообщений: 46
07.02.2017, 21:24  [ТС]
Нет, в вашей не читает сумму не парных эелементов
0
 Аватар для bsa916115
51 / 24 / 12
Регистрация: 10.10.2015
Сообщений: 107
07.02.2017, 23:17
Если ближе к исходному тексту программы на 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
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
08.02.2017, 13:03
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
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5287 / 2375 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
09.02.2017, 22:42
Цитата Сообщение от bsa916115 Посмотреть сообщение
Разница в синтаксисе.
bsa916115, и не только.
  1. Указатель - это полноценный тип. Ссылка - всего лишь псевдоним (другое имя) объекта, на которую она ссылается.
  2. Можно легко взять адрес указателя. У ссылки адреса нет: адрес ссылки - это адрес объекта, на который ссылается ссылка.
  3. Можно легко создать указатель на указатель. Ссылку на ссылку создать нельзя.
  4. Значение указателя (адрес объекта, на который он указывает) можно менять (если только указатель не объявлен как константный). Ссылка всегда константна - нельзя заставить её ссылаться на другой объект.
  5. Указатель можно объявить без инициализации. Ссылку всегда обязательно инициализировать во время объявления.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.02.2017, 22:42
Помогаю со студенческими работами здесь

Вычислить сумму элементов массива и разделить все элементы матрицы, кратные 5, на эту сумму
Помогите пожалуйста!!! Зарываюсь! Дана квадратная действительная матрица. Вычислить сумму элементов массиваю Разделить все элементы...

Вычислить сумму нечётных элементов и удвоить чётные элементы массива
Дан произвольный одномерный массив (элементы вводятся с клавиатуры). Формирование элементов массива, обработку и если нужно вывод массива...

Найти сумму положительных элементов массива Все отрицательные элементы заменить на 0
Нужна помощь с написанием программ C# Net Framework 4.7.2, VS 2017 желательно, но можно и другого года. 5. Заполнить массив В(3,4)...

Вычислить сумму элементов массива, стоящих на нечетных позициях, и заменить min элемент на найденную сумму
Здравствуйте! Очень нужна Ваша помощь! Требуется создать программу в Visual Basic по заданию Вычислить сумму элементов массива B = {1,...

Найти сумму и произведение всех положительных элементов массива и заменить нулями все элементы, расположенные на главной диагонали и выше ее.
Найти сумму и произведение всех положительных элементов массива и заменить нулями все элементы, расположенные на главной диагонали и выше...


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

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

Новые блоги и статьи
Анализ и линтинг кода JavaScript: ESLint, Prettier и JSHint
run.dev 26.04.2025
JavaScript прошёл долгий путь от простого языка для анимации веб-страниц до основы современной веб-разработки. С ростом сложности приложений, увеличением кодовых баз и масштабированием команд. . .
Паттерны в Python: Singleton, Factory и Observer
py-thonny 26.04.2025
Паттерны проектирования — это проверенные временем решения типовых проблем разработки программного обеспечения. Их история берёт начало с книги "Приёмы объектно-ориентированного проектирования. . . .
Исключения в C#: Stack Overflow, Access Violation и Out of memory
stackOverflow 26.04.2025
Исключения в C# — это не только механизм оповещения о проблемах, а целое искусство управления потоком выполнения программы в экстремальных ситуациях. Обычное исключение, например,. . .
Логирование в C# ASP.NET Core с помощью Serilog, ElasticSearch, Kibana
stackOverflow 25.04.2025
Помните те времена, когда для анализа проблемы приходилось подключаться к серверу, искать нужный лог-файл среди десятков других и вручную фильтровать тысячи строк в поисках ошибки? К счастью, эти дни. . .
Структура "железный OnKeyUp" вместо антидребезга. Полностью асинхронный счётчик.
Hrethgir 25.04.2025
Программа для симуляции схемы - Logisim Evolution В общем какое-то время отвлёкся, так было надо, теперь когда запилю это на verilog и FPGA , досоставлю заявку в ФИПС на полезную модель - не готов. . .
Автоматизация Amazon Web Services (AWS) с Boto3 в Python
py-thonny 25.04.2025
Облачные вычисления стали неотъемлемой частью современной ИТ-инфраструктуры, а Amazon Web Services (AWS) занимает лидирующие позиции среди провайдеров облачных услуг. Управление многочисленными. . .
Apache Kafka vs RabbitMQ в микросервисной архитектуре
ArchitectMsa 25.04.2025
Современная разработка ПО всё чаще склоняется к микросервисной архитектуре — подходу, при котором приложение разбивается на множество небольших, автономных сервисов. В этой распределённой среде. . .
Параллельное программирование с OpenMP в C++
NullReferenced 24.04.2025
Параллельное программирование — подход к созданию программ, когда одна задача разбивается на несколько подзадач, которые могут выполняться одновременно. Оно стало необходимым навыком для. . .
Цепочки методов в C# с Fluent API
UnmanagedCoder 24.04.2025
Современное программирование — это не только решение функциональных задач, но и создание кода, который удобно поддерживать, расширять и читать. Цепочки методов и Fluent-синтаксис в C# стали мощным. . .
Мульти-тенантные БД с PostgreSQL Row Security
Codd 23.04.2025
Современные облачные сервисы и бизнес-приложения всё чаще обслуживают множество клиентов в рамках единой программной инфраструктуры. Эта архитектурная модель, известная как мульти-тенантность, стала. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru