fork download
  1. #include <stdio.h>
  2. import React from 'react';
  3. import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer } from 'recharts';
  4. import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card';
  5.  
  6. const StudentComparison = () => {
  7. const data = [
  8. { name: "1. สมภพ", term1: 30, term2: 90 },
  9. { name: "2. ประวีร์", term1: 34, term2: 93 },
  10. { name: "3. ภูดนัย", term1: 43, term2: 92 },
  11. { name: "4. ณัชพล", term1: 56, term2: 93 },
  12. { name: "5. อรรณวินทร์", term1: 30, term2: 94 },
  13. { name: "6. ธีรเมธ", term1: 30, term2: 95 },
  14. { name: "7. รัชชานนท์", term1: 45, term2: 95 },
  15. { name: "8. พิชญนันธ์", term1: 34, term2: 95 },
  16. { name: "9. พีรพัฒน์", term1: 43, term2: 94 },
  17. { name: "10. ณัชฐปกรณ์", term1: 45, term2: 95 },
  18. { name: "11. พสธร", term1: 50, term2: 95 },
  19. { name: "12. ภูชิสส์", term1: 45, term2: 94 },
  20. { name: "13. อิทธิกร", term1: 45, term2: 96 },
  21. { name: "14. ชวนากร", term1: 45, term2: 95 },
  22. { name: "15. จิรกิตต์", term1: 40, term2: 95 },
  23. { name: "16. ภคพงษ์", term1: 37, term2: 95 },
  24. { name: "17. ณัฐวุฒิ", term1: 36, term2: 94 },
  25. { name: "18. ธนปกร", term1: 35, term2: 93 },
  26. { name: "19. สิรภัค", term1: 35, term2: 91 },
  27. { name: "20. จีรพัฒน์", term1: 44, term2: 93 },
  28. { name: "21. ปรมะ", term1: 30, term2: 95 },
  29. { name: "22. ธนากร", term1: 44, term2: 94 },
  30. { name: "23. ธนโชติ", term1: 45, term2: 90 },
  31. { name: "24. พีรพัฒน์", term1: 35, term2: 95 },
  32. { name: "25. ภูมิรัตน์", term1: 34, term2: 96 },
  33. { name: "26. ธนวรรธน์", term1: 33, term2: 95 },
  34. { name: "27. เพชรากร", term1: 46, term2: 95 },
  35. { name: "28. ชนาภัทร", term1: 47, term2: 97 },
  36. { name: "29. อารยา", term1: 45, term2: 95 },
  37. { name: "30. อัญญรินทร์", term1: 45, term2: 95 },
  38. { name: "31. สิริกร", term1: 46, term2: 95 },
  39. { name: "32. กัญญพัชร", term1: 45, term2: 95 },
  40. { name: "33. จันทรา", term1: 44, term2: 92 },
  41. { name: "34. ไอรดา", term1: 43, term2: 93 },
  42. { name: "35. นัทธมณ", term1: 45, term2: 91 },
  43. { name: "36. พิมพ์ชนก", term1: 46, term2: 92 },
  44. { name: "37. พิชญาภา", term1: 44, term2: 95 },
  45. { name: "38. ทัศนาวรรณ์", term1: 45, term2: 95 },
  46. { name: "39. เพ็ญพิชา", term1: 40, term2: 95 },
  47. { name: "40. ชิตากาญจน์", term1: 55, term2: 95 },
  48. { name: "41. ประภัสสร", term1: 56, term2: 93 },
  49. { name: "42. กานต์สินี", term1: 45, term2: 90 },
  50. { name: "43. ปิยะเนตร", term1: 44, term2: 95 },
  51. { name: "44. นิศรา", term1: 45, term2: 95 },
  52. { name: "45. อรสา", term1: 54, term2: 94 },
  53. { name: "46. อารีรัตน์", term1: 46, term2: 95 }
  54. ];
  55.  
  56. // คำนวณค่าเฉลี่ยแต่ละภาคเรียน
  57. const averageTerm1 = (data.reduce((acc, curr) => acc + curr.term1, 0) / data.length).toFixed(2);
  58. const averageTerm2 = (data.reduce((acc, curr) => acc + curr.term2, 0) / data.length).toFixed(2);
  59.  
  60. return (
  61. <Card className="w-full max-w-6xl">
  62. <CardHeader>
  63. <CardTitle>กราฟเปรียบเทียบผลการเรียนรายภาคเรียน</CardTitle>
  64. </CardHeader>
  65. <CardContent>
  66. <div className="space-y-4">
  67. <div className="text-sm space-y-2">
  68. <p>ค่าเฉลี่ยภาคเรียนที่ 1: {averageTerm1}%</p>
  69. <p>ค่าเฉลี่ยภาคเรียนที่ 2: {averageTerm2}%</p>
  70. </div>
  71. <div className="h-96">
  72. <ResponsiveContainer width="100%" height="100%">
  73. <LineChart
  74. data={data}
  75. margin={{
  76. top: 5,
  77. right: 30,
  78. left: 20,
  79. bottom: 150
  80. }}
  81. >
  82. <CartesianGrid strokeDasharray="3 3" />
  83. <XAxis
  84. dataKey="name"
  85. angle={-45}
  86. textAnchor="end"
  87. height={100}
  88. />
  89. <YAxis
  90. domain={[0, 100]}
  91. label={{ value: 'เปอร์เซ็นต์ (%)', angle: -90, position: 'insideLeft' }}
  92. />
  93. <Tooltip />
  94. <Legend />
  95. <Line
  96. type="monotone"
  97. dataKey="term1"
  98. name="ภาคเรียนที่ 1"
  99. stroke="#8884d8"
  100. dot={{ r: 2 }}
  101. />
  102. <Line
  103. type="monotone"
  104. dataKey="term2"
  105. name="ภาคเรียนที่ 2"
  106. stroke="#82ca9d"
  107. dot={{ r: 2 }}
  108. />
  109. </LineChart>
  110. </ResponsiveContainer>
  111. </div>
  112. </div>
  113. </CardContent>
  114. </Card>
  115. );
  116. };
  117.  
  118. export default StudentComparison;
Success #stdin #stdout 0.02s 25688KB
stdin
Standard input is empty
stdout
#include <stdio.h>
import React from 'react';
import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer } from 'recharts';
import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card';

const StudentComparison = () => {
  const data = [
    { name: "1. สมภพ", term1: 30, term2: 90 },
    { name: "2. ประวีร์", term1: 34, term2: 93 },
    { name: "3. ภูดนัย", term1: 43, term2: 92 },
    { name: "4. ณัชพล", term1: 56, term2: 93 },
    { name: "5. อรรณวินทร์", term1: 30, term2: 94 },
    { name: "6. ธีรเมธ", term1: 30, term2: 95 },
    { name: "7. รัชชานนท์", term1: 45, term2: 95 },
    { name: "8. พิชญนันธ์", term1: 34, term2: 95 },
    { name: "9. พีรพัฒน์", term1: 43, term2: 94 },
    { name: "10. ณัชฐปกรณ์", term1: 45, term2: 95 },
    { name: "11. พสธร", term1: 50, term2: 95 },
    { name: "12. ภูชิสส์", term1: 45, term2: 94 },
    { name: "13. อิทธิกร", term1: 45, term2: 96 },
    { name: "14. ชวนากร", term1: 45, term2: 95 },
    { name: "15. จิรกิตต์", term1: 40, term2: 95 },
    { name: "16. ภคพงษ์", term1: 37, term2: 95 },
    { name: "17. ณัฐวุฒิ", term1: 36, term2: 94 },
    { name: "18. ธนปกร", term1: 35, term2: 93 },
    { name: "19. สิรภัค", term1: 35, term2: 91 },
    { name: "20. จีรพัฒน์", term1: 44, term2: 93 },
    { name: "21. ปรมะ", term1: 30, term2: 95 },
    { name: "22. ธนากร", term1: 44, term2: 94 },
    { name: "23. ธนโชติ", term1: 45, term2: 90 },
    { name: "24. พีรพัฒน์", term1: 35, term2: 95 },
    { name: "25. ภูมิรัตน์", term1: 34, term2: 96 },
    { name: "26. ธนวรรธน์", term1: 33, term2: 95 },
    { name: "27. เพชรากร", term1: 46, term2: 95 },
    { name: "28. ชนาภัทร", term1: 47, term2: 97 },
    { name: "29. อารยา", term1: 45, term2: 95 },
    { name: "30. อัญญรินทร์", term1: 45, term2: 95 },
    { name: "31. สิริกร", term1: 46, term2: 95 },
    { name: "32. กัญญพัชร", term1: 45, term2: 95 },
    { name: "33. จันทรา", term1: 44, term2: 92 },
    { name: "34. ไอรดา", term1: 43, term2: 93 },
    { name: "35. นัทธมณ", term1: 45, term2: 91 },
    { name: "36. พิมพ์ชนก", term1: 46, term2: 92 },
    { name: "37. พิชญาภา", term1: 44, term2: 95 },
    { name: "38. ทัศนาวรรณ์", term1: 45, term2: 95 },
    { name: "39. เพ็ญพิชา", term1: 40, term2: 95 },
    { name: "40. ชิตากาญจน์", term1: 55, term2: 95 },
    { name: "41. ประภัสสร", term1: 56, term2: 93 },
    { name: "42. กานต์สินี", term1: 45, term2: 90 },
    { name: "43. ปิยะเนตร", term1: 44, term2: 95 },
    { name: "44. นิศรา", term1: 45, term2: 95 },
    { name: "45. อรสา", term1: 54, term2: 94 },
    { name: "46. อารีรัตน์", term1: 46, term2: 95 }
  ];

  // คำนวณค่าเฉลี่ยแต่ละภาคเรียน
  const averageTerm1 = (data.reduce((acc, curr) => acc + curr.term1, 0) / data.length).toFixed(2);
  const averageTerm2 = (data.reduce((acc, curr) => acc + curr.term2, 0) / data.length).toFixed(2);

  return (
    <Card className="w-full max-w-6xl">
      <CardHeader>
        <CardTitle>กราฟเปรียบเทียบผลการเรียนรายภาคเรียน</CardTitle>
      </CardHeader>
      <CardContent>
        <div className="space-y-4">
          <div className="text-sm space-y-2">
            <p>ค่าเฉลี่ยภาคเรียนที่ 1: {averageTerm1}%</p>
            <p>ค่าเฉลี่ยภาคเรียนที่ 2: {averageTerm2}%</p>
          </div>
          <div className="h-96">
            <ResponsiveContainer width="100%" height="100%">
              <LineChart
                data={data}
                margin={{
                  top: 5,
                  right: 30,
                  left: 20,
                  bottom: 150
                }}
              >
                <CartesianGrid strokeDasharray="3 3" />
                <XAxis
                  dataKey="name"
                  angle={-45}
                  textAnchor="end"
                  height={100}
                />
                <YAxis
                  domain={[0, 100]}
                  label={{ value: 'เปอร์เซ็นต์ (%)', angle: -90, position: 'insideLeft' }}
                />
                <Tooltip />
                <Legend />
                <Line
                  type="monotone"
                  dataKey="term1"
                  name="ภาคเรียนที่ 1"
                  stroke="#8884d8"
                  dot={{ r: 2 }}
                />
                <Line
                  type="monotone"
                  dataKey="term2"
                  name="ภาคเรียนที่ 2"
                  stroke="#82ca9d"
                  dot={{ r: 2 }}
                />
              </LineChart>
            </ResponsiveContainer>
          </div>
        </div>
      </CardContent>
    </Card>
  );
};

export default StudentComparison;