ShadowMas
17-04-2009, 11:45
Вот сталкнулся с такой вот непоняткой и чёт не как не пойму в чём дело вообщем есть вот такая задача:
Дана матрица 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();
}
Дана матрица 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();
}