ต้องออกตัวก่อนว่าไม่ได้เรียนสายไอที แล้วก็งายโค้ดดิ้ง โปรแกรมมิ่งไม่ใช่อาชีพที่อยากทำเลยค่ะ แต่เจ้าตัววิชา oop in c++ ดันเป็นวิชาที่ต้องเรียนนี่สิ แล้วทีนี้มีการบ้านมา นอนตีสามเพราะการบ้านนี้มาสามคืนแล้วค่ะ หาเออเร่อไม่ได้ คอมไพล์ไม่ผ่าน ไม่รู้ทำไม
ข้อแรกค่ะ
#include <fstream>
#include <iostream>
#include <cmath>
#include <algorithm> // std::max
#include <string>
using namespace std;
int main()
{
ifstream infile("num.txt");
float num;
float total = 0.0f;
unsigned int count = 0;
float sumDiffSqr;
float stdDev;
float sum = 0, max = 0, min = 0;
// While infile successfully extracted numbers from the stream
while (infile >> num)
{
total += num;
++count;
sum += num;
if (min > num) min = num;
if (max < num) max = num;
}
// don't need the file anymore, close it
infile.close();
// test to see if anything was read (prevent divide by 0)
if (!count) {
std::cerr << "Couldn't read any numbers!" << std::endl;
return 1;
}
// give the average
sumDiffSqr = 0.;
for (num = 0; num < count; num++)
{
sumDiffSqr = sumDiffSqr + pow((num - (total / count)), 2);
}
stdDev = sqrt(sumDiffSqr/count);
std::cout << "The average is: " << total / count << std::endl;
std::cout << "The maximum is: " << max << std::endl;
std::cout << "The minimum is: " << min << std::endl;
std::cout << "The standard deviation is: " << stdDev << std::endl;
std::cout << "" << std::endl;
std::cout << "Press any key to continue... " << std::endl;
// pause the console
std::cin.sync();
std::cin.get();
getchar();
return 0;
}
เป็นโปรแกรมอ่านข้อมูลจากไฟล์ที่เป็นตัวเลข รับค่าได้ไม่จำกัด จากนั้นคำนวณหาค่า max min sd mean
สำหรับอันนี้ ตอนแรกเออเร่อคือเปิดไฟล์ไม่ได้เลย เลยลองลบบรรทัดนี้ไปค่ะ
// test to see if anything was read (prevent divide by 0)
if (!count) {
std::cerr << "Couldn't read any numbers!" << std::endl;
return 1;
}
ปรากฏว่ารันได้ แต่ข้อมูลตรงค่า min เป็น The minimum is 0 ทั้งๆ ที่ไฟล์ข้อมูลไม่มี 0 ค่ะ
ข้อสอง ให้เขียนโปรแกรมที่รับข้อมูลผ่านไฟล์ txt โดยให้แสดงผลออกมาทางหน้าจอ จากนั้นก็ให้คิดเกรดเฉลี่ยรวมของข้อมูลนั้นโดยให้ต่อท้ายข้อมูลเดิม
#include <iostream>
#include <fstream>
#include<iomanip>
using namespace std;
int main()
{
int array_size = 500;
char * array = new char[array_size];
int position = 0;
float g1, cr, gpa;
g1 = (1*4*6)+(0.5*4*4)+(0.5*3)+(2*4)+(1.5*3.5)+(1.5*3)+(1.5*4);
cr = (1*6)+(0.5*5)+(1.5*3)+2;
gpa= g1/cr;
ifstream fin("student2.txt");
if(fin.is_open())
{
while(!fin.eof() && position < array_size)
{
fin.get(array[position]);
position++;
}
array[position-1] = '\0';
for(int i = 0; array[i] != '\0'; i++)
{
cout << array[i];
}
cout << setprecision(2)<<fixed;
fstream myFile;
myFile.open("studentGPA.txt", ios::in);
myFile << "Your gpa is " << gpa << endl;
myFile.close();
}
else
{
cout << "File could not be opened." << endl;
}
return 0;
}
อันนี้รันไม่ขึ้น gpa ที่คำนวณให้ค่ะ
รบกวนหน่อยนะคะ ขอบคุณมากน้าา
ช่วยตรวจสอบโค้ดให้หน่อยค่ะ oop in c++
ข้อแรกค่ะ
#include <iostream>
#include <cmath>
#include <algorithm> // std::max
#include <string>
using namespace std;
int main()
{
ifstream infile("num.txt");
float num;
float total = 0.0f;
unsigned int count = 0;
float sumDiffSqr;
float stdDev;
float sum = 0, max = 0, min = 0;
// While infile successfully extracted numbers from the stream
while (infile >> num)
{
total += num;
++count;
sum += num;
if (min > num) min = num;
if (max < num) max = num;
}
// don't need the file anymore, close it
infile.close();
// test to see if anything was read (prevent divide by 0)
if (!count) {
std::cerr << "Couldn't read any numbers!" << std::endl;
return 1;
}
// give the average
sumDiffSqr = 0.;
for (num = 0; num < count; num++)
{
sumDiffSqr = sumDiffSqr + pow((num - (total / count)), 2);
}
stdDev = sqrt(sumDiffSqr/count);
std::cout << "The average is: " << total / count << std::endl;
std::cout << "The maximum is: " << max << std::endl;
std::cout << "The minimum is: " << min << std::endl;
std::cout << "The standard deviation is: " << stdDev << std::endl;
std::cout << "" << std::endl;
std::cout << "Press any key to continue... " << std::endl;
// pause the console
std::cin.sync();
std::cin.get();
getchar();
return 0;
}
สำหรับอันนี้ ตอนแรกเออเร่อคือเปิดไฟล์ไม่ได้เลย เลยลองลบบรรทัดนี้ไปค่ะ
if (!count) {
std::cerr << "Couldn't read any numbers!" << std::endl;
return 1;
}
ข้อสอง ให้เขียนโปรแกรมที่รับข้อมูลผ่านไฟล์ txt โดยให้แสดงผลออกมาทางหน้าจอ จากนั้นก็ให้คิดเกรดเฉลี่ยรวมของข้อมูลนั้นโดยให้ต่อท้ายข้อมูลเดิม
#include <fstream>
#include<iomanip>
using namespace std;
int main()
{
int array_size = 500;
char * array = new char[array_size];
int position = 0;
float g1, cr, gpa;
g1 = (1*4*6)+(0.5*4*4)+(0.5*3)+(2*4)+(1.5*3.5)+(1.5*3)+(1.5*4);
cr = (1*6)+(0.5*5)+(1.5*3)+2;
gpa= g1/cr;
ifstream fin("student2.txt");
if(fin.is_open())
{
while(!fin.eof() && position < array_size)
{
fin.get(array[position]);
position++;
}
array[position-1] = '\0';
for(int i = 0; array[i] != '\0'; i++)
{
cout << array[i];
}
cout << setprecision(2)<<fixed;
fstream myFile;
myFile.open("studentGPA.txt", ios::in);
myFile << "Your gpa is " << gpa << endl;
myFile.close();
}
else
{
cout << "File could not be opened." << endl;
}
return 0;
}
รบกวนหน่อยนะคะ ขอบคุณมากน้าา