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

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

Войти
Регистрация
Восстановить пароль
 
sievmi
2 / 2 / 0
Регистрация: 20.06.2012
Сообщений: 73
#1

Не могу понять из-за чего это происходит - C++

03.07.2012, 17:19. Просмотров 406. Ответов 9
Метки нет (Все метки)

Здраствуйте. Вот часть программы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <fstream>
using namespace std;
 
int main()
{
    ifstream x("input.txt");
    ofstream d("output.txt");
 
    char a[200][100], c[4];
    int i, j, h, w;
 
    x >> w >> h;
 
    for( i = 0; i < 2*h; i++ )
        x >> a[i];
 
    d << a[0] << "\n";
 
    x >> c;
 
    d << a[0] << "\n";
Сдесь интсрукци яна строке 17 выводит строку нужных мне символов, а второая( на строке 21) ничего не выводит.

Получается элемент a[0] после выполнения инструкции x >> c; становиться пустым ? Или сдесь что-то другое ? Совершенно понять не могу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2012, 17:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не могу понять из-за чего это происходит (C++):

Не могу понять из-за чего ошибка - C++
Я новичёк,школьник ещё,перешёл с паскаля. Среда Visual C++ 2010. Вот код. Одна из базовых задач,нахождение кратчайшего пути в...

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

Не могу понять чего не работает - C++
Не могу понять чего не работает моя (функция sort) сортировка мозги уже кипят, а надо всего лишь сделать сортировку по алфавиту но не...

Не могу понять чего выдает всегда 0 - C++
int n = 0; char str1 = &quot;Текст текст текст Фиксатор текст текст текст&quot;; for(int i = 0; i &lt; strlen(str1); i++) { ...

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

Никак не могу понять что это - C++
#include &lt;iostream&gt; using namespace std; int main() { setlocale(LC_ALL, &quot;rus&quot;); double chocolate, cofe, milk; cout &lt;&lt;...

9
ValeryS
Модератор
6729 / 5138 / 485
Регистрация: 14.02.2011
Сообщений: 17,254
03.07.2012, 17:26 #2
чей то мне не понятно
Цитата Сообщение от sievmi Посмотреть сообщение
char a[200][100],
двумерный массив
а
Цитата Сообщение от sievmi Посмотреть сообщение
x >> a[i];
Цитата Сообщение от sievmi Посмотреть сообщение
d << a[0] << "\n";
работаешь как с одномерным???
0
sandye51
программист С++
685 / 587 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
03.07.2012, 17:29 #3
ValeryS, char a[200][200] - массив из 200 строк длиной 199 символов
a[0] - первая из этого массива строк

sievmi, пример входного файла и полный код программы можно?
0
sievmi
2 / 2 / 0
Регистрация: 20.06.2012
Сообщений: 73
03.07.2012, 17:31  [ТС] #4
ValeryS, Ну как бы я считал, что получиться массив строк. Тоесть 200 строк по 100 символов. Разве так нельзя?

Добавлено через 1 минуту
Цитата Сообщение от sandye51 Посмотреть сообщение
ValeryS, char a[200][200] - массив из 200 строк длиной 199 символов
a[0] - первая из этого массива строк
А почему длина 199 символов ?
0
alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
03.07.2012, 17:36 #5
Цитата Сообщение от sievmi Посмотреть сообщение
А почему длина 199 символов ?
1 байт отводится под завершающий нуль-символ
0
sievmi
2 / 2 / 0
Регистрация: 20.06.2012
Сообщений: 73
03.07.2012, 17:36  [ТС] #6
sandye51,

Вот полная программа :

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
#include <fstream>
using namespace std;
 
int main()
{
    ifstream x("input.txt");
    ofstream d("output.txt");
 
    char a[200][100], c[4];
    int i, j, h, w;
 
    x >> w >> h;
 
    for( i = 0; i < 2*h; i++ )
        x >> a[i];
 
    x >> c;
 
 
    for( i = 0; i < h; i++ )
    {
        for( j = 0; j < w; j++ )
            if( (a[i][j] == '0') && (a[i+h][j] == '0') )
                d << c[0];
            else
            if( (a[i][j] == '0') && (a[i+h][j] == '1') )
                d << c[1];
            else
            if( (a[i][j] == '1') && (a[i+h][j] == '0') )
                d << c[2];
            else
                d << c[3];
 
        d << "\n";
    }
 
 
    return 0;
 
}
Пример входных данных:
5 3
01000
11110
01000
10110
00010
10110
0110

На выходе должно быть :
11110
11100
11110
0
ValeryS
Модератор
6729 / 5138 / 485
Регистрация: 14.02.2011
Сообщений: 17,254
03.07.2012, 17:36 #7
Цитата Сообщение от sievmi Посмотреть сообщение
Ну как бы я считал, что получиться массив строк. Тоесть 200 строк по 100 символов. Разве так нельзя?
Можно наверное.....
но это как раз тот случай когда нужно комментировать Слету не разберешь
Цитата Сообщение от sievmi Посмотреть сообщение
А почему длина 199 символов ?
потомучто он написал
Цитата Сообщение от sandye51 Посмотреть сообщение
char a[200][200]
а у тебя
Цитата Сообщение от sievmi Посмотреть сообщение
char a[200][100],
200 строк 99 символов
один элемент массива отдай под завершающий 0
0
sievmi
2 / 2 / 0
Регистрация: 20.06.2012
Сообщений: 73
03.07.2012, 17:38  [ТС] #8
ТАк а почему все же так происходит ?
0
ValeryS
Модератор
6729 / 5138 / 485
Регистрация: 14.02.2011
Сообщений: 17,254
03.07.2012, 17:41 #9
файл текстовый
Цитата Сообщение от sievmi Посмотреть сообщение
ifstream x("input.txt");
а здесь ты присваиваешь текстовые значения
Цитата Сообщение от sievmi Посмотреть сообщение
5 3
интам
Цитата Сообщение от sievmi Посмотреть сообщение
x >> w >> h;
скорре всего им присвоится 0x35 '5' и 0x33 '3'
проверь отладчиком
0
sievmi
2 / 2 / 0
Регистрация: 20.06.2012
Сообщений: 73
03.07.2012, 19:44  [ТС] #10
Не могу разобраться как с отладчиком работать в CodeBlocks.

А разве из-за этого может быть эта проблема?
У меня есть предыдущая программа ( рабочая ) которая делает тоже самое, я там так же считывал в инты.
Вот:

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
43
44
#include <fstream>
using namespace std;
 
int main()
{
    ifstream x("input.txt");
    ofstream d("output.txt");
 
    char a[100][100], b[100][100], c[4];
    int i, j, h, w;
 
    x >> w >> h;
 
    for( i = 0; i < h; i++ )
        for( j = 0; j < w; j++ )
            x >> a[i][j];
 
    for( i = 0; i < h; i++ )
        for( j = 0; j < w; j++ )
            x >> b[i][j];
 
    for( i = 0; i < 4; i++ )
        x >> c[i];
 
    for( i = 0; i < h; i++ )
    {
        for( j = 0; j < w; j++ )
            if( (a[i][j] == '0') && (b[i][j] == '0') )
                d << c[0];
            else
            if( (a[i][j] == '0') && (b[i][j] == '1') )
                d << c[1];
            else
            if( (a[i][j] == '1') && (b[i][j] == '0') )
                d << c[2];
            else
                d << c[3];
 
        d << "\n";
    }
 
    return 0;
 
}
Добавлено через 1 час 47 минут
Если убрать инструкцию x >> c; и считать эту строку в массив a, то все работает.
Но почему с ней не работает я не понял
0
03.07.2012, 19:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2012, 19:44
Привет! Вот еще темы с ответами:

Не могу понять, что это значит: while(i<10/2) - C++
/*обращение массива*/ #include &lt;stdio.h&gt; main() { int p,i=0; static a={10,11,12,13,14, 15,16,17,18,19}; while(i&lt;10/2) { ...

не могу понять как это делать - C++
Даны целые числа n , a0 , a1, a2 , …, an−1. Найти сумму всех членов последовательности a0 , a1, a2 , …, an−1, расположенных после первого...

Не могу понять для чего третья переменная в параметрах функции - C++
int binpow (int a, int n) вот это понимаю, а вот этот не могу понять, что означает переменная b? unsigned int binpow(unsigned int a,...

[c++] fgets не могу понять почему это не работает - C++
Вообщем на диске C:\ лежит 3 файла 1 Файл test.txt 2 Файл 1.dll 3 Файл 2.dll в test.txt записано: 1.dll 2.dll


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

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

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