0 / 0 / 1
Регистрация: 29.01.2015
Сообщений: 33
1

Даны целые числа a1,.,an. Все члены последовательности с четными номерами

29.11.2017, 17:30. Показов 2629. Ответов 3
Метки нет (Все метки)

Помогите перенести на СИ.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var
a:array [1..100] of integer;
i,n,max:integer;
begin
writeln ('vvedite n:');
readln(n);
writeln ('Vvedite posledovatelnost');
for i:=1 to n do
readln(a[i]);
writeln ('Posledovatelnost');
max:=1;
for i:=1 to n do
begin
write(a[i],' ');
if a[max]<a[i] then max:=i;
end;
writeln;
writeln ('Posledovatelnost posle obrabotki');
for i:=1 to n do
begin
if ((i mod 2)=0)and(i<=(max-1)) then a[i]:=a[i]*a[max];
write(a[i],' ');
end;
end.
Кликните здесь для просмотра всего текста
Даны целые числа a1,...,an. Все члены последовательности с четными номерами, предшествующие первому по порядку члену со значением max(a1,...,an), домножить на max(a1,...,an).
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.11.2017, 17:30
Ответы с готовыми решениями:

Все члены последовательности с четными номерами домножить на заданное число
Просьба помочь с заданием. &quot;Даны целые числа a1,...,a30. Все члены последовательности с четными...

Вывести члены последовательности с четными номерами
Дали мне задачу, но ни как не получается её выполнить,и поэтому молю о помощи, друзья! &quot;Дана...

Даны два целых числа: А и В. Вывести все целые числа, расположенные между числами А и В в порядке убывания
Даны два целых числа: А и В. Вывести все целые числа, расположенные между числами А и В в порядке...

Удалить из предложения все слова с нечетными номерами и перевернуть слова с четными номерами
/*Всем Доброго дня помогите переписать код из си++ в си (Отредактировать заданное предложение, ...

3
1537 / 918 / 599
Регистрация: 25.04.2016
Сообщений: 2,570
29.11.2017, 19:51 2
Лучший ответ Сообщение было отмечено Dron_4r как решение

Решение

Трансляция 1 в 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
35
36
37
#include <stdio.h>
 
int main (void)
{
    int a[100];
    int i, n, max;
 
    // получаем размер массива:
    printf("vvedite n:\n");
    scanf("%d", &n);
 
    // получаем элементы массива:
    printf("Vvedite posledovatelnost\n");
    for (i=0; i<n; i++)
        scanf("%d", &a[i]);
 
    // выводим массив на экран и находим максимум
    printf("Posledovatelnost\n");
    max = 1;
    for (i=1; i <= n; i++)
    {
        printf("%d ", a[i-1]);
        if (a[max-1] < a[i]) max = i;
    }
    printf("\n");
 
 
    // меняем все четные, расположенные ДО максимального и выводим на экран
    printf("Posledovatelnost posle obrabotki\n");
    for (i=1; i <= n; i++)
    {
        if (!(i%2) && i < max) a[i-1] *= a[max-1];
        printf("%d ", a[i-1]);
    }
    printf("\n");
    return 0;
}
Однако с точки зрения си, задачи выполнена неправильно. Почему? Просто потому, что в pascal'е нумерация элементов массивов начинается с 1, а в cи - c 0. Поэтому в одном и том же массиве в си первый элемент будет считаться четным, а в pascal'е - нечетным.

Если писать эту программу на си, как положено, то получается следующее:
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
#include <stdio.h>
 
int main (void)
{
    int a[100];
    int i, n, max = 0;
 
    // получаем размер массива:
    printf("vvedite n:\n"); scanf("%d", &n); fflush(stdin);
 
    // получаем элементы массива:
    printf("Vvedite posledovatelnost\n");
    for (i=0; i<n; i++)
    {
        scanf("%d", &a[i]);         // получаем значение элемента массива
        fflush(stdin);
        if (a[i] > a[max]) max = i; // находим максимум
        printf("%d ", a[i]);            // выводим на экран
    }
    printf("\n");
 
    // меняем все четные, расположенные ДО максимального и выводим на экран
    printf("Posledovatelnost posle obrabotki\n");
    for (i=0; i<n; i++)
    {
        if (!(i%2) && i<max) a[i] *= a[max];
        printf("%d ", a[i]);
    }
    printf("\n");
    return 0;
}
Однако в этом случае результаты выполнения программы будут отличаться.
Миниатюры
Даны целые числа a1,.,an. Все члены последовательности с четными номерами  
2
0 / 0 / 1
Регистрация: 29.01.2015
Сообщений: 33
30.11.2017, 15:02  [ТС] 3
stake-k26, Спасибо большое. И отдельное спасибо за то что разъяснил!

Добавлено через 18 часов 33 минуты
stake-k26,

Нужно убрать в условии "!", так как нам нужно умножить на числа с четными номерами
C
1
if (!(i%2) && i<max)
Так же fflush на Linux не работает, только на Windows
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
#include <stdio.h>
 
int main (void)
{
    int a[100];
    int i, n, max = 0;
 
    // получаем размер массива:
    printf("vvedite n:\n"); 
    scanf("%d", &n);
 
    // получаем элементы массива:
    printf("Vvedite posledovatelnost\n");
    for (i=0; i<n; i++)
    {
        scanf("%d", &a[i]);         // получаем значение элемента массива
        if (a[i] > a[max]) max = i; // находим максимум
        printf("%d ", a[i]);            // выводим на экран
    }
    printf("\n");
 
    // меняем все четные, расположенные ДО максимального и выводим на экран
    printf("Posledovatelnost posle obrabotki\n");
    for (i=0; i<n; i++)
    {
        if (!(i%2) && i<max) a[i] *= a[max];
        printf("%d ", a[i]);
    }
    printf("\n");
    return 0;
}
0
1537 / 918 / 599
Регистрация: 25.04.2016
Сообщений: 2,570
30.11.2017, 15:18 4
Dron_4r, условие:
if ((i mod 2)=0)and(i<=(max-1)) then a[i]:=a[i]*a[max];

буквально означает:
C
1
2
3
4
if (i%2 == 0 && i <= max-1)
{
    a[i] = a[i] * a[max];
}
А уж что вам там по заданию нужно и как вы будете модифицировать этот код, это уже исключительно ваше дело.

Добавлено через 3 минуты
Цитата Сообщение от Dron_4r Посмотреть сообщение
Так же fflush на Linux не работает
Интересно как вы это выяснили? Тест в студию! Хочу посмотреть на это чудо.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.11.2017, 15:18

Упорядочить по возрастанию элементы заданной последовательности с четными номерами
Написать программу, которая упорядочивает по возрастанию элементы заданной последовательности с...

Даны целые числа а 1,а 2,. ,а N .Удалить из последовательности все члены со значением max(a1,.,aN)?
Запишите в одномерном массиве.

Все члены данной последовательности с четными номерами, предшествующие первому по порядку члену, домножить на max
Приветствую. Прошу помочь с решением данного задания. Заранее благодарен. Даны целые числа...

Даны целые числа. Верно ли, что в последовательности есть 0 члены
Данные целые числа a1.....an. Верно что в последовательности есть 0 члены


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

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

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