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

В группе студентов определи средний балл каждого за последнюю сессию, распечатать Ф.И.О. студентов со средним баллом не меньше 4, остальных рассор - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Разработать программу содержащую 2 потока с подсчетом периметров фигур http://www.cyberforum.ru/cpp-beginners/thread610669.html
Здраствуйте! помогите пожалуйста с решением задачки: Разработать программу, содержащую 2 треда (потока). 1 тред считает периметр вписанной фигуры. 2 тред - описанной фигуры. Каждый потом, на каждом шаге своего выполнения, принимая периметр фигуры за приближенную длину окружности рассчитывают число П и выводит его на экран. Функции: CreateThread - создание треда CreateMutel,...
C++ Вывести все слова во введенном предложении помогите,пожалуйста,с лабой.ужвсно не успеваю все сделать,вот условие: Вывести все слова(непустая пос-ность символов,не содержащих пробелы) во введенном предложении (и их количество) ,которые имеют четную длину,и содержат в качестве подстроки последнее слово. буду аццки благодарен,если кто-нибудь исхитрицца еще и на паскале ее написать:senor: http://www.cyberforum.ru/cpp-beginners/thread610595.html
C++ Массив в классе
#include <iostream> #include <conio.h> #include <stdlib.h> using namespace std; class Vector { public:
C++ Рандомное изменение двух последних цифр в двоичном числе
Здраствуйте, возник следующий неразрешимый вопрос. Есть двоичное число: 1111111 11 - нужно что бы две последних цифры рандомно изменялись от 0 до 1 - например: 1111111 01 или 111111 00 и т.д. Слышал что нужно Shipt left() использовать и ещё что-то, но как именно никак не могу сообразить. Помогите пожалуйста!
C++ Вычисление суммы арифметической прогрессии рекуррентным способом http://www.cyberforum.ru/cpp-beginners/thread610562.html
Помогите пожалуйста, нужно написать функцию целого типа, вычисляющую сумму арифметической прогрессии рекуррентным способом. Заранее спасибо.
C++ непонятки с asio в инете набрел на сайт: http://think-async.com/ тут вродебы увидел asio каторый идет отдельно не с boost-ом вот кстати и выдержка с этого сайта — Asio is header-file-only and for most uses does not require linking against any Boost library. Boost.Asio always requires that you link against the Boost.System library, and also against Boost.Thread if you want to launch threads using boost::thread.... подробнее

Показать сообщение отдельно
zitxbit
Master C/C++
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
21.06.2012, 10:41
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
103
104
105
106
107
108
109
110
111
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
 
#include <fstream>
 
typedef struct Student
{
    char name[256];
    int* grades;
    int count;
    double average;
} STUDENT;
 
#define N 100
 
using namespace std;
 
void swap(STUDENT& s1, STUDENT& s2);
 
int main()
{
    const char* filename[2] = { "d:\\input.txt", "d:\\output.txt" };
    ifstream ifs(filename[0],ifstream::in);
    ofstream ofs(filename[1],ofstream::out);
    
    STUDENT* pStudents = new STUDENT[N];
    memset((void*)pStudents, 0x00, sizeof(STUDENT) * N);
 
    char* line = new char[256]; int x = 0;
    while (ifs.peek() >= 0 && ifs.getline(line,256))
    {
        char* buf = NULL; 
        char name[256] = "\0", data[256] = "\0";
        if ((buf = strstr(line," #")) != NULL)
        {
            int i = 0, k = 0;
            while (*line != *buf) name[i++] = *line++;
            while (!isdigit(*line)) *line++;
 
            strcpy(pStudents[x].name,name);
 
            int q = 0, *grades = new int[256];
            char* value = strtok(line,",");
            while (value != NULL && q < 256)
            {
                grades[q++] = atoi(value);
                value = strtok(NULL,",");
            }
 
            pStudents[x].grades = new int[q];
            memcpy((void*)pStudents[x].grades, grades, sizeof(int) * q);
 
            pStudents[x].count = q;
 
            delete[] grades;
        }
 
        x++;
    }
 
    STUDENT* pStudents2 = new STUDENT[N];
    memset((void*)pStudents2, 0x00, sizeof(STUDENT) * N);
 
    for (int i = 0, d = 0; strcmp("\0",pStudents[i].name) < 0; i++)
    {
        double nAvg = 0.0;
        for (int k = 0; k < pStudents[i].count; k++)
            nAvg+=(double)pStudents[i].grades[k] / pStudents[i].count;
 
        pStudents[i].average = nAvg;
        if (pStudents[i].average >= 4.0)
        {
            ofs << pStudents[i].name << " - ";
            for (int q = 0; q < pStudents[i].count; q++)
                ofs << pStudents[i].grades[q] << " ";
            ofs << "avg = " << pStudents[i].average << endl;
        }
 
        else pStudents2[d++] = pStudents[i];
    }
 
    for (int t1 = 0; strcmp("\0",pStudents2[t1].name) < 0; t1++)
    {
        int max = t1;
        for (int t2 = t1+1; strcmp("\0",pStudents2[t2].name) < 0; t2++)
            max = (pStudents2[t2].average > pStudents2[max].average) ? t2 : max;
        swap(pStudents2[t1],pStudents2[max]);
    }
 
    ofs << endl;
 
    for (int z1 = 0; strcmp("\0",pStudents2[z1].name) < 0; z1++)
    {
        ofs << pStudents2[z1].name << " # ";
        for (int z2 = 0; z2 < pStudents2[z1].count; z2++)
            ofs << pStudents2[z1].grades[z2] << " ";
        ofs << "avg = " << pStudents2[z1].average << endl;
    }
 
    ifs.close();
    ofs.close();
 
    _getch();
 
    return 0;
}
 
void swap(STUDENT& s1, STUDENT& s2)
 { STUDENT _ts = s1; s1 = s2; s2 = _ts; }
INPUT.TXT:
Ivanov # 4,5,3,5,4
Petrov # 5,4,4,5,3
Sidorov # 4,4,4,4,3
Sedov # 5,5,5,5,5
Smirnov # 3,3,3,3,3
Gladkov # 5,5,4,5,5
Stepanov # 4,4,5,5,5
Kirilov # 4,4,4,4,4
Nikolaev # 3,3,3,5,3
Dezhnev # 5,5,5,5,5
Sviridov # 3,4,4,5,4
Dritriev # 3,3,3,3,3
Tokarev # 5,5,5,5,3
Zuev # 4,4,4,5,5
Lomov # 5,5,4,5,5
Lokotev # 3,3,3,5,4
Petrenko # 3,4,4,4,5
Nikonov # 4,5,3,3,3

OUTPUT.TXT:
Ivanov - 4 5 3 5 4 avg = 4.2
Petrov - 5 4 4 5 3 avg = 4.2
Sedov - 5 5 5 5 5 avg = 5
Gladkov - 5 5 4 5 5 avg = 4.8
Stepanov - 4 4 5 5 5 avg = 4.6
Kirilov - 4 4 4 4 4 avg = 4
Dezhnev - 5 5 5 5 5 avg = 5
Sviridov - 3 4 4 5 4 avg = 4
Tokarev - 5 5 5 5 3 avg = 4.6
Zuev - 4 4 4 5 5 avg = 4.4
Lomov - 5 5 4 5 5 avg = 4.8
Petrenko - 3 4 4 4 5 avg = 4

Sidorov # 4 4 4 4 3 avg = 3.8
Nikonov # 4 5 3 3 3 avg = 3.6
Lokotev # 3 3 3 5 4 avg = 3.6
Nikolaev # 3 3 3 5 3 avg = 3.4
Dritriev # 3 3 3 3 3 avg = 3
Smirnov # 3 3 3 3 3 avg = 3
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru