Вывод текста в классе си++

102
21 января 2021, 01:50

Подскажите, пожалуйста, как вывести текст в классе.

#define  _CRT_SECURE_NO_WARNINGS  
#include <stdio.h> 
#include <conio.h> 
#include <math.h> 
#include <iostream> 
#include <iomanip>
class massiv {
private:
    int kol;
    int min, max;
public:
    void set_kol(int n)
    {
        kol = n;
    }
    void vvod(float *arr, int n) {
        for (int i = 0; i < n; i++) {
            do {
                printf("a[%d] = ", i);
                std::cin >> arr[i];
                if (arr[i] < 100 && arr[i] > -100) break;
                else printf("Не двузначное \n");
            } while (1);
        }
        std::cout << std::endl;
        for (int i = 0; i < n; i++) {
            std::cout << arr[i] << std::endl;
        }
    }
    void set_min_max(int x1, int x2)
    {
        min = x1;
        max = x2;
    }
    void sredznach(float min, float max, float *arr, int n) {
        float  summ = 0, j = 0;
        for (int i = 0; i < n; i++) {
            if ((min <= arr[i]) && (arr[i] <= max)) {
                j++;
                summ += arr[i];
            }
        }
        if (j != 0) std::cout<<"Cреднее значение: " << setw(2)<< (summ / j);
    }
    void maxium( float *arr, int n, float x1, float x2)
    {
        float maxx = -1e38;
        for (int i = 0; i < n; i++) {
            if (arr[i] >= min && arr[i] <= max && maxx <= arr[i]) {
                maxx = arr[i];
            }
        }
        std::cout << maxx;
    }
};
using namespace std;
int main() {
    setlocale(LC_ALL, "Rus");
    int i, n, x1, x2;
    system("cls");
    printf("Привет! Введи размер массива (не более 16): ");
    while (1) {
        scanf("%d", &n);
        if (n > 1 && n < 17) {
            printf("Число элементов массива = %d \n\n", n);
            break;
        }
        else {
            printf("Попробуй еще раз. Помни! Не больше 16 элементов: \t");
        }
    }
    massiv A;
    float *a;
    a = new float[n];
    A.set_kol(n);
    A.vvod(a, n);
    printf("Введи нижний порог интервала:");
    scanf("%f", &x1);
    printf("Введи верхний порог интервала:");
    scanf("%f", &x2);
    A.set_min_max(x1, x2);
    A.sredznach(x1, x2, a, n);
    A.maxium( a, n, x1, x2);
    _getch();
    return 0;
}

Где я допустила логическую ошибку, что в maxium выводится -1+38. А #include <iomanip> не работает ( setw() мне нужен, чтобы вывести число в формате цц.цц)? И еще один вопрос: можно ли было запихнуть функцию, написанную вне класса, в любой метод класса или ее надо создавать только в классе?

Answer 1
  1. В функции main x1, x2 являются типом int, а считывается в них float,и поэтому считывается в них ересь(потому и не ищется maximum).
  2. Тебе нужен setprecision() а не setw()
  3. Можно. Главное чтобы она или её прототип был описан до определения метода.
READ ALSO
QLineEdit в центре QGridLayout ячейки

QLineEdit в центре QGridLayout ячейки

Имеется такой кодСоздается массив фреймов и массив QLineEdit

106
Обработка вариативного массива с++

Обработка вариативного массива с++

Подскажите плз как правильно передать вариативный массив в процедуру печати, если приходит args=(char const (&)[32])

118
Структуры, ошибка vector Out of range [закрыт]

Структуры, ошибка vector Out of range [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

143
Наложение иконки на изображение

Наложение иконки на изображение

Крч, дело такое, верстаю себе лендинг, и тут откуда не возьмись появился в

129