Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 693
#1

Не выделение памяти - C++

02.09.2011, 18:35. Просмотров 384. Ответов 5
Метки нет (Все метки)

По какой причине не работает это программа ?

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 <string>
using namespace std;
int main ()
{setlocale(LC_ALL,"Rus");
int z;
cout<<"Введите кол-во чисел --> ";
cin>>z;
int *a=new int[z];
 string s;
    cout<<"Введите числа --> ";
     getline(cin,s);
    for (int i=0;i<z;i++)
    a[i]=s[i]-'0';
    for (int i1=0;i1<z;i1++)
        cout<<a[i1]<<endl;
cin.get();
cin.get();
delete [] a;
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.09.2011, 18:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не выделение памяти (C++):

Выделение памяти, проверка на утечку памяти - C++
Интересуют два вопроса: 1. Правильно ли устроен алгоритм выделения, удаление и запись ячейки памяти? Может быть, есть более простые...

Распределение памяти. Динамическое выделение памяти - C++
an-1 an-2 ... a2

Выделение памяти - C++
Скажите пожалуйста что не так? Не могу получить доступ к элементу str = 12, stlb = 3 bool** tempValues = new(bool*); for(int i = 0;...

Выделение памяти - C++
Часто возникает такая проблема, когда конфигурирую проект как Release происходит ошибка выделения памяти (при вызывании new), например...

Выделение памяти - C++
Здравствуйте! #include&lt;iostream&gt; int main() { int *mass = new int ; int *mass2 = new int ; std::cout &lt;&lt; (unsigned int)mass &lt;&lt;...

выделение памяти - C++
#include &lt;iostream&gt; using namespace std; class Matrix { int m, n; public: float **M; Matrix(int a, int b); void...

5
Петррр
5978 / 3415 / 337
Регистрация: 28.10.2010
Сообщений: 5,926
02.09.2011, 18:47 #2
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
#include <iostream>
#include <string>
 
using namespace std;
 
int main ()
{
    setlocale(LC_ALL,"Rus");
    int z;
    cout<<"Введите кол-во чисел --> ";
    cin>>z;
    int *a=new int[z];
    string s;
    cout<<"Введите числа --> ";
    cin >> s;
    for (int i=0;i<z;i++)
        a[i]=s[i]-'0';
    for (int i1=0;i1<z;i1++)
        cout<<a[i1]<<endl;
    cin.get();
    cin.get();
    delete [] a;
    return 0;
}
2
LosAngeles
Заблокирован
02.09.2011, 18:48 #3
если z не совпадёт с s.size() всё будет очень плохо

Цитата Сообщение от parkito Посмотреть сообщение
a[i]=s[i]-'0';
тогда уж не числа а цифры, и чё будет в a[i] если s[i] пробел? вообщем алгоритм вобще неправильный
1
Евгений М.
1037 / 978 / 54
Регистрация: 28.02.2010
Сообщений: 2,829
Завершенные тесты: 2
02.09.2011, 18:52 #4
После "cin >> z" в потоке cin остался символ перехода на следующую строку. Далее этот символ слопал getline.
А так не проще?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>
 
using namespace std;
 
int main ()
{
    setlocale(LC_ALL,"Rus");
    int z;
    cout<<"Введите кол-во чисел --> ";
    cin>>z;
    int *a=new int[z];
    cout<<"Введите числа --> ";
    for (int i=0;i<z;i++)
        cin >> a[i];
    for (int i1=0;i1<z;i1++)
        cout<<a[i1]<<endl;
    cin.get();
 
    delete [] a;
    return 0;
}
1
LosAngeles
Заблокирован
02.09.2011, 18:55 #5
stringstream наверно то что тебе нужно
0
parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 693
02.09.2011, 21:26  [ТС] #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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Последовательность чисел назовем симметричной, если она одинаково читается как слева направо, так и справа налево. Например, следующие последовательности являются симметричными:
 
1 2 3 4 5 4 3 2 1
 
1 2 1 2 2 1 2 1
 
Вашей программе будет дана последовательность чисел. Требуется определить, какое минимальное количество и каких чисел надо приписать в конец этой последовательности, чтобы она стала симметричной.
 
Формат входных данных
 
Сначала вводится число N — количество элементов исходной последовательности (1 ≤ N ≤ 100). Далее идут N чисел — элементы этой последовательности,  натуральные числа от 1 до 9.
 
Формат выходных данных
 
Выведите сначала число M — минимальное количество элементов, которое надо дописать к последовательности, а потом M чисел (каждое — от 1 до 9) — числа, которые надо дописать к последовательности.
 
Примеры
 
Входные данные
    
 
Выходные данные
 
9
1 2 3 4 5 4 3 2 1
    
 
0
 
5
1 2 1 2 2
    
 
3
1 2 1
 
5
1 2 3 4 5
    
 
4
4 3 2 1
http://informatics.mccme.ru/moodle/m...hapterid=507#1
0
02.09.2011, 21:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.09.2011, 21:26
Привет! Вот еще темы с ответами:

Выделение памяти - C++
Платформа и компилятор x64. Установлено 64Gb ОЗУ, 60Gb из них откусил SQL Server. Пытаюсь сделать следующее: struct Dictionary { ...

Выделение памяти - C++
Добрый вечер. Немогу никак понять некоторые тонкости выделения памяти. Во первых: на что указывает указатель, при записи char*...

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

До выделение памяти в С++ - C++
Всем приветик. Вообщем есть некоторые сложности с довыделение памяти... Что я хочу сделать: есть 2-х мерный массив (он ещё и квадратный)....


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

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

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