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

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

Войти
Регистрация
Восстановить пароль
 
KDE2inFreeBSD
3 / 3 / 0
Регистрация: 19.01.2013
Сообщений: 113
#1

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

09.06.2014, 09:16. Просмотров 795. Ответов 9
Метки нет (Все метки)

Как в этом коде заменить 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2014, 09:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Переделать scanf, printf в cin, cout (C++):

Переделать scanf и printf в cin и cout - C++
#include &quot;stdio.h&quot; #include &quot;math.h&quot; int main() { float S=0; int n=3; printf(&quot;For\n&quot;); for (n=3; n &lt;= 9;...

как переделать с cout, cin на printf, scanf??? - C++
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; const int n=30; class TRecord { public: ...

Нужно переделать программу из cin и cout в printf и scanf - C++
#include &lt;iostream&gt; using namespace std; int fact(int n) { int s=1; for(int i=1; i&lt;=n; i++) s*=i; ...

printf и scanf против cin и cout - C++
Друзья мои,стал учить плюсы и столкнулся с кучей противоречий. То что в С нет cin/cout я знаю. Но вот в С++ возможно использование...

Заменить cout на printf а cin на scanf - C++
#include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; int main() { int N, M, p; cout &lt;&lt; &quot;Введите размерность...

Отличие printf/scanf от cout/cin - C++
Я слышал, что принтф и сканф - это форматированный вывод данных , а син и саут - это потоковый вывод данных. Но что это значит? И они...

9
Kukurudza
105 / 86 / 6
Регистрация: 29.08.2012
Сообщений: 539
09.06.2014, 12:28 #2
А как пробуете?
0
KDE2inFreeBSD
3 / 3 / 0
Регистрация: 19.01.2013
Сообщений: 113
09.06.2014, 15:56  [ТС] #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);
Как из метки сделать вектор вообще не имею представления. Тем более в начале объявляется метка в метке.
0
Kukurudza
105 / 86 / 6
Регистрация: 29.08.2012
Сообщений: 539
09.06.2014, 16:02 #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();
компренде?
1
KDE2inFreeBSD
3 / 3 / 0
Регистрация: 19.01.2013
Сообщений: 113
10.06.2014, 10:50  [ТС] #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]);
0
Kukurudza
105 / 86 / 6
Регистрация: 29.08.2012
Сообщений: 539
10.06.2014, 10:52 #6
так же как и предыдущие
0
KDE2inFreeBSD
3 / 3 / 0
Регистрация: 19.01.2013
Сообщений: 113
10.06.2014, 10:55  [ТС] #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. изначальная (рабочая) версия в первом сообщении
0
Kukurudza
105 / 86 / 6
Регистрация: 29.08.2012
Сообщений: 539
10.06.2014, 10:59 #8
Вы не научитесь делать сами (если вам это конечно надо) до тех пор, пока не начнете писать самостоятельно, а не выклянчивать каждую строчку кода на форуме.

Наверняка ваша программа не компилируется как минимум из-за того что нету строки
C++
1
using namespace std;
а fscanf(f,"%s", matrix[i]); заменяется так
C++
1
in >> matrix[i];
1
KDE2inFreeBSD
3 / 3 / 0
Регистрация: 19.01.2013
Сообщений: 113
10.06.2014, 15:05  [ТС] #9
все разобрался с using namespace std;
0
KDE2inFreeBSD
3 / 3 / 0
Регистрация: 19.01.2013
Сообщений: 113
11.06.2014, 17:34  [ТС] #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. А у меня идет обработка события и закрытия приложения. Без записи ответа. Где на этот раз ошибка?
0
11.06.2014, 17:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2014, 17:34
Привет! Вот еще темы с ответами:

Cin и cout заменить на scanf и printf - C++
Препод придрался к коду и требует, чтобы я cin и cout заменил на scanf и printf. Поможете? или хотя бы пример для преобразования покажите?...

scanf и printf или cin и cout - C++
Скажите пожалуйста,что предпочтительнее использовать на олимпиадах по программированию да и вообще : scanf и printf или cin и cout В...

Заменить printf на cout, scanf на cin - C++
Помогите заменить printf на cout ,scanf на cin, у меня не получается. int main() { int i,j,k,n; float a,x; float s,p; ...

Заменить cin / cout на scanf / printf - C++
#include&lt;iostream&gt; #include&lt;locale.h&gt; #include&lt;Windows.h&gt; #include&lt;string&gt; #include &quot;123.h&quot; using namespace std; float...


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

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

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