Загрузка...

How to accept a fractional expression when typing from the keyboard?

Thread in C/C++ created by krip9 Dec 2, 2022. 191 view

  1. krip9
    krip9 Topic starter Dec 2, 2022 5 Aug 16, 2021
    Подскажите, задача в заполнение двумерного масива числами действительного типа. Когда ввожу целые все работает нормально, но при попытки записать даже самое простое дробное записывает непонятные значения в массив.
     
  2. друк
    код покажешь может
     
    1. krip9 Topic starter
      друк,
      C
      #include "stdafx.h"
      #include <stdlib.h>
      #include <locale.h>
      #include <math.h>
      #include "iostream"
      #include <conio.h>
      using namespace std;
      const int M = 2;
      const int N = 7;
      double sum;
      int k;

      int main()
      {
      setlocale(LC_ALL, "ukr");
      cout << endl << "Введите значения" << endl;

      int c[N][M];
      int i, j;

      for (j = 0; j < M; j++)
      {
      for (i = 0; i < N; i++)
      cin >> c[i][j];
      }

      cout << endl << "Введенный массив:" << endl;
      for (j = 0; j < M; j++)
      {
      for (i = 0; i < N; i++)
      cout << c[i][j] << " ";
      cout << endl;
      }
      cout << endl << "Все положительные элементы:" << endl;
      for (j = 0; j < M; j++)
      {
      for (i = 0; i < N; i++)
      if (c[i][j] > 0)
      {
      cout << c[i][j] << " ";
      cout << endl;

      }
      }


      for (j = 0; j < M; j++)

      {
      for (i = 0; i < N; i++)
      if (c[i][j] > 0)
      {

      sum += c[i][j];
      k++;

      }
      }
      if (k == 0)
      {
      cout << "Нет положительных" << endl;
      }
      else cout << "Сумма положительных: " << sum << endl;

      system("Pause");
      return 0;


      }
    2. leha_zabor
      krip9,
      поменяй на double
    3. krip9 Topic starter
  3. leha_zabor
    leha_zabor Dec 2, 2022 24 Jul 12, 2020
    тип данных поменяй на с плавающей точкой, числа вводи через точку
     
  4. Celeste
    Celeste Dec 2, 2022 ♕Climbing for strawberries and finding myself...♕ 9694 Oct 26, 2021
    Странная, но забавная ошибка
    Кстати, очень маленькие/большие числа вводят так: x.xxxxE+yy или x.xxxxE-yy, к примеру 5.15E-26
     
    1. LVV
      Celeste, вводят как удобно, пока не падает под ограничения типа данных
  5. енотик
    енотик Dec 2, 2022 11,704 Jun 19, 2022
    почитай про типы данных, а так, для справки, int это целые числа, double и float уже можно дробные вводить, string буквы
     
  6. Joker9019
    Joker9019 Dec 5, 2022 Banned 3 Nov 27, 2022
    C

    #include <iostream>

    #include <cstdlib>

    #include <ctime>

    using namespace std;

    int main()

    {

    int n, m;

    cout << "Введите количество строк и столбцов двумерного массива: ";

    cin >> n >> m;

    // Создаем двумерный массив

    double **arr;

    arr = new double*[n];

    for (int i = 0; i < n; ++i)

    arr[i] = new double[m];

    // Заполняем массив случайными числами

    srand(time(nullptr));

    for (int i = 0; i < n; ++i)

    for (int j = 0; j < m; ++j)

    arr[i][j] = (double)rand() / RAND_MAX;

    // Выводим массив

    for (int i = 0; i < n; ++i) {

    for (int j = 0; j < m; ++j)

    cout << arr[i][j] << ' ';

    cout << endl;

    }

    // Удаляем массив

    for (int i = 0; i < n; ++i)

    delete[] arr[i];

    delete[] arr;

    return 0;

    }
     
Top
Loading...