 |
|
Как правильно задать тип данных в массиве
Вот сталкнулся с такой вот непоняткой и чёт не как не пойму в чём дело вообщем есть вот такая задача:
Дана матрица 10:10. Элементы чётных столбцов разделить на максимальный элемент матрици,а не чётных умножить на минимальный.
Сам алгоритм выполняется верно, только вот не пойму почему то работает только с " int — выражение целого типа",
а если задаю к примеру " double- знач. с плавающей точкой" или " float" то получается просто ерунда кака ето :)
Все значения сгенерируемой матрици заменяются " 0"
Где ошибка не пойму может нужно в проверке так же задавать тип не int а double или float ?
Код:
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
int main()
{
int arr[10][10];
int i,j;
randomize;
for(i = 0; i < 10; i++)
for(j = 0; j < 10; j++)
{
arr[i][j]=1+random(10);
}
printf("Massiv: n \n\n");
for(i = 0; i < 10; i++)
{
for(j = 0; j < 10; j++)
printf("%3i ",arr[i][j]);
if(j % 10 == 0)
cout<<endl;
printf("\n");
}
//максимальный элемент
int ZnachenieElementaMAX = arr[0][0];
for(i = 0; i < 10; i++)
for(j = 0; j < 10; j++)
{
if(ZnachenieElementaMAX <= arr[i][j])
{
ZnachenieElementaMAX = arr[i][j];
}
}
//Проверка
cout<<"ZnachenieElementaMAX = "<<ZnachenieElementaMAX<<endl;
//минимальный элемент
int ZnachenieElementaMIN = arr[0][0];
for(i = 0; i < 10; i++)
for(j = 0; j < 10; j++)
{
if(ZnachenieElementaMIN >= arr[i][j])
{
ZnachenieElementaMIN = arr[i][j];
}
}
//Проверка
cout<<"ZnachenieElementaMIN = "<<ZnachenieElementaMIN<<endl;
for(j = 0; j < 10; j++)
{
//операция с четными столбцами
if(j%2 == 0){
for(i = 0; i < 10; i++)
arr[i][j] *= ZnachenieElementaMAX;
}
}
for(j = 0; j < 10; j++){
//операция с не четными столбцами
if(j % 2 != 0){
for(i = 0; i < 10; i++)
arr[i][j] /= ZnachenieElementaMIN;
}
}
printf("Massiv: n \n\n");
for(i = 0; i < 10; i++)
{
for(j = 0; j < 10; j++)
printf("%3i ",arr[i][j]);
if(j % 10 == 0)
cout<<endl;
printf("\n");
}
getch();
}
|
ShadowMas ерунда вывода?
Если тип задаётся как double или float в printf выводить его нужно используя %f вместо %i
|
Спасибо "Admiral" и правда всё работает :)
|
ShadowMas, Да просто вместо функции printf() Сишного стиля можно ещё использовать такую конструкцию:
Код:
...
cout<<setw(4)<<arr[i][j]<<setw(4);
...
И нужно будет добавить заголовочный файл:
Код:
...
#include <iomanip>
using std::setw;
...
|
Спасибо попробую и так :)
|
Время: 00:05.
© OSzone.net 2001-