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

Задачка из учебника.. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Гортор
 Аватар для Гортор
11 / 11 / 0
Регистрация: 24.10.2011
Сообщений: 134
16.02.2012, 03:59     Задачка из учебника.. #1
Собственно условие:
Из-за высокой цены на бензин водители озабочены затратами топлива своих автомобилей. Одтн водитель взял в рейс несколько емкостей бензина, заприсывая пройденные мили и бензин, использованный из каждой ескости. Разрабтайте программу на С++, которая вводила бы пробег в милях и бензин, использованный из каждой емкости. После ввода исходных данных программа должна расчитать и напечатать значение среднего числа миль на галлон, полученное для всех емкостей. Пример вывода:
Введите расход бензина (-1, если ввод закончен): 12,8
Введите пройденный путь: 287
Для этой емкости получено миль/галлон: 22,421875

Введите расход бензина (--**--): 10,3
Введите пройденный путь: 200
Для этой емкости получено миль/галлон: 19,417475

Введите расход бензина (--**--): 5
Введите пройденный путь: 120
Для этой емкости получено миль/галлон: 24,000000

Средний расход бензина: 21,601423


Вроде задачу разобрал... вот что получилось:
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 <iostream>
#include <iomanip.h>
 
using std::cout;
using std::cin;
using std::endl;
 
int main()
{
    float count, g=0, m=0, sum1=0,sum2=0, mg=0;
    
    do{
        cout << "Виедите расход бензина (-1 если ввод закнчен): ";
        cin >> g;
    
        if (g!=-1){
            sum1 = sum1 + g;
            
                cout << "Введите пройденный путь: ";
                cin >> m;
                
                sum2 = sum2 + m;
                
                mg = m / g;
                cout << "Для этой емкости получено миль /галлон: " << setprecision(6)
                << setiosflags(ios::fixed|ios::showpoint) 
                << mg <<endl;
        
        }
    
    }
    while (g!=1)  
count = sum1 / sum2;
    
cout << "Средний расход бензина: " << setprecision (6)
        << setiosflags (ios::fixed|ios::showpoint)
        << count << endl;
        
        return 0;
}
но при компиляции выдает ошибки:
C++
1
2
3
4
5
6
7
8
9
10
11
12
In file included from c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/backward/iomanip.h:31,
                 from main.cpp:2:
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
main.cpp: In function `int main()':
main.cpp:33: error: expected `;' before "count"
main.cpp:40:2: warning: no newline at end of file
make[2]: *** [build/Debug/MinGW_1-Windows/main.o] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
 
 
ПОСТРОИТЬ FAILED (значение выхода 2, общее время: 880мс)
В чем беда?..
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
16.02.2012, 07:24     Задачка из учебника.. #2
Цитата Сообщение от Гортор Посмотреть сообщение
В чем беда?..
в том, что кто-то не хочет читать сообщения об ошибках. В конце 32 строки поставь «;».
И да, заголовочные файлы с расширением *.h устарели с точки зрения актуальных стандартов языка. Так что используй iomanip вместо iomanip.h
Гортор
 Аватар для Гортор
11 / 11 / 0
Регистрация: 24.10.2011
Сообщений: 134
16.02.2012, 13:17  [ТС]     Задачка из учебника.. #3
Nameless One, не не хочу, а не понимаю эти сообщения.... спасибо...
Цитата Сообщение от Nameless One Посмотреть сообщение
заголовочные файлы с расширением *.h устарели
Без .h выдает ошибку.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
main.cpp: In function `int main()':
main.cpp:22: error: `setprecision' was not declared in this scope
main.cpp:23: error: `ios' has not been declared
main.cpp:23: error: `fixed' was not declared in this scope
main.cpp:23: error: `ios' has not been declared
main.cpp:23: error: `showpoint' was not declared in this scope
main.cpp:23: error: `setiosflags' was not declared in this scope
main.cpp:36: error: `setprecision' was not declared in this scope
main.cpp:37: error: `ios' has not been declared
main.cpp:37: error: `fixed' was not declared in this scope
main.cpp:37: error: `ios' has not been declared
main.cpp:37: error: `showpoint' was not declared in this scope
main.cpp:37: error: `setiosflags' was not declared in this scope
main.cpp:41:2: warning: no newline at end of file
make[2]: *** [build/Debug/MinGW_1-Windows/main.o] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
 
 
ПОСТРОИТЬ FAILED (значение выхода 2, общее время: 1s)
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
16.02.2012, 13:24     Задачка из учебника.. #4
Цитата Сообщение от Гортор Посмотреть сообщение
Без .h выдает ошибку.
значит, очень старая версия MinGW. Либо пути к заголовочным файлам указаны неправильно
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
16.02.2012, 13:32     Задачка из учебника.. #5
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
#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
{
    float g;
    float m=0, sum1=0,sum2=0, mg=0;
    
    do{
        cout << " ";
        cin >> g;
    
        if (g!=-1){
            sum1 = sum1 + g;
            
                cout << "??????? ?????????? ????: ";
                cin >> m;
                
                sum2 = sum2 + m;
                
                mg = m / g;
                cout << "??? ???? ??????? ???????? ???? /??????: " << setprecision(6)
                << setiosflags(ios::fixed|ios::showpoint) 
                << mg <<endl;
        
        }
    
    }
    while (g!=1);  
float vstsumma=0;
    vstsumma= sum1 / sum2;
    
cout << "??????? ?????? ???????: " << setprecision (6)
        << setiosflags (ios::fixed|ios::showpoint)
        << vstsumma << endl;
        
return 0;
}
Гортор
 Аватар для Гортор
11 / 11 / 0
Регистрация: 24.10.2011
Сообщений: 134
16.02.2012, 14:41  [ТС]     Задачка из учебника.. #6
Sylar9, зачем было переписывать мой код?

Добавлено через 16 минут
Nameless One, вобновил MinGW, теперь воспринимает без *.h, но приходится перед каждым манипулятором вывода ставить std::*
MishQa
 Аватар для MishQa
1 / 1 / 0
Регистрация: 12.11.2011
Сообщений: 11
16.02.2012, 14:51     Задачка из учебника.. #7
прописав using namespace std вначале, всеравно требуется вызывать через доступ к пространству имен?
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
16.02.2012, 17:16     Задачка из учебника.. #8
Цитата Сообщение от Гортор Посмотреть сообщение
Nameless One, вобновил MinGW, теперь воспринимает без *.h, но приходится перед каждым манипулятором вывода ставить std::*
так и должно быть. Если же лень явно указывать каждый раз пространство имен, то можно:
  • использовать все имена (идентификаторы) из пространства имен std: using namespace std; (не рекомендуется, т.к. при этом «засоряется» глобальное пространство имен);
  • использовать только те имена из std, которые необходимы в данном коде:
    C++
    1
    2
    
    using std::setiosflags;
    using std::ios;
Гортор
 Аватар для Гортор
11 / 11 / 0
Регистрация: 24.10.2011
Сообщений: 134
16.02.2012, 20:25  [ТС]     Задачка из учебника.. #9
Nameless One, ну это я знаю. про вызов всех имен читал на форуме, что может быть неправильное восприятие класса, одноименного с фунцией. поэтому предпочитаю заранее прописывать (или не прописывать, если используется один раз) используемые имена.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.04.2012, 21:02     Задачка из учебника..
Еще ссылки по теме:

Г.Шилдт. С учебника урок не выполняется C++
C++ Пример из учебника
C++ Не работает пример из учебника

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

Или воспользуйтесь поиском по форуму:
saloedik
Сообщений: n/a
16.04.2012, 21:02     Задачка из учебника.. #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
// Упражнение 2.16 расход бензина.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include "iostream"
#include "iomanip"
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{   float rashod, rastojanie, kolichestvoVvodov = 0, sum = 0, srednee;
    cout << "Vvedite rashod benzina(-1, esli vvod okonchen): ";
    cin >> rashod;
    while (rashod != -1){
        cout << "Vvedite projdenoe rastojanie: ";
        cin >> rastojanie;
        cout << "Rashod dlja etogo baka " << setiosflags(ios::fixed | ios::showpoint) << setprecision(6) << rastojanie / rashod << " m/g" << endl;
        kolichestvoVvodov += 1;
        sum += (rastojanie / rashod);       
        cout << "Vvedite rashod benzina(-1, esli vvod okonchen): ";
        cin >> rashod;
 
        
        }
    if (kolichestvoVvodov ==0)
        cout << "vi ni4ego ne vveli"<< endl;
    else {      
    srednee = sum / kolichestvoVvodov;
    cout << "Sredniu rashod " << setiosflags(ios::fixed | ios::showpoint) << setprecision(6) << srednee << " m/g" << endl;
    }
    system("pause");
    return 0;
}
Вот такое вот решение у меня
Работает четко

P.S.: Только начинаю осваивать С++
Yandex
Объявления
16.04.2012, 21:02     Задачка из учебника..
Ответ Создать тему
Опции темы

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