Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
3 / 3 / 1
Регистрация: 19.01.2013
Сообщений: 113
1

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

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

Author24 — интернет-сервис помощи студентам
Как в этом коде заменить 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.06.2014, 09:16
Ответы с готовыми решениями:

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

Переделать все cout и cin в printf и scanf
Переделать все cout и cin в printf и scanf #include &quot;pch.h&quot; // предкомп #include &lt;locale&gt; //...

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

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

9
106 / 87 / 13
Регистрация: 29.08.2012
Сообщений: 539
09.06.2014, 12:28 2
А как пробуете?
0
3 / 3 / 1
Регистрация: 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
106 / 87 / 13
Регистрация: 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
3 / 3 / 1
Регистрация: 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
106 / 87 / 13
Регистрация: 29.08.2012
Сообщений: 539
10.06.2014, 10:52 6
так же как и предыдущие
0
3 / 3 / 1
Регистрация: 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
106 / 87 / 13
Регистрация: 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
3 / 3 / 1
Регистрация: 19.01.2013
Сообщений: 113
10.06.2014, 15:05  [ТС] 9
все разобрался с using namespace std;
0
3 / 3 / 1
Регистрация: 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.06.2014, 17:34
Помогаю со студенческими работами здесь

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

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

Замена printf на cout и scanf на cin
Пожалуйста, помогите заменить printf на cout и scanf на cin #define _CRT_SECURE_NO_WARNINGS...

Заменить cout на printf а cin на scanf
#include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; int main() { int N, M, p;...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru