Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
_RoleX_
0 / 0 / 0
Регистрация: 30.03.2014
Сообщений: 12
#1

Задача с массивом - C++

31.03.2014, 16:05. Просмотров 222. Ответов 5
Метки нет (Все метки)

Дана такая задача :

[cut]
Все правильно показывает до 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
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
 
int main(int argc, char* argv[])
{
        setlocale(LC_ALL, "Russian");
        int pt;
        int x[pt];
        cout << "Ââåäèòå Г±ГІГҐГЇГҐГ*Гј 2-ГЄГЁ: \n"; cin >> pt;
        for(int i = 0; i <=pt; i++)
        {
        x[i] = pow(2,i);
        }
        for(int i = 0; i <=pt; i++)
        {
        cout << "2 Гў " << "Г±ГІГҐГЇГҐГ*ГЁ " <<  i << " = " << x[i] << '\n' ;
        }
        
        system("PAUSE >> NULL");
        return 0;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2014, 16:05     Задача с массивом
Посмотрите здесь:

C++ задача с массивом - C++
Сколько не старался не чего у меня с этими массивами не выходит. Вообще не как не могу поянть как решать массивы =( Помогите люди добрые. ...

Задача с массивом - C++
Ребят, помогите с задачей: Вроде все ясно и понятно, сделать массивы со случайными числами от -157.0 до 201.0 тоже, кажется,...

Задача с массивом - C++
Здравствуйте!Подскажите пожалуйста в решении такой задачи. Например есть кусок кода: int main(){ int mas; for(int i=0;i&lt;10;i++){ ...

Задача с массивом - C++
В массиве X(n) подсчитать количество положительных k1 и количество отрицательных k2 элементов. Если k=|k1-k2|&gt;1 , то изменить знаки...

Задача с массивом. - C++
Требуется найти максимальный элемент массива, минимальный, среднее арифмитическое элементов и вывести на экран, считываются массивы из...

задача с 2х мерным массивом - C++
Суть задачи такова: есть 2 массива, нужно из массива B записать номера элементов с 1 в массив A. Что-то не пошло, не могу понять как...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Wlk
49 / 49 / 13
Регистрация: 07.12.2011
Сообщений: 133
31.03.2014, 16:10     Задача с массивом #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main(int argc, char* argv[])
{
    setlocale(LC_ALL, "Russian");
    int pt;
 
    cout << "Введите степень 2-ки: \n"; 
    cin >> pt;
        int *x = new int[pt];
    for(int i = 0; i <=pt; i++)
    {
        x[i] = pow(2.0,i);
    }
    for(int i = 0; i <=pt; i++)
    {
        cout << "2 в " << "степени " <<  i << " = " << x[i] << '\n' ;
    }
 
    system("PAUSE >> NULL");
    return 0;
}
enyx
7 / 7 / 2
Регистрация: 03.07.2013
Сообщений: 42
31.03.2014, 16:16     Задача с массивом #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <time.h>
#include <math.h>
#include <stdlib.h>
using namespace std;
 
int main()
{
    int p;
    int a[p];
    cin>>p;
    for(int i=0; i<=p;i++)
    {
        a[i] = pow(2,i);
    }
    for(int i=0;i<=p;i++)
    {
        cout<<a[i]<<endl;
    }
    return 0;
}
у меня нормально работает
вот output
william@neptun:~/work/c_plus/cyber_forum$ ./a.out
8
1
2
4
8
16
32
64
128
256
_RoleX_
0 / 0 / 0
Регистрация: 30.03.2014
Сообщений: 12
31.03.2014, 16:18  [ТС]     Задача с массивом #4
Я новичок в программирование, можешь объяснить что ты сделал этой строчкой?
Цитата Сообщение от Wlk Посмотреть сообщение
int *x = new int[pt];
Не могу разобрать эти указатели, зачем они служат вообще?
Wlk
49 / 49 / 13
Регистрация: 07.12.2011
Сообщений: 133
31.03.2014, 16:24     Задача с массивом #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Размер статического массива должен быть известен уже на этапе компиляции. У вас же получается

C++
1
2
 int pt;
        int x[pt];
Вы создаете массив еще не зная его размера.
По этому тут выход - создание динамического массива. А синтаксис его определения таков:

ТИП имя_указателя_на_первый_элемент_массива = new ТИП[размерность].

К сожалению, а может к счастью динамические массивы создаются оператором new только через указатель на элемент массива.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2014, 16:39     Задача с массивом
Еще ссылки по теме:

Задача с указателем-массивом - C++
Создайте такую программу: -вы вводите слово; -программа должна вывести количество каждой буквы; -И в конце (именно в конце) должна...

Задача с одномерным массивом - C++
1)Сформировать одномерный массив целых чисел используя датчик случайных чисел. 2)Распечатать полученный массив 3)Удалить 5 первых...

Задача с целочисленным массивом - C++
Всем привет. Задачка с курсов степика. Единственная, на которой застрял. Вроде не тривиальная, но не могу понять, что им надо. В VS вроде...

Задача на функцию с массивом, пишет ошибку - C++
Заменить отрицательные элементы линейного массива их модулями. Подсчитать количество произведенных вычисления модуля. Задача на функцию с...


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

Или воспользуйтесь поиском по форуму:
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
31.03.2014, 16:39     Задача с массивом #6
Цитата Сообщение от _RoleX_ Посмотреть сообщение
Не могу разобрать эти указатели, зачем они служат вообще?
Это выделение памяти под динамический массив (используются в тех случаях если размер его заранее не известен, или он больше чем помещается в стек). Но Wlk забыл про очистку выделенной памяти (хотя в данном конкретном случае не крамольно, но приучаться сразу надо делать нормально).
И Вы все постарались решить задачу в лоб (не рационально). Зачем:
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 <iostream>
#include <cstdlib>
using namespace std;
 
int main(int argc, char* argv[])
{
        setlocale(LC_ALL, "Russian");
        int pt;
        cout << "Введите степень 2-ки: \n"; cin >> pt;
        if (pt<1)
        {cout << "2 в " << "степени 0 = 1" << '\n' ;
        system("PAUSE");
        return 0;
        }
        int *x=new int[pt+1];
        x[0]=1;
        x[1]=2;
        for(int i = 2; i <=pt; i++)
        {
        x[i] =x[i-1]*2;
        }
        for(int i = 0; i <=pt; i++)
        {
        cout << "2 в " << "степени " <<  i << " = " << x[i] << '\n' ;
        }
        delete [] x;
        system("PAUSE");
        return 0;
}
Добавлено через 5 минут
Опечатка должно быть так конечно же:
C++
1
#include <iostream>
Yandex
Объявления
31.03.2014, 16:39     Задача с массивом
Ответ Создать тему
Опции темы

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