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

Динамическое распределение памяти

29.05.2013, 19:14. Просмотров 619. Ответов 6
Метки нет (Все метки)

Дан массив действительных случайных чисел а размером n=100. Выве-сти на экран те элементы массива, индексы которых являются степеня-ми двойки 2, 4, 8, 16

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <stdlib.h>
int main()
{   int const n=20;
    int A[n]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
 
    int i=2;
    while(i<n)
    {i++;
        printf("%d ",A[i]);
        i*=2;
    }
 
            return 0;
}

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

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n;
    int i=2;
    int *ttt;
    printf("Vvedite kolichestvo elementov massiva\n");
    scanf("%d",&n);
    ttt=(int*)malloc(n*sizeof(int));
 
    while(i<n)
    {ttt[n]=rand()%100;
    i++;
        printf("%d ",ttt[n]);
        i*=2;
    }
 
            return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2013, 19:14
Ответы с готовыми решениями:

Динамическое распределение памяти
Здравствуйте, помогите в решении задачи. Дана действительная квадратная матрица порядка n....

Динамическое распределение памяти
#include &lt;stdio.h&gt; #define NUM 5 #define PREDM 1 typedef struct { char fam,name ; int...

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

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

Динамическое распределение памяти для символьной строки
Объясните, пожалуйста, почему при динамическом распределнии памяти под символьный массив у меня все...

6
ksandro
31 / 31 / 4
Регистрация: 15.04.2011
Сообщений: 81
29.05.2013, 19:58 2
должно быть ttt[i] вместо ttt[n]

C++
1
2
3
4
5
6
    while(i<n)
    {ttt[i]=rand()%100;
    i++;
        printf("%d ",ttt[i]);
        i*=2;
    }
0
kazak
3063 / 2384 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
Завершенные тесты: 1
29.05.2013, 19:59 3
Цитата Сообщение от Arseniy11 Посмотреть сообщение
ttt[n]=rand()%100;
Цитата Сообщение от Arseniy11 Посмотреть сообщение
printf("%d ",ttt[n]);
...
0
Arseniy11
0 / 0 / 0
Регистрация: 10.04.2013
Сообщений: 16
29.05.2013, 20:22  [ТС] 4
Цитата Сообщение от ksandro Посмотреть сообщение
должно быть ttt[i] вместо ttt[n]

C++
1
2
3
4
5
6
    while(i<n)
    {ttt[i]=rand()%100;
    i++;
        printf("%d ",ttt[i]);
        i*=2;
    }


Добавлено через 1 минуту
Цитата Сообщение от kazak Посмотреть сообщение
...
изменил, но все равно не то. при 10 элементах массива должно выводиться три числа 2^1, 2^2, 2^3, но выводится два и второе всегда 0
0
kazak
3063 / 2384 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
Завершенные тесты: 1
29.05.2013, 20:23 5
Цитата Сообщение от ksandro Посмотреть сообщение
{ttt[i]=rand()%100;
* * i++;
* * * * printf("%d ",ttt[i]);
* * * * i*=2;
* * }
Инкремент тут лишний.
1
Arseniy11
0 / 0 / 0
Регистрация: 10.04.2013
Сообщений: 16
29.05.2013, 21:00  [ТС] 6
в начальной проге была ошибка. не выводилось 2^1. исправил:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <stdlib.h>
int main()
{   int const n=10;
    //int A[n]={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,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66};
    //A[n]=rand()%1;
    int A[n]={1,2,3,4,5,6,7,8,9,10};
    int i=1;
    while(i<n)
    {
        printf("%d ",A[i]);
        i*=2;i++;
    }
 
            return 0;
}
Добавлено через 12 минут
Цитата Сообщение от kazak Посмотреть сообщение
Инкремент тут лишний.
Все равно не работает, выводит нули.
в справочнике используют random(100), но qt жалуется на эту строку. я подумал, что можно заменить с помощью rand()%100. Может в этом проблема?!
0
kazak
3063 / 2384 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
Завершенные тесты: 1
29.05.2013, 23:27 7
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n;
    int i;
    int *mas;
    printf("Vvedite kolichestvo elementov massiva\n");
    scanf("%d",&n);
    mas=(int*)malloc(n*sizeof(int));
 
    for (i = 1; i < n; i*=2)
    {
        mas[i]=rand()%50+50;
        printf("%d ",mas[i]);
    }
 
            return 0;
}
1
29.05.2013, 23:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2013, 23:27

Обработка массивов данных. Указатели. Динамическое распределение памяти
Помогите написать коды на си 1.Найти максимальный по модулю элемент массива. 2. Найти сумму...

Динамическое распределение памяти: программа, вылетает на вводе непосредственно первого элемента массива
Исправте пожалуйста, вылетает на вводе непосредственно первого элемента массива из символов!...

Распределение памяти для выделения и освобождения блоков памяти внутри запрошенного пула
В программе малые&quot;дыры&quot; избегают,что нужно сделать что бы малые &quot;дыры&quot; не избегались.... #...


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

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

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