0 / 0 / 0
Регистрация: 02.02.2019
Сообщений: 18
1

Как сохранить нули

04.02.2019, 17:07. Показов 5565. Ответов 9

Author24 — интернет-сервис помощи студентам
В последних K строчках находятся описания доступных типов плитки в следующем формате:
<форма> <стоимость> <окраска>
<Форма> — это число от 1 до 4, описывающее форму плитки (см. рисунок выше)
<Стоимость> — это натуральное число, не превосходящее 10000, задающее стоимость одной плитки такого типа
<Окраска> — это от одного до трех чисел 0 или 1. Количество 2 чисел совпадает с количеством квадратиков, из которых состоит плитка.
Как считать окраску с сохранием нулей? K я сделал массивом, так как несколько строк.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.02.2019, 17:07
Ответы с готовыми решениями:

Удалить нули из массива! Как удалить нули?но чтобы рисунок остался!
#include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; int main() { int r,c; ...

Как сохранить нули после запятой?
нужна такая формула, которая преобразует числа не теряя нулей например 2000,00 - нужно сделать...

Как сохранить нули в начале строки файла
Имею дело с артикулами, потому сохранить ноль перед числовым артикулом крайне важно. Но почемуто...

Сохранить нули при передаче колонки в массив
Собственно имеется тестовый макрос Sub testMacros() With Workbooks(&quot;входные...

9
223 / 150 / 79
Регистрация: 14.03.2016
Сообщений: 459
04.02.2019, 17:20 2
Приведите пример входных данных, и по подробней объясните, что вы имеет ввиду под "сохранением нулей"
1
0 / 0 / 0
Регистрация: 02.02.2019
Сообщений: 18
04.02.2019, 17:24  [ТС] 3
Ну например в файле:
2 776 01
4 628 000
и т. д.
Как считать эти данные, кол-во строк от 1 до 10, 1 число от 1 до 4, 2 число от 1 до 10000, а 3 число состоит из 3 чисел 0 и 1
0
223 / 150 / 79
Регистрация: 14.03.2016
Сообщений: 459
04.02.2019, 17:29 4
Лучший ответ Сообщение было отмечено Sekerator как решение

Решение

Используйте строку (std::string) для ввода последних трех символов, либо, что по сути тоже самое, использовать массив char (или bool, но т.к. они занимают одинаковое кол-во памяти + char* можно вводить сразу, а bool* нет).
1
0 / 0 / 0
Регистрация: 02.02.2019
Сообщений: 18
04.02.2019, 17:43  [ТС] 5
Цитата Сообщение от Cortas Посмотреть сообщение
Используйте строку (std::string) для ввода последних трех символов, либо, что по сути тоже самое, использовать массив char (или bool, но т.к. они занимают одинаковое кол-во памяти + char* можно вводить сразу, а bool* нет).
А не мог бы ты написать это в виде кода? У меня не получается
0
0 / 0 / 0
Регистрация: 02.02.2019
Сообщений: 18
04.02.2019, 17:50  [ТС] 6
Вот что получается, код такой:
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include "pch.h"
#include <iostream>
#include <cstdlib>
#include <string>
#include <clocale>
#include <Windows.h>
#include <fstream>
#include <cmath>
#include <iomanip>
#include <fstream>
 
using namespace std;
 
void Input(int n, int m, int k, int** T, int** K, char* color)
{
    int chk = 0;
    cout << n << endl << m << endl << k << endl;
 
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
            cout << setw(5) << T[i][j];
        cout << endl;
    }
    cout << endl;
 
    for (int i = 0; i < k; i++)
    {
        for (int j = 0; j < 2; j++)
            cout << K[i][j] << setw(5);
        for (int j = chk; j < 4 * k; j++)
        {
            if (color[j] == 'Y')
                break;
            cout << color[j];
        }
        cout << endl;
    }
    cout << endl;
 
    return;
}
 
void Read_File()
{
    ifstream fin;
    int n, m, k, chk = 0;
 
    fin.open("Input.txt");
 
    fin >> n >> m >> k;
    char *color = new char[4 * k];
 
    int **T = new int*[n];
    for (int i = 0; i < n; i++)
        T[i] = new int[m];
 
    int **K = new int*[k];
    for (int i = 0; i < k; i++)
        K[i] = new int[2];
 
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
            fin >> T[i][j];
 
    for (int i = 0; i < k; i++)
    {
        for (int j = 0; j < 2; j++)
            fin >> K[i][j];
        for (int j = chk; j < 4 * k; j++)
        {
            fin >> color[j];
            chk++;
            if (color[j] == ' ')
            {
                color[j] = 'Y';
                break;
            }
        }
    }
 
    Input(n, m, k, T, K, color);
 
    fin.close();
    return;
}
 
int main()
{
    setlocale(LC_CTYPE, "rus");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    
    Read_File();
 
    system("pause>nul");
    return 0;
}
Миниатюры
Как сохранить нули  
0
0 / 0 / 0
Регистрация: 02.02.2019
Сообщений: 18
04.02.2019, 17:59  [ТС] 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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include "pch.h"
#include <iostream>
#include <cstdlib>
#include <string>
#include <clocale>
#include <Windows.h>
#include <fstream>
#include <cmath>
#include <iomanip>
#include <fstream>
 
using namespace std;
 
void Input(int n, int m, int k, int** T, int** K, char* color)
{
    int chk = 0;
    cout << n << endl << m << endl << k << endl;
 
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
            cout << setw(5) << T[i][j];
        cout << endl;
    }
    cout << endl;
 
    for (int i = 0; i < k; i++)
    {
        for (int j = 0; j < 2; j++)
            cout << K[i][j] << setw(5);
        for (int j = chk; j < 4 * k; j++)
        {
            chk++;
            if (color[j] == 'Y')
                break;
            cout << color[j];
        }
        cout << endl;
    }
    cout << endl;
 
    return;
}
 
void Read_File()
{
    ifstream fin;
    int n, m, k, chk = 0;
 
    fin.open("Input.txt");
 
    fin >> n >> m >> k;
    char *color = new char[4 * k], ch;
 
    int **T = new int*[n];
    for (int i = 0; i < n; i++)
        T[i] = new int[m];
 
    int **K = new int*[k];
    for (int i = 0; i < k; i++)
        K[i] = new int[2];
 
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
            fin >> T[i][j];
 
    for (int i = 0; i < k; i++)
    {
        for (int j = 0; j < 2; j++)
            fin >> K[i][j];
        fin.get(ch);
        for (int j = chk; j < 4 * k; j++)
        {
            fin.get(color[j]);
            chk++;
            if (color[j] == ' ')
            {
                color[j] = 'Y';
                break;
            }
        }
    }
 
    Input(n, m, k, T, K, color);
 
    fin.close();
    return;
}
 
int main()
{
    setlocale(LC_CTYPE, "rus");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    
    Read_File();
 
    system("pause>nul");
    return 0;
}
Вот решение.
0
223 / 150 / 79
Регистрация: 14.03.2016
Сообщений: 459
04.02.2019, 18:17 8
Лучший ответ Сообщение было отмечено Sekerator как решение

Решение

Можно и по компактней:
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
#include <iostream>
#include <conio.h>
#include <iomanip>
#include <fstream>
 
using namespace std;
 
struct plate
{
    int form, cost;
    char paint[3];
    friend ostream& operator<<(ostream& out, plate pl)
    {
        out << setw(10);
        switch(pl.form)
        {//эт хз, можете по-своему назвать, как у вас в задании (если у форм, конечно, есть осмысленные названия)
            case 1: out << "Square"; break;
            case 2: out << "Rhomb"; break;
            case 3: out << "Circular"; break;
            case 4: out << "Butterfly"; break;
        }
        out << setw(6) << pl.cost << setw(6) << pl.paint << endl;
        return out;
    }
};
 
int main()
{
    //если размер не известен можно использовать векторы
    plate data[10];
    ifstream fin("input.txt");
    if(!fin) { cout << "Cant open the file!"; return 1; }
 
    int cur = 0;
    plate temp;
    fin >> temp.form >> temp.cost >> temp.paint;
    while(fin)
    {
        data[cur++] = temp;
        fin >> temp.form >> temp.cost >> temp.paint;
    }
    fin.close();
    for(int i = 0; i < cur; i++)
        cout << data[i];
 
    system("pause>nul");
    return 0;
}
1
0 / 0 / 0
Регистрация: 02.02.2019
Сообщений: 18
04.02.2019, 18:33  [ТС] 9
Цитата Сообщение от Cortas Посмотреть сообщение
Можно и по компактней:
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
#include <iostream>
#include <conio.h>
#include <iomanip>
#include <fstream>
 
using namespace std;
 
struct plate
{
    int form, cost;
    char paint[3];
    friend ostream& operator<<(ostream& out, plate pl)
    {
        out << setw(10);
        switch(pl.form)
        {//эт хз, можете по-своему назвать, как у вас в задании (если у форм, конечно, есть осмысленные названия)
            case 1: out << "Square"; break;
            case 2: out << "Rhomb"; break;
            case 3: out << "Circular"; break;
            case 4: out << "Butterfly"; break;
        }
        out << setw(6) << pl.cost << setw(6) << pl.paint << endl;
        return out;
    }
};
 
int main()
{
    //если размер не известен можно использовать векторы
    plate data[10];
    ifstream fin("input.txt");
    if(!fin) { cout << "Cant open the file!"; return 1; }
 
    int cur = 0;
    plate temp;
    fin >> temp.form >> temp.cost >> temp.paint;
    while(fin)
    {
        data[cur++] = temp;
        fin >> temp.form >> temp.cost >> temp.paint;
    }
    fin.close();
    for(int i = 0; i < cur; i++)
        cout << data[i];
 
    system("pause>nul");
    return 0;
}
struct plate
Это класс?
0
223 / 150 / 79
Регистрация: 14.03.2016
Сообщений: 459
04.02.2019, 18:34 10
Цитата Сообщение от Sekerator Посмотреть сообщение
Это класс?
Это структура, однако, на сколько мне известно, класс и структура ничем, кроме поля по умолчанию (struct - public, class - privete), не отличаются.
0
04.02.2019, 18:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.02.2019, 18:34
Помогаю со студенческими работами здесь

Текстовый редактор: как сохранить (не "сохранить как") открытый документ
private void сохранитькакToolStripMenuItem_Click(object sender, EventArgs e) { ...

Как сделать кнопку 'Сохранить', а не 'Сохранить как'?
как сделать кнопку сохранить а не сохранить как unit Unit8; interface uses Windows,...

Сохранить и Сохранить как в блокноте
Пишу блокнот на C#. Код для &quot;сохранить как..&quot;: SaveFileDialog sfd = new SaveFileDialog(); ...

Сохранить/сохранить как изображение
Всем привет. Написал программу, с помощью которой можно рисовать изображения, однако возникла...


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

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

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