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

Переделать scanf, printf в cin, cout - C++

Восстановить пароль Регистрация
 
KDE2inFreeBSD
3 / 3 / 0
Регистрация: 19.01.2013
Сообщений: 113
09.06.2014, 09:16     Переделать scanf, printf в cin, cout #1
Как в этом коде заменить scanf, printf на cin, cout. А FILE * f = fopen изменить на
C++
1
2
 ifstream in("INPUT.TXT");
  ofstream out("OUTPUT.TXT");
используя только библиотеку #include <fstream>. А метки char ** matrix; поменять на вектор. А то сколько не пробую, всё не то и всё не так


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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <stdio.h>
 
char ** matrix;
unsigned int a, b;
 
void check(unsigned int x, unsigned int y)
{
    if (x<a-1)
        if (matrix[x+1][y]=='#')
        {
            matrix[x+1][y] = '.';
            check(x+1, y);
        }
 
    if (x>0)
        if (matrix[x-1][y]=='#')
        {
            matrix[x-1][y] = '.';
            check(x-1, y);
        }
 
    if (y<b-1)
        if (matrix[x][y+1]=='#')
        {
            matrix[x][y+1] = '.';
            check(x, y+1);
        }
 
    if (y>0)
        if (matrix[x][y-1]=='#')
        {
            matrix[x][y-1] = '.';
            check(x, y-1);
        }
}
 
int main
 
{
 
    FILE * f = fopen("input.txt", "r");
    fscanf(f, "%d %d", &a, &b);
    matrix = new char* [a];
 
 
    for (int i = 0; i < a; i++)
    {
        matrix [i] = new char [b];
        fscanf(f,"%s", matrix[i]);
    }
    fclose(f);
 
    unsigned int sum = 0;
 
    for (int i = 0; i < a; i++)
        for (int j = 0; j<b; j++)
            if (matrix[i][j] == '#')
            {
                sum++;
                check(i,j);
            }
 
    f = fopen("output.txt", "wt");
    fprintf(f, "%d", sum);
    fclose(f);
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2014, 09:16     Переделать scanf, printf в cin, cout
Посмотрите здесь:

как переделать с cout, cin на printf, scanf??? C++
printf и scanf против cin и cout C++
C++ scanf и printf или cin и cout
Нужно переделать программу из cin и cout в printf и scanf C++
Заменить printf scanf на cout cin C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kukurudza
104 / 85 / 6
Регистрация: 29.08.2012
Сообщений: 539
09.06.2014, 12:28     Переделать scanf, printf в cin, cout #2
А как пробуете?
KDE2inFreeBSD
3 / 3 / 0
Регистрация: 19.01.2013
Сообщений: 113
09.06.2014, 15:56  [ТС]     Переделать scanf, printf в cin, cout #3
Я заменяю FILE * f = fopen("input.txt", "r"); на ifstream in("INPUT.TXT"); Как изменить строчку fscanf(f, "%d %d", &a, &b); уже не знаю
f = fopen("output.txt", "wt"); меняю ofstream out("OUTPUT.TXT"); Не зная куда деть эти строки fprintf(f, "%d", sum);
fclose(f);
Как из метки сделать вектор вообще не имею представления. Тем более в начале объявляется метка в метке.
Kukurudza
104 / 85 / 6
Регистрация: 29.08.2012
Сообщений: 539
09.06.2014, 16:02     Переделать scanf, printf в cin, cout #4
fscanf(f, "%d %d", &a, &b); меняется так:
C++
1
in >> a >> b;
fprintf(f, "%d", sum); меняется так:
C++
1
f << sum;
fclose(f); меняется так:
C++
1
f.close();
компренде?
KDE2inFreeBSD
3 / 3 / 0
Регистрация: 19.01.2013
Сообщений: 113
10.06.2014, 10:50  [ТС]     Переделать scanf, printf в cin, cout #5
А этот цикл как будет
C++
1
2
3
4
5
for (int i = 0; i < a; i++)
    {
        matrix [i] = new char [b];
        fscanf(f,"%s", matrix[i]);
    }
Точней строчка fscanf(f,"%s", matrix[i]);
Kukurudza
104 / 85 / 6
Регистрация: 29.08.2012
Сообщений: 539
10.06.2014, 10:52     Переделать scanf, printf в cin, cout #6
так же как и предыдущие
KDE2inFreeBSD
3 / 3 / 0
Регистрация: 19.01.2013
Сообщений: 113
10.06.2014, 10:55  [ТС]     Переделать scanf, printf в cin, cout #7
У меня есть такое(не работает)
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <stdio.h>
#include <fstream>
 
vector <vector <char> > matrix;
unsigned int a, b;
 
void check(unsigned int x, unsigned int y)
{
    if (x<a-1)
        if (matrix[x+1][y]=='#')
        {
            matrix[x+1][y] = '.';
            check(x+1, y);
        }
 
    if (x>0)
        if (matrix[x-1][y]=='#')
        {
            matrix[x-1][y] = '.';
            check(x-1, y);
        }
 
    if (y<b-1)
        if (matrix[x][y+1]=='#')
        {
            matrix[x][y+1] = '.';
            check(x, y+1);
        }
 
    if (y>0)
        if (matrix[x][y-1]=='#')
        {
            matrix[x][y-1] = '.';
            check(x, y-1);
        }
}
 
int main
 
{
ifstream in("INPUT.TXT");
  ofstream out("OUTPUT.TXT");
 
 
    in >> a >> b;
 
   matrix.resize(100);
 
 
    for (int i = 0; i < a; i++)
    {
       matrix.resize(100);
        fscanf(f,"%s", matrix[i]);
    }
 
    unsigned int sum = 0;
 
    for (int i = 0; i < a; i++)
        for (int j = 0; j<b; j++)
            if (matrix[i][j] == '#')
            {
                sum++;
                check(i,j);
            }
    out << sum;
 
    return 0;
}
INPUT.TXT содержит
8 6
......
...##.
...##.
......
.###..
.###..
.###..
......
P.S. изначальная (рабочая) версия в первом сообщении
Kukurudza
104 / 85 / 6
Регистрация: 29.08.2012
Сообщений: 539
10.06.2014, 10:59     Переделать scanf, printf в cin, cout #8
Вы не научитесь делать сами (если вам это конечно надо) до тех пор, пока не начнете писать самостоятельно, а не выклянчивать каждую строчку кода на форуме.

Наверняка ваша программа не компилируется как минимум из-за того что нету строки
C++
1
using namespace std;
а fscanf(f,"%s", matrix[i]); заменяется так
C++
1
in >> matrix[i];
KDE2inFreeBSD
3 / 3 / 0
Регистрация: 19.01.2013
Сообщений: 113
10.06.2014, 15:05  [ТС]     Переделать scanf, printf в cin, cout #9
все разобрался с using namespace std;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2014, 17:34     Переделать scanf, printf в cin, cout
Еще ссылки по теме:

Cin и cout заменить на scanf и printf C++
C++ Заменить printf на cout, scanf на cin
Отличие printf/scanf от cout/cin C++

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

Или воспользуйтесь поиском по форуму:
KDE2inFreeBSD
3 / 3 / 0
Регистрация: 19.01.2013
Сообщений: 113
11.06.2014, 17:34  [ТС]     Переделать scanf, printf в cin, cout #10
исправил на
Кликните здесь для просмотра всего текста
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
using namespace std;
vector <vector <char> > matrix;
unsigned int a, b;
  ifstream in("INPUT.TXT");
  ofstream out("OUTPUT.TXT");
 
 
 
void check(unsigned int x, unsigned int y)
{
    if (x<a-1)
        if (matrix[x+1][y]=='#')
        {
            matrix[x+1][y] = '.';
            check(x+1, y);
        }
 
    if (x>0)
        if (matrix[x-1][y]=='#')
        {
            matrix[x-1][y] = '.';
            check(x-1, y);
        }
 
    if (y<b-1)
        if (matrix[x][y+1]=='#')
        {
            matrix[x][y+1] = '.';
            check(x, y+1);
        }
 
    if (y>0)
        if (matrix[x][y-1]=='#')
        {
            matrix[x][y-1] = '.';
            check(x, y-1);
        }
}
 
int main()
 
{
in >> a >> b;
matrix.resize(10);
 
 
    for (int i = 0; i < a; i++)
        for (int j = 0; j < b; j++)
    {
       matrix.resize(10);
        in >> matrix[i][j];
 
    }
 
    unsigned int sum = 0;
 
    for (int i = 0; i < a; i++)
        for (int j = 0; j<b; j++)
            if (matrix[i][j] == '#')
            {
                sum++;
                check(i,j);
            }
    out << sum;
 
    return 0;
}
Знаю что в файл OUTPUT.TXT должно получиться 2. А у меня идет обработка события и закрытия приложения. Без записи ответа. Где на этот раз ошибка?
Yandex
Объявления
11.06.2014, 17:34     Переделать scanf, printf в cin, cout
Ответ Создать тему
Опции темы

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