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

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

Войти
Регистрация
Восстановить пароль
 
БлондинкаЯ
0 / 0 / 0
Регистрация: 02.11.2009
Сообщений: 35
#1

Нужно подредактировать прогу - C++

29.11.2009, 13:42. Просмотров 568. Ответов 9
Метки нет (Все метки)

В файле myfile.txt содержится информация типа а= 1,0; b = 5; с = 25,2; d = -l2,5.
Написать функцию, которая получает строку типа «а + b = », «c*d = » или «b/d = », выбирает из файла необходимые значения, вычисляет и возвращает результат.
В главной программе обеспечить ввод с клавиатуры строки и вывод результата.
Выход из программы обеспечить при вводе строки « 0 + 0 ».

Есть прога:
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
101
102
#include "stdafx.h"
#include "iostream"
#include "fstream"
 
using namespace std;
 
void parser(char buf[256], char *one, char *two, char *oper)
{
        int i(0);
        while(buf[i]==' ') ++i;
        *one = buf[i];
        ++i;
        while(buf[i]==' ') ++i;
        *oper = buf[i];
        ++i;
        while(buf[i]==' ') ++i;
        *two = buf[i];
}
 
int main()
{
        setlocale(LC_ALL, "Russian");
        
        ifstream infile("myfile.txt");
        float a, b, c, d, fOne, fTwo, fRes;
        char cOne, cTwo, cOper;
        char buf[256];
        bool fail(false);
        
        infile >> a >> b >> c >> d;
 
        cout << "Введите выражение:\n";
        cin.getline(buf, 256);
        parser(buf, &cOne, &cTwo, &cOper);
 
        while(!(cOne=='0' && cTwo=='0' && cOper=='+')) {
 
                switch(cOne) {
                        case 'a':
                                fOne = a;
                        break;
 
                        case 'b':
                                fOne = b;
                        break;
 
                        case 'c':
                                fOne = c;
                        break;
 
                        case 'd':
                                fOne = d;
                        break;
                }
 
                switch(cTwo) {
                        case 'a':
                                fTwo = a;
                        break;
 
                        case 'b':
                                fTwo = b;
                        break;
 
                        case 'c':
                                fTwo = c;
                        break;
 
                        case 'd':
                                fTwo = d;
                        break;
                }
 
                switch(cOper) {
                        case '+':
                                fRes = fOne + fTwo;
                        break;
 
                        case '-':
                                fRes = fOne - fTwo;
                        break;
 
                        case '/':
                                fRes = fOne / fTwo;
                        break;
 
                        case '*':
                                fRes = fOne * fTwo;
                        break;
                }
 
                cout << buf << " = " << fRes << endl;
 
                cout << "Введите выражение:\n";
                cin.getline(buf, 256);
                parser(buf, &cOne, &cTwo, &cOper);
        };
 
        cout << "\n\nCreated by R0mm\nCopyright (C) 2009 cyberforum.ru\n\n";
        system("pause");
        return 0;
}
Она запускается, но считает не правильно. В чём ошибка?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2009, 13:42     Нужно подредактировать прогу
Посмотрите здесь:

Подредактировать прогу, считающую количество символов в % - C++
#include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;stdlib.h&gt; int main() { freopen(&quot;c:/borlandc/in.txt&quot;, &quot;r&quot;, stdin); ...

Нужно переделать прогу! - C++
Нужно переписать код, чтобы не было меток)))) #include&lt;math.h&gt; #include&lt;stdio.h&gt; #include&lt;alloc.h&gt; #include&lt;conio.h&gt; ...

Нужно написать прогу на С++ - C++
Помогите пожалуйста с написанием проги... Вот условие такое: Написать программу, которая получает случайное целое типа int, выводит его...

Нужно написать прогу(срочно) - C++
Записать в файл последовательного доступа N натуральных чисел: a1, a2, …, an (числа, получить с помощью датчика случайных чисел)....

нужно написать прогу со строками - C++
необходимо наиболее просто написать задачу на си получить из слова а,вычеркиванием некоторого кол-ва букв,слово b.отображать на экран...

Нужно вставить в прогу правильную формулу(С++) - C++
Привет всем)) Помогите пожалуйста вставить в прогу правильную формулу. Вот сама задача: Должны быть реализованные подпрограммы...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
БлондинкаЯ
0 / 0 / 0
Регистрация: 02.11.2009
Сообщений: 35
29.11.2009, 13:44  [ТС]     Нужно подредактировать прогу #2
В файле myfile.txt содержится информация типа а= 1,0; b = 5; с = 25,2; d = -l2,5.
Написать функцию, которая получает строку типа «а + b = », «c*d = » или «b/d = », выбирает из файла необходимые значения, вычисляет и возвращает результат.
В главной программе обеспечить ввод с клавиатуры строки и вывод результата.
Выход из программы обеспечить при вводе строки « 0 + 0 ».

Есть прога:
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
101
102
#include "stdafx.h"
#include "iostream"
#include "fstream"
 
using namespace std;
 
void parser(char buf[256], char *one, char *two, char *oper)
{
int i(0);
while(buf[i]==' ') ++i;
*one = buf[i];
++i;
while(buf[i]==' ') ++i;
*oper = buf[i];
++i;
while(buf[i]==' ') ++i;
*two = buf[i];
}
 
int main()
{
setlocale(LC_ALL, "Russian");
 
ifstream infile("myfile.txt");
float a, b, c, d, fOne, fTwo, fRes;
char cOne, cTwo, cOper;
char buf[256];
bool fail(false);
 
infile >> a >> b >> c >> d;
 
cout << "Введите выражение:\n";
cin.getline(buf, 256);
parser(buf, &cOne, &cTwo, &cOper);
 
while(!(cOne=='0' && cTwo=='0' && cOper=='+')) {
 
switch(cOne) {
case 'a':
fOne = a;
break;
 
case 'b':
fOne = b;
break;
 
case 'c':
fOne = c;
break;
 
case 'd':
fOne = d;
break;
}
 
switch(cTwo) {
case 'a':
fTwo = a;
break;
 
case 'b':
fTwo = b;
break;
 
case 'c':
fTwo = c;
break;
 
case 'd':
fTwo = d;
break;
}
 
switch(cOper) {
case '+':
fRes = fOne + fTwo;
break;
 
case '-':
fRes = fOne - fTwo;
break;
 
case '/':
fRes = fOne / fTwo;
break;
 
case '*':
fRes = fOne * fTwo;
break;
}
 
cout << buf << " = " << fRes << endl;
 
cout << "Введите выражение:\n";
cin.getline(buf, 256);
parser(buf, &cOne, &cTwo, &cOper);
};
 
cout << "\n\nCreated by R0mm\nCopyright (C) 2009 cyberforum.ru\n\n";
system("pause");
return 0;
}
Она запускается, но считает не правильно. В чём ошибка?
manfeese
129 / 128 / 16
Регистрация: 04.01.2009
Сообщений: 415
29.11.2009, 13:59     Нужно подредактировать прогу #3
C++
1
2
3
4
5
6
7
8
9
10
11
double GetFromFile(FILE *f,char *s)
{
 double a,b,c,d;
 f >> a >> b >> c >> d;
 
 if (s=="a+b=") return a+b;
 if (s=="c*d=") return c*d;
 if (s=="b/d=")
    if (d!=0) return b/d;
    else return 0;
}
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
29.11.2009, 14:12     Нужно подредактировать прогу #4
У Вас программа работает правильно. Ошибка у Вас в записях информации в файле myfile.txt.
По всей видимости там такая запись
а= 1,0; b = 5; с = 25,2; d = -l2,5.
. Вот если исправите на такую:
1.0 5 25.2 -12.5
, то все будет работать нормально.
Если хотите, что бы Ваша программа работала с информацией, записанной в другом формате, то нужно писать раздел кода считывания данных из файла, подругому.
БлондинкаЯ
0 / 0 / 0
Регистрация: 02.11.2009
Сообщений: 35
29.11.2009, 14:26  [ТС]     Нужно подредактировать прогу #5
А это в теле функции main записывается? Если можно напишите исправленный код
БлондинкаЯ
0 / 0 / 0
Регистрация: 02.11.2009
Сообщений: 35
29.11.2009, 14:56  [ТС]     Нужно подредактировать прогу #6
Ура, ура! Работает! Спасибо! Из-за такой мелочи не получалось))))). А можно вас ещё попросить помочь переделать программу через array. Она запускается и считает правильно, но преподаватель требует, чтобы была через array, а сделана через int. Заранее большое спасибо!
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 "stdafx.h"
#include <iostream>
#include <conio.h>
 
using namespace std;
int* Sum(int* first, int* second, int n)
{
int* rez = new int[n];
for(int i = 0; i < n; ++i)
rez[i] = first[i] + second[i];
return rez;
}
int main()
{
int A[4][2] = { 5, 3, 7, 1, 3, -5, 4, 7};
int B[4][2], C[4][2], i, j;
for(i = 0; i < 2; ++i)
for(j = 0; j < 4; ++j)
cin>>B[i][j];
for(i = 0; i < 2; ++i)
for(j = 0; j < 4; ++j)
C[i][j] = A[i][j] + B[i][j];
 
cout<<"\nA:"<< endl;
for(i = 0; i < 2; ++i, cout<< endl)
for(j = 0; j < 4; ++j)
cout<<A[i][j]<<' ';
 
cout<<"\nB:"<< endl;
for(i = 0; i < 2; ++i, cout<< endl)
for(j = 0; j < 4; ++j)
cout<<B[i][j]<<' ';
 
cout<<"\nC:"<< endl;
for(i = 0; i < 2; ++i, cout<< endl)
for(j = 0; j < 4; ++j)
cout<<C[i][j]<<' ';
 
return 0;
}
manfeese
129 / 128 / 16
Регистрация: 04.01.2009
Сообщений: 415
29.11.2009, 15:47     Нужно подредактировать прогу #7
Что значит через Array? Так что ли?
C++
1
2
3
4
5
6
7
8
9
typedef int* array;
 
array Sum(array first, array second, int n)
{
array rez = new int[n];
for(int i = 0; i < n; ++i)
rez[i] = first[i] + second[i];
return rez;
}
БлондинкаЯ
0 / 0 / 0
Регистрация: 02.11.2009
Сообщений: 35
29.11.2009, 16:59  [ТС]     Нужно подредактировать прогу #8
Как в этом примере:
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
#include "stdafx.h"
#include <iostream.h>
void array(float[3][3]);
int main()
{
    float a[3][3];
    int i,j;
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
        {
        cout<<"a["<<i<<"]["<<j<<"]=";
        cin>>a[i][j];
        }
    }
    array(a);
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
        {
            cout<<"aaa["<<i<<"]["<<j<<"]="<<a[i][j]<<"\n";
        }
    }
    return 0;
}
void array(float b[3][3])
{
for(int m=0;m<3;m++)
    {
for(int n=0;n<3;n++)
        {
        b[m][0]=b[0][n]+b[2][n];
}}}
manfeese
129 / 128 / 16
Регистрация: 04.01.2009
Сообщений: 415
29.11.2009, 17:05     Нужно подредактировать прогу #9
что функция array(a) должна выполнять? а то ничего не понятно...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2009, 05:24     Нужно подредактировать прогу
Еще ссылки по теме:

Не изменяется переменная, нужно внести изменения в прогу - C++
Недавно начал учить C++, попросили сделать прогу через свитч и цыкл. Всё вроде правильно, но переменная cost не меняет своё значение....

Выручайте! Нужно переделать прогу под двусвязный список.ничего не понимаю) - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; struct Node { int memSize; Node *Next; }; Node *BegList; using namespace...

Нужно написать прогу которая создаст в двух текстовых файлах А и В порядок числ до 17 - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdio.h&gt; using namespace std; int _tmain(int argc, _TCHAR* argv) { double...

подредактировать код - C++
Ребят, есть вот такой код, программа считает кл-во символов в текстовом документе и заносит результат в новый текстовый документ, а...


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

Или воспользуйтесь поиском по форуму:
БлондинкаЯ
0 / 0 / 0
Регистрация: 02.11.2009
Сообщений: 35
30.11.2009, 05:24  [ТС]     Нужно подредактировать прогу #10
Нужно задавать массивы через array, а не через int
Yandex
Объявления
30.11.2009, 05:24     Нужно подредактировать прогу
Ответ Создать тему
Опции темы

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