Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не могу работать с функциями. одна задачка.. просто не умею..ошибки выдает... 
:(
    Опции темы
Zakary
Дата 26.11.2008, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 3.5.2006

Репутация: нет
Всего: нет



Здравствуйте. начал с++ изучать, когда все процессы проходят в функции main() то вроде не сложно..а сейчас мне надо по функциям все разюить. задача: есть файл.в формате: 
f 3.5
m 4.0
m 3.1
f 2.7

и т.д..

надо считать данные - m -мужчина, f-женщина. цифры - это оценка.
надо узнать сумму, среднее значение для мужчин и женщин по отдельности и выложить в файл output.txt

тааак...программа должна содержать функции:
а. openFiles - открытия файлов
б. initialize - инициализируем (значение 0, видимо)
в. sumGrades - суммирует.
д. averageScore - среднее.
е printResults - у это выводит результаты в файл.


нельзя использовать глобальные переменные, можно только использоватьь правильные реферы, (&)

вот что сделал я: 
Код

#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;
void openFiles(ifstream&, ofstream&);
void initialize (int&, int&, double&, double&, double&, double&);
void sumGrades(ifstream&, int&, int&, double&, double&);
void averageGrade (int&, int&, double&, double&);
void printResults (ofstream&, int&, int&, double&, double&, double&, double&);
int main ()
{
    ifstream grades;
    ofstream calculations;
    int female, male;
    double sumFemale, sumMale;
    double averageFemale, averageMale;
openFiles(grades, calculations);
initialize(female,male,sumFemale,sumMale, averageFemale, averageMale);
sumGrades(grades,female,male,sumFemale,sumMale);
averageGrade (female,male,sumFemale,sumMale);
printResults (calculations, female, male,sumFemale, sumMale, 
             averageFemale, averageMale);
return 0;
}

void openFiles(ifstream& inFile, ofstream& outFile)
{
inFile.open("input.txt");
outFile.open("output.txt");
outFile<<fixed<<showpoint;
outFile<<setprecision(2);
}

void initialize (int& countFemale, int& countMale,
                 double& sumFemaleGPA, double& sumMaleGPA, double& femaleAvg, double& maleAvg)
{
    countFemale=0;
    countMale=0;
    sumFemaleGPA=0;
    sumMaleGPA=0;
    maleAvg=0;
    femaleAvg=0;
}
void sumGrades(ifstream& inFile, int& countFemale, int& countMale,
                 double& sumFemaleGPA, double& sumMaleGPA)
{
char ch;
int score;
inFile>>ch;
while (ch=='f'||ch=='m')
{
    if (ch=='f')
    {
    inFile>>score;
    sumFemaleGPA+=score;
    countFemale++;
    }
    else if (ch=='m')
    {
    inFile>>score;
    sumFemaleGPA+=score;
    countFemale++;
    inFile.ignore(1000,"\n");
    }
    else
        cout<<"wrong file content."<<endl;
    inFile>>ch;

}
cout<<"processing"<<endl;
}

void averageGrade (int& countFemale, int& countMale,
                 double& sumFemaleGPA, double& sumMaleGPA)
{
    double averageMale;
    double averageFemale;

    averageMale=sumMaleGPA/countMale;
    averageFemale=sumFemaleGPA/countFemale;
}

void printResults (ofstream& outp, int& countFemale, int& countMale,
                 double& sumFemaleGPA, double& sumMaleGPA, double& femaleAvg, double& maleAvg)
{
    outp<<"The number of female: "<< countFemale<<endl;
    outp<<"The number of male: "<< countMale<<endl;
    outp<<"The sum of Male GPA: "<<sumMaleGPA<<endl;
    outp<<"The sum of Female GPA: "<<sumFemaleGPA<<endl;
    outp<<"The average of Male: "<<maleAvg<<endl;
    outp<<"The average of Female: "<<femaleAvg<<endl;
}


не хочет работать с чтение double... и вообще не знаю как в loop переводить на новую линию....=(

PM MAIL   Вверх
bsa
Дата 26.11.2008, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Рекомендую тебе использовать std::string, std::getline и std::stringstream. В этом случае, читаешь в строку типа string функцией getline, затем подсовываешь эту строку конструктору stringstream, читаешь из созданного потока данные, повторяешь все заново, пока не будет достигнут конец файла.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0434 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.