Подскажите, задача в заполнение двумерного масива числами действительного типа. Когда ввожу целые все работает нормально, но при попытки записать даже самое простое дробное записывает непонятные значения в массив.
друк, #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; } 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; }
Странная, но забавная ошибка Кстати, очень маленькие/большие числа вводят так: x.xxxxE+yy или x.xxxxE-yy, к примеру 5.15E-26
почитай про типы данных, а так, для справки, int это целые числа, double и float уже можно дробные вводить, string буквы
#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; } 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; }