Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
zaqwerty
2 / 2 / 1
Регистрация: 14.12.2013
Сообщений: 113
#1

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

10.05.2014, 10:48. Просмотров 282. Ответов 4
Метки нет (Все метки)

Здравствуйте. Написал программу, которая выводит на экран квадратную матрицу порядка 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. ГЌГ*æìèòå ëþáóþ ГЄГ«Г*ГўГЁГёГі ");
 
}}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2014, 10:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программа не работает с вещественными числами (C++):

Генерация массива случайными вещественными числами - C++
Дан одномерный вещественный массив из N элементов (N – нечетное), заданных случайными числами на промежутке [a; b). Значения N, a, b...

Задать массив с целыми и вещественными числами. С++ - C++
Как задать массив, в который можно записать и целые и вещественные числа? Здесь с целыми все в порядке, но естественно не распознает с...

Перемножение квадратных матриц с вещественными числами - C++
Что-то никак не могу найти ошибку: #define _CRT_SECURE_NO_WARNINGS #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string&gt; ...

Как задать одномерный массив с n вещественными числами? - C++
Перерыла много тем, не могу понять как задать одномерный массив с n вещественными числами. Причем в задании не сказано от какого интервала...

Реализация арифметических операций над вещественными числами - C++
Здравствуйте. Помогите пожалуйста реализовать алгоритмы арифметических операций(+ - * /) над вещественными числами на любом языке...

Заполнение двух динамических массивов случайными вещественными числами - C++
У массивов получаются одинаковые значения, почему? Что посоветуете? #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; using...

4
pav1uxa
1847 / 1700 / 644
Регистрация: 23.01.2014
Сообщений: 6,079
Завершенные тесты: 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 это целое число.
1
Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 871
10.05.2014, 11:44 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
zaqwerty, для чисел с "плавающей запятой" тип float и для ввода используйте флаг %f.
Пример: float k; scanf("%f", &k); printf("%f", k);
1
zaqwerty
2 / 2 / 1
Регистрация: 14.12.2013
Сообщений: 113
10.05.2014, 11:50  [ТС] #4
pav1uxa, а можно ли сделать так, чтобы программа воспринимала и целые, и вещественные числа?

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

Добавлено через 1 минуту
Ryuk, pav1uxa, то есть я имею в виду, как сделать так, чтобы я мог заполнять матрицу и вещественными, и целыми числами?
0
Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 871
10.05.2014, 12:03 #5
zaqwerty, int не может хранить дробные числа, а т.к. float хранит дробные числа, то ваше число 20 типа int будет записано в float'е в формате 20.0.
1
10.05.2014, 12:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.05.2014, 12:03
Привет! Вот еще темы с ответами:

Заполнение массива вещественными числами с двумя знаками после запятой - C++
Здравствуйте! Я только начала работать в С++ и не знаю как заполнить одномерный массив из 10 элементов вещественными числами в диапазоне от...

Написать функцию используя шаблоны функций, организуйте ее работу с целыми и вещественными числами - C++
Написать функцию используя шаблоны функций, организуйте ее работу с целыми и вещественными числами. Организовать ее вызов в главной функции...

Класс MyMath обеспечивающий выполнение операций сравнения над двумя вещественными числами - C++
Класс должен включать в себя поля x и y (числа, над которыми выполняются операции), а также следующие методы: • bool isequal() –...

Написать функцию, используя шаблоны функций, организуйте ее работу с целыми и вещественными числами - C++
Написать функцию, используя шаблоны функций, организуйте ее работу с целыми и вещественными числами. Организовать ее вызов в главной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.