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

Программа не работает с вещественными числами - C++

Восстановить пароль Регистрация
 
zaqwerty
0 / 0 / 0
Регистрация: 14.12.2013
Сообщений: 108
10.05.2014, 10:48     Программа не работает с вещественными числами #1
Здравствуйте. Написал программу, которая выводит на экран квадратную матрицу порядка n (n=1...15 - порядок задается пользователем) и ненулевые элементы этой матрицы. Причем матрица заполняется не с помощью генератора случайных чисел, а с помощью ручного ввода каждого ее элемента.

Дело в том, что, когда я ввожу целые числа ( то есть задаю значения элементов матрицы), то программа работает нормально. Но если я ввожу нецелое число, то программа начинает работать некорректно. Как можно исправить эту ошибку?

Код программы представлен ниже:
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
#include <stdio.h>// îáúÿâëåГ*ГЁГҐ Г§Г*ãîëîâî÷Г*ûõ ГґГ*éëîâ
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <locale.h>
#include <iostream> 
#define SIZE 15
int main()// ГЈГ«Г*ГўГ*Г*Гї ГґГіГ*êöèÿ; Г*Г*Г·Г*ëî ïðîãðГ*ììû
{   using namespace std;
setlocale(LC_ALL,"Russian");//ГґГіГ*êöèÿ, Г*åîáõîäèìГ*ÿäëÿîòîáðГ*æåГ*èÿðóññêîãîÿçûêГ*ГўГЄГ®Г*ñîëè
int i, j, n, a[SIZE][SIZE]; 
char c;
    printf ("Õîòèòå âûïîëГ*ГЁГІГј ïîèñê ГЁГ*äåêñîâ Г*ГҐГ*óëåâûõ ýëåìåГ*òîâ Г¬Г*Г±Г±ГЁГўГ*?\n 1) Г„Г*\n 2) Âûõîä\n");
    scanf("%d",&c);
    switch (c)
{case 1:
 
    {
 
printf("Ââåäèòå ÷èñëî îò 1 äî 15 \n");
    scanf("%d",&n); 
if((n<1)||(n>15))
{
printf("Íåîáõîäèìî ГўГўГҐГ±ГІГЁ ÷èñëî n Гў ГЁГ*òåðâГ*ëå îò 1 äî 15");
return 0;
    }
else
 
 
for (i=0;  i<n; i++)
 
    {
        for (j=0;  j<n;  j++)
{
printf("Ââåäèòå ýëåìåГ*ГІГ» Г¬Г*òðèöû \n"); 
printf("a[%d][%d]=",i+1,j+1);
scanf("%d",&a[i][j]);
 
}
        printf("\n");
    }
    for (i = 0; i < n; i++)
{
    for (j = 0; j < n; j++) printf("%4d", a[i][j]);
    printf("\n");
}
 
 
   for (i = 0; i < n; i++)
{
    for (j = 0; j < n; j++) 
if (a[i][j]!=0)
    printf("ГЌГҐГ*óëåâîé ýëåìåГ*ГІ a[%d][%d]=%d\n", i+1, j+1, a[i][j]);
    printf("\n");
}break;}
case 2:
    {printf("Áóäåò âûïîëГ*ГҐГ* âûõîä ГЁГ§ ïðîãðГ*ììû. ГЌГ*æìèòå ëþáóþ ГЄГ«Г*ГўГЁГёГі");
    
    break;}
    default: printf("Íåîáõîäèìî âûáðГ*ГІГј äåéñòâèå 1 èëè äåéñòâèå 2. ГЌГ*æìèòå ëþáóþ ГЄГ«Г*ГўГЁГёГі ");
 
}}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2014, 10:48     Программа не работает с вещественными числами
Посмотрите здесь:

Заполнение массива вещественными числами с двумя знаками после запятой C++
Реализация арифметических операций над вещественными числами C++
C++ Не работает программа которая находит минимальный элемент в одномерном массиве из 10 элементов, заполненном случайными числами от 1 до 30
C++ Заполнить файл N вещественными случайными числами, найти минимальное значение и вывести его на экран
C++ Перемножение квадратных матриц с вещественными числами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
pav1uxa
1713 / 1553 / 600
Регистрация: 23.01.2014
Сообщений: 5,607
Завершенные тесты: 1
10.05.2014, 11:40     Программа не работает с вещественными числами #2
Цитата Сообщение от zaqwerty Посмотреть сообщение
Но если я ввожу нецелое число, то программа начинает работать некорректно. Как можно исправить эту ошибку?
Потому что
Цитата Сообщение от zaqwerty Посмотреть сообщение
C++
1
int a[SIZE][SIZE];
и
Цитата Сообщение от zaqwerty Посмотреть сообщение
C++
1
scanf("%d",&a[i][j]);
int , как и %d это целое число.
Ryuk
 Аватар для Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 869
10.05.2014, 11:44     Программа не работает с вещественными числами #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
zaqwerty, для чисел с "плавающей запятой" тип float и для ввода используйте флаг %f.
Пример: float k; scanf("%f", &k); printf("%f", k);
zaqwerty
0 / 0 / 0
Регистрация: 14.12.2013
Сообщений: 108
10.05.2014, 11:50  [ТС]     Программа не работает с вещественными числами #4
pav1uxa, а можно ли сделать так, чтобы программа воспринимала и целые, и вещественные числа?

Добавлено через 1 минуту
Ryuk, а можно ли сделать так, чтобы программа воспринимала и целые, и вещественные числа?

Добавлено через 1 минуту
Ryuk, pav1uxa, то есть я имею в виду, как сделать так, чтобы я мог заполнять матрицу и вещественными, и целыми числами?
Ryuk
 Аватар для Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 869
10.05.2014, 12:03     Программа не работает с вещественными числами #5
zaqwerty, int не может хранить дробные числа, а т.к. float хранит дробные числа, то ваше число 20 типа int будет записано в float'е в формате 20.0.
Yandex
Объявления
10.05.2014, 12:03     Программа не работает с вещественными числами
Ответ Создать тему
Опции темы

Текущее время: 21:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru