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

Вывести порядковый номер последнего из тех его элементов Ак, которые удовлетворяют двойному неравенству

29.09.2012, 16:07. Просмотров 1411. Ответов 17
Метки нет (Все метки)

1) Дано целое число N (>0). Сформировать и вывести целочисленный массив размера N, содержащий степени двойки от первой до N-й: 2,4,8,16,.....

2) Дан целочисленный массив А размера 10. Вывести порядковый номер последнего из тех его элементов Ак, которые удовлетворяют двойному неравенству А1<Ak<A10. Если таких элементов нет, то вывести 0.

3) Дан массив А размера N. Сформировать новый массив В того же размера, элементы которого определяются следующим образом: Вк=2*Ак, если Ак<5, Ак/2 в противном случае.
Язык программирования-СИ.
Помогите пожалуйста!!!!
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2012, 16:07
Ответы с готовыми решениями:

Вывести порядковый номер последнего из тех его элементов AK, которые удовлетворяют двойному неравенству
Решите задачу Дан целочисленный массив A размера 10. Вывести порядковый...

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

Вывести те слова, которые отличаются от последнего слова и удовлетворяют условию
Помогите,пожалуйста,написать программу. Дана строка длиной n символов,...

Вывести те слова, которые отличаются от последнего слова и удовлетворяют условию
Дана строка длиной n символов, содержащая слова, т.е. группы ...

Введите с клавиатуры число х и определите порядковый номер последнего числа, равного х
Введите с клавиатуры число х и определите порядковый номер последнего числа,...

17
Кот Ангенс
318 / 268 / 128
Регистрация: 24.05.2012
Сообщений: 629
29.09.2012, 16:58 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
#include <stdio.h>
#define USE_ARRAY
 
#ifdef USE_ARRAY
#   include <stdlib.h>
 
    int main() {
        unsigned char i, n;
        unsigned long long* a;
        scanf("%u", &n);
        a = (unsigned long long*)malloc(n * sizeof(unsigned long long));
        *a = 2;
        for (i = 1; i < n; i++)
            printf("%ull\n", a[i] = a[i - 1] << 1);
        free(a);
    }
 
#else
 
    int main() {
        unsigned char n;
        unsigned long long x = 1;
        scanf("%u", &n);
        while (n--)
            printf("%ull\n", x += x);
    }
 
#endif
Добавлено через 5 минут
2.
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>
 
enum { ARRAY_SIZE = 10; }
 
int main() {
    int a[ARRAY_SIZE];
    unsigned char i;
    for (i = 0; i < ARRAY_SIZE; i++)
        scanf("%d", a + i);
    if (a[0] < a[ARRAY_SIZE - 1]) {
        i = ARRAY_SIZE - 1;
        do
            if (a[0] < a[i] && a[i] < a[ARRAY_SIZE - 1]) {
                printf("%d", i + 1);
                return 0;
            }
        while (i--);
    }
    putchar('0');
    return 1;
}
Добавлено через 5 минут
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
28
29
30
31
32
33
34
#include <stdio.h>
#define USE_ARRAY
 
#ifdef USE_ARRAY
#   include <stdlib.h>
 
    int main() {
        unsigned i, n;
        int* a;
        int* b;
        scanf("%u", &n);
        a = (int*)malloc(n * sizeof(int));
        b = (int*)malloc(n * sizeof(int));
        for (i = 0; i < n; i++) {
            scanf("%d", a + i);
            printf("%d", b[i] = a[i] < 5? a[i] + a[i]: a[i] >> 1);
        }
        free(a);
        free(b);
    }
 
#else
 
    int main() {
        unsigned n;
        int temp;
        scanf("%u", &n);
        while (n--) {
            scanf("%d", &temp);
            printf("%d", temp < 5? temp + temp: temp >> 1);
        }
    }
 
#endif
1
D15
0 / 0 / 0
Регистрация: 29.09.2012
Сообщений: 10
29.09.2012, 16:59  [ТС] 3
Спасибо большое!!! А можно спросить, что значит: #define USE_ARRAY

C
1
2
3
4
5
6
7
8
9
10
#ifdef USE_ARRAY; a = (unsigned long long*)malloc(n * sizeof(unsigned long long)); free(a); unsigned char n;
        unsigned long long x = 1;
        scanf("%u", &n);
        while (n--)
            printf("%ull\n", x += x);
    }
 
#endif;
unsigned char i, n;
        unsigned long long* a;
- это на С++?
0
Кот Ангенс
318 / 268 / 128
Регистрация: 24.05.2012
Сообщений: 629
29.09.2012, 17:01 4
Нет, это на чистом C.

Это значит, что если убрать строку #define USE_ARRAY, будет компилироваться второй блок кода, а если оставить - первый. Сделано просто чтобы показать оба варианта.
1
D15
0 / 0 / 0
Регистрация: 29.09.2012
Сообщений: 10
29.09.2012, 17:04  [ТС] 5
Спасибо!!!!!!
0
Кот Ангенс
318 / 268 / 128
Регистрация: 24.05.2012
Сообщений: 629
29.09.2012, 17:08 6
Цитата Сообщение от D15 Посмотреть сообщение
C
1
a = (unsigned long long*)malloc(n * sizeof(unsigned long long));
Выделение памяти под n ячеек размера unsigned long long.
Цитата Сообщение от D15 Посмотреть сообщение
C
1
free(a);
Освобождение памяти, выделенной malloc.
Цитата Сообщение от D15 Посмотреть сообщение
C
1
unsigned char n;
Объявление переменной n типа unsigned char (диапазон значений - [0..255]).
Цитата Сообщение от D15 Посмотреть сообщение
C
1
unsigned long long x = 1;
Объявление переменной x типа unsigned long long (диапазон значений - [0..18446744073709551615]).
Цитата Сообщение от D15 Посмотреть сообщение
C
1
scanf("%u", &n);
Чтение целого без знака в переменную n.
Цитата Сообщение от D15 Посмотреть сообщение
C
1
while (n--)
Если переменная n равна нулю, выйти из цикла. Независимо от условия уменьшить ее на единицу.
Цитата Сообщение от D15 Посмотреть сообщение
C
1
printf("%ull\n", x += x);
Прибавить к иксу икс (увеличить в два раза). Вывести в консоль.
Цитата Сообщение от D15 Посмотреть сообщение
C
1
unsigned char i, n;
Объявление переменных i и n типа unsigned char (диапазон значений - [0..255]).
Цитата Сообщение от D15 Посмотреть сообщение
C
1
unsigned long long* a;
Объявление переменной a типа указатель на unsigned long long.
1
Vourhey
Почетный модератор
6495 / 2270 / 185
Регистрация: 29.07.2006
Сообщений: 12,534
29.09.2012, 17:12 7
Цитата Сообщение от Кот Ангенс Посмотреть сообщение
scanf("%u", &n);

Не по теме:

точно :)

0
D15
0 / 0 / 0
Регистрация: 29.09.2012
Сообщений: 10
29.09.2012, 17:18  [ТС] 8
Спасибо!!!!
0
Pentium5
0 / 0 / 0
Регистрация: 03.10.2011
Сообщений: 60
30.09.2012, 15:45 9
не буду создавать новую тему, ибо из-за мелочи будете ругаться: как проверить пустой(незаполнен) ли одномерный массив в СИ? в лекции было про заполненени памяти типо:
C
1
2
3
4
5
 mas = (int*)malloc(n * sizeof(int));
 if(!mas)
   printf("Ошибка- массив пустой");
 else
   printf("Все в порядке! - массив заполнен");
это подойдёт?
0
Кот Ангенс
318 / 268 / 128
Регистрация: 24.05.2012
Сообщений: 629
30.09.2012, 16:39 10
Pentium5, это проверка, удалось ли выделить память под массив. Если произошла ошибка, программу рекомендуется немедленно завершать.
Другое дело, что вероятность возникновения такой ошибки крайне мала, и обычно указатель не проверяют.
0
Pentium5
0 / 0 / 0
Регистрация: 03.10.2011
Сообщений: 60
30.09.2012, 16:47 11
Цитата Сообщение от Кот Ангенс Посмотреть сообщение
Pentium5, это проверка, удалось ли выделить память под массив. Если произошла ошибка, программу рекомендуется немедленно завершать.
Другое дело, что вероятность возникновения такой ошибки крайне мала, и обычно указатель не проверяют.
ну а как тогда проверить, пустой массив или нет?
0
Vourhey
Почетный модератор
6495 / 2270 / 185
Регистрация: 29.07.2006
Сообщений: 12,534
30.09.2012, 16:53 12
Цитата Сообщение от Pentium5 Посмотреть сообщение
ну а как тогда проверить, пустой массив или нет?
Как ты себе представляешь пустой массив? Отсутствующая память?
0
Pentium5
0 / 0 / 0
Регистрация: 03.10.2011
Сообщений: 60
30.09.2012, 16:55 13
Цитата Сообщение от Vourhey Посмотреть сообщение
Как ты себе представляешь пустой массив? Отсутствующая память?
массив не заполнен элементами
0
taras atavin
4206 / 1773 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
30.09.2012, 16:58 14
Цитата Сообщение от D15 Посмотреть сообщение
1) Дано целое число N (>0). Сформировать и вывести целочисленный массив размера N, содержащий степени двойки от первой до N-й: 2,4,8,16,.....
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int *f(size_t N)
{
 int *r, *p1, *p2, *e, ;
 r=new int [N];
 if (r)
 {
  for (p1=r, p2=r+1, *r=2, e=r+N-1; *p2<=e; p1=p2; ++p2)
  {
   *p2=(*p1)*2;
  }
 }
 return r;
}
Добавлено через 1 минуту
Цитата Сообщение от Pentium5 Посмотреть сообщение
массив не заполнен элементами
Элементами не заполняют, а просто создают массив. Если он создан, то все элементы уже есть.
0
Pentium5
0 / 0 / 0
Регистрация: 03.10.2011
Сообщений: 60
30.09.2012, 17:16 15
Цитата Сообщение от taras atavin Посмотреть сообщение
Элементами не заполняют, а просто создают массив. Если он создан, то все элементы уже есть.
в паскале ведь была проверка
0
Nameless One
Эксперт С++
5789 / 3438 / 356
Регистрация: 08.02.2010
Сообщений: 7,448
01.10.2012, 03:37 16
Цитата Сообщение от Pentium5 Посмотреть сообщение
в паскале ведь была проверка
ну и?
0
Pentium5
0 / 0 / 0
Регистрация: 03.10.2011
Сообщений: 60
01.10.2012, 19:29 17
Цитата Сообщение от Nameless One Посмотреть сообщение
ну и?
ну и по аналогии должен быть в СИ
0
Кот Ангенс
318 / 268 / 128
Регистрация: 24.05.2012
Сообщений: 629
01.10.2012, 19:42 18
Мне кажется, Вам нужно уточнить для себя, что такое массив и как он располагается в памяти.
Можно еще проверить, все ли элементы имеют значение 0:
C
1
2
3
4
5
6
7
//Возвращает 0, если хотя бы один элемент имеет значение, отличное от нуля
char IsNulled(const int a[ ], unsigned n) {
    while (n--)
        if (a[n])
            return 0;
    return 1;
}
0
01.10.2012, 19:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.10.2012, 19:42

Определить максимальный элемент массива В и его порядковый номер
Помогите найти и исправить в чем ошибка. Задание:Определить максимальный...

Определить максимальный элемент массива B (М) и его порядковый номер
Здравствуйте. Определить максимальный элемент массива B (М) и его порядковый...

Добавить к каждому элементу списка его порядковый номер
Добавить к каждому элементу списка его порядковый номер


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

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

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