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

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

Восстановить пароль Регистрация
 
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
02.09.2011, 18:35     Не выделение памяти #1
По какой причине не работает это программа ?

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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.09.2011, 18:35     Не выделение памяти
Посмотрите здесь:

Выделение памяти C++
Выделение памяти C++
C++ Выделение памяти...
C++ выделение памяти
Выделение памяти C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Петррр
 Аватар для Петррр
5917 / 3354 / 333
Регистрация: 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;
}
LosAngeles
Заблокирован
02.09.2011, 18:48     Не выделение памяти #3
если z не совпадёт с s.size() всё будет очень плохо

Цитата Сообщение от parkito Посмотреть сообщение
a[i]=s[i]-'0';
тогда уж не числа а цифры, и чё будет в a[i] если s[i] пробел? вообщем алгоритм вобще неправильный
Евгений М.
1033 / 974 / 53
Регистрация: 28.02.2010
Сообщений: 2,817
Завершенные тесты: 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;
}
LosAngeles
Заблокирован
02.09.2011, 18:55     Не выделение памяти #5
stringstream наверно то что тебе нужно
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
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
Yandex
Объявления
02.09.2011, 21:26     Не выделение памяти
Ответ Создать тему
Опции темы

Текущее время: 08:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru