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

Ошибка в программе - C++

Восстановить пароль Регистрация
 
Enigmaster
0 / 0 / 0
Регистрация: 29.12.2012
Сообщений: 4
29.12.2012, 20:57     Ошибка в программе #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
29
30
31
32
33
34
35
36
37
//-----------------
#include <fstream>
#include <string>
using namespace std;
ifstream  cin("input.txt");
ofstream cout("output.txt");
string s, st[11];
int h, i, j, k, pos[11];
char c[11][11];
int main()
{
cin >>h;
for (i=1; i<=h; i++) cin >>pos[i];
getline(cin, s);getline(cin, s);
 
len = s.length();
k = len / h;
for (i=0; i<h; i++) 
    {
    for (j=0; j<k; j++)
        st[pos[i+1]] += s[i*k + j];
    t++;
    }
 
for (j=1; j<=k; j++)
    for (i=0; i<h; i++)
    cout <<st[i];
return 0;   
}
//-------------пробовал такой вариант, тоже не пошло(
s = "";
for (j=1; j<=k; j++)
    for (i=0; i<h; i++)
    s += c[i][j];
    cout <<s;
return 0;   
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2012, 20:57     Ошибка в программе
Посмотрите здесь:

ошибка в программе C++
ошибка в программе C++
C++ Ошибка в программе
C++ Ошибка в программе
Ошибка в программе C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11847 / 6826 / 771
Регистрация: 27.09.2012
Сообщений: 16,929
Записей в блоге: 2
Завершенные тесты: 1
29.12.2012, 22:24     Ошибка в программе #2
Цитата Сообщение от Enigmaster Посмотреть сообщение
C++
1
len = s.length();
что такое len?
Цитата Сообщение от Enigmaster Посмотреть сообщение
C++
1
t++;
что такое t?
ZaMaZaN4iK
Мой лучший друг-отладчик!
 Аватар для ZaMaZaN4iK
163 / 163 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
30.12.2012, 00:01     Ошибка в программе #3
у вас массив pos заполняется не с первого элемента, а со второго - почему?Такая же беда и с массивом st
ещё:
C++
1
2
cin >>pos[i];
getline(cin, s);getline(cin, s);
После cin в потоке остается enter и функция getline() загонит в s этот enter, а потом уже норм считает элемент?не проще ли cin.get()?

И ещё - если хотите, чтобы в вашем коде кто-то разбирался - будьте так добры - оформляйте его качественно
Enigmaster
0 / 0 / 0
Регистрация: 29.12.2012
Сообщений: 4
30.12.2012, 07:05  [ТС]     Ошибка в программе #4
Цитата Сообщение от ZaMaZaN4iK Посмотреть сообщение
у вас массив pos заполняется не с первого элемента, а со второго - почему?Такая же беда и с массивом st
ещё:
C++
1
2
cin >>pos[i];
getline(cin, s);getline(cin, s);
После cin в потоке остается enter и функция getline() загонит в s этот enter, а потом уже норм считает элемент?не проще ли cin.get()?

И ещё - если хотите, чтобы в вашем коде кто-то разбирался - будьте так добры - оформляйте его качественно
Заполнять удобнее с первого. Массив pos также заполняется с первого.
Я здесь впервые поэтому все некачественно получается(

Во входном файле содержится след. информация:
4
3 1 2 4
ОМОИПРИАРАРНГМВЕ

После работы программы должно получится слово ПРОГРАММИРОВАНИЕ

Добавлено через 10 минут
Во второй версии программы использую массив char, также t не нужна и в разделе int переменная len должна быть,
похоже случайно удалил
C++ (Qt)
1
2
3
4
5
for (i=0; i<h; i++) 
    {
    for (j=0; j<k; j++)
        c[pos[i+1]][j] = s[i*k + j];
    }
C++ (Qt)
1
2
3
for (j=1; j<=k; j++)
    for (i=0; i<h; i++)
    s += c[i][j];
pavlovnik
41 / 22 / 4
Регистрация: 07.12.2011
Сообщений: 114
30.12.2012, 13:42     Ошибка в программе #5
Цитата Сообщение от Enigmaster Посмотреть сообщение
Заполнять удобнее с первого.


это ты сейчас пошутил или понял ошибку?
лыс
1 / 1 / 0
Регистрация: 04.11.2012
Сообщений: 50
30.12.2012, 13:49     Ошибка в программе #6
А в чем заключается сама задача?
-=ЮрА=-
Заблокирован
Автор FAQ
30.12.2012, 16:00     Ошибка в программе #7
Цитата Сообщение от Enigmaster Посмотреть сообщение
ifstream cin("input.txt");
ofstream cout("output.txt");
- НЕЛЬЗЯ вот так перегружать стандартные операнды!
cin используется для ввода данных, cout используется для вывода данных в контекст коносли.
Это всё равно что написать ofstream double("data.txt"); и удивляться мол что то не так

http://codepad.org/stxYOvnv
In function 'int main()':
Line 11: error: reference to 'cin' is ambiguous
compilation terminated due to -Wfatal-errors.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
30.12.2012, 16:03     Ошибка в программе #8
Так и запишем: наслушался пасквилянтов:
Цитата Сообщение от Enigmaster Посмотреть сообщение
Заполнять удобнее с первого. Массив pos также заполняется с первого.
А надо с нулевого.
Enigmaster
0 / 0 / 0
Регистрация: 29.12.2012
Сообщений: 4
04.01.2013, 10:07  [ТС]     Ошибка в программе #9
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- НЕЛЬЗЯ вот так перегружать стандартные операнды!
cin используется для ввода данных, cout используется для вывода данных в контекст коносли.
Это всё равно что написать ofstream double("data.txt"); и удивляться мол что то не так
Почему нельзя?
У меня компилятор не видит в этом ошибку.
Ни одна тестирующая система не говорила , что есть ошибка, значит все в рамках правил)
Вот наверное заполнение с 1 первой позиции является ошибкой(

Добавлено через 10 минут
Парни! Всем спасибо там действительно ошибка в заполнении с первого элемента. Надо с нулевого!
-=ЮрА=-
04.01.2013, 13:16
  #10

Не по теме:

Цитата Сообщение от Enigmaster Посмотреть сообщение
Почему нельзя?
У меня компилятор не видит в этом ошибку.
Ни одна тестирующая система не говорила , что есть ошибка, значит все в рамках правил)
Посмотри ссылку которую тебе дал - если твой компилятор не ругался это не значт что всё в рамках стандарта, ладно если тебе так лучше пиши, мне без разницы...
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
In function 'int main()':
Line 11: error: reference to 'cin' is ambiguous
compilation terminated due to -Wfatal-errors.

ZaMaZaN4iK
Мой лучший друг-отладчик!
 Аватар для ZaMaZaN4iK
163 / 163 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
04.01.2013, 14:32     Ошибка в программе #11
Enigmaster, недьзя перегружать так... испоьзуйте другое имя потока ввода и вывода.Я напрмер, если у меня имеется 1 поток ввода и 1 вывода называю их in , out.И все дела.И заполнять массив НАДО с нулевого элемента, иначе у вас 1 эелемент массива не испоьзуется - лишний расход памяти(избавляйтесь от Паскалевского прошлого)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.01.2013, 15:33     Ошибка в программе
Еще ссылки по теме:

C++ ошибка в программе
Ошибка в программе C++
Ошибка в программе C++

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

Или воспользуйтесь поиском по форуму:
Enigmaster
0 / 0 / 0
Регистрация: 29.12.2012
Сообщений: 4
07.01.2013, 15:33  [ТС]     Ошибка в программе #12
Я полностью с тобой согласен, только используя cin cout ошибку не дает, еще один плюс, если нужно перейти на консоль программу модифицировать значительно легче. Спасибо за совет буду так и делать в тех случаях, когда на консоль переходить точно не надо.
Yandex
Объявления
07.01.2013, 15:33     Ошибка в программе
Ответ Создать тему
Опции темы

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