Консультация № 109018
12.11.2007, 10:10
0.00 руб.
0 6 5
Даны вещественные массивы F[4][5], A[4][5]. Определить значение массивов X[4],V[4], где X[i]=максимальному отрицательному значению i-й строки массива F, V[i]=максимальному отрицательному значению i-й строки массива A.
Значение переменной i изменяется от 0 до 3.


Приложение:
Помогите плиз!)

Обсуждение

Неизвестный
12.11.2007, 10:22
общий
это ответ
Здравствуйте, Лапотников Ден Александрович!
Если я правильно понял задание про максимальный отрицательный элемент, то всё работает ;)

Приложение:
double F[4][5],A[4][5],X[4],V[4],maxF,maxA;//заполнение массивов....for(int i=0; i<4; i++){ maxF=F[i][0]; maxA=A[i][0]; for(int j=0;j<5;j++) { if(F[i][j]<0&&F[i][j]>maxF) maxF=F[i][j]; if(A[i][j]<0&&A[i][j]>maxA) maxA=A[i][j]; } X[i]=maxF; V[i]=maxA; }
Неизвестный
12.11.2007, 11:09
общий
Это концовка???Если да, то что тогда в начале будет??#include <iostream.h>#include <iomanip.h>void main (){// объявление массивов и переменныхint F[4][5], A[4][5] .......так?
Неизвестный
12.11.2007, 11:43
общий
это ответ
Здравствуйте, Лапотников Ден Александрович!
Не совсем понял "максимальному отрицательному значению" это вы имели виду когда Х стремиться к минус безконечности или когда стремиться к нулю!
ну я вам даю два варианта решения задачи! первый когда к минус безконечности а второй когда к нулю!
Если что спрашиваейте)))
Удачи!


Приложение:
#include "iostream"void main(void){ float F[4][5]={{1,-2.32,-3.12,4.23,-823.121},{1,-2.32,-3.121,4.23,92.22},{1,-341.32,-21.12,4.12112,-1}, {4,-8.31,-2.141,-13.23,22}}; float A[4][5]={{-1,-2.32,-3.12,4.23,823.121},{1,2.32,3.121,-4.23,92.22},{-1,-341.32,-21.12,4.12112,-1}, {4,-8.31,-2.141,13.23,22}}; float X[4],V[4]; memset(X,0,sizeof(X)); memset(V,0,sizeof(X)); for(int i=0;i<4;i++) { for(int z=0;z<5;z++) { if(F[i][z]<X[i]) X[i]=F[i][z]; if(A[i][z]<V[i]) V[i]=A[i][z]; } } return;}//*******#include "iostream"void main(void){ float F[4][5]={{1,-2.32,-3.12,4.23,-823.121},{1,-2.32,-3.121,4.23,92.22},{1,-341.32,-21.12,4.12112,-1}, {4,-8.31,-2.141,-13.23,22}}; float A[4][5]={{-1,-2.32,-3.12,4.23,823.121},{1,2.32,3.121,-4.23,92.22},{-1,-341.32,-21.12,4.12112,-1}, {4,-8.31,-2.141,13.23,22}}; float X[4],V[4]; memset(X,0,sizeof(X)); memset(V,0,sizeof(X)); for(int i=0;i<4;i++) { for(int z=0;z<5;z++) {if(X[i]==0) {if(F[i][z]<X[i])X[i]=F[i][z];} else {if(F[i][z]>X[i]&&F[i][z]<0) X[i]=F[i][z];} if(V[i]==0) {if(A[i][z]<V[i]&&A[i][z]<0)V[i]=A[i][z];} else if(A[i][z]<V[i]) V[i]=A[i][z]; } } return;}
Неизвестный
12.11.2007, 22:08
общий
это ответ
Здравствуйте, Лапотников Ден Александрович!

Держите еще вариант...с красивым вводом :)

Только не понятно. что делать если нет в строке отрицательных элементов...поэтому я массивам X и V, в таких случаях, присваивал ноль...


Приложение:
#include<iostream.h>#include<conio.h>void main(){float F[4][5],A[4][5];float X[4],V[4];int i,j;float fmin,amin;clrscr();cout<<"Input elements of array F: "; for(i=0;i<4;i++) { for(j=0;j<5;j++) { gotoxy(j*6+1,i+2); cin>>F[i][j]; } }cout<<"\nInput elements of array A: "; for(i=0;i<4;i++) { for(j=0;j<5;j++) { gotoxy(j*6+1,i+8); cin>>A[i][j]; } }int fflag,aflag; for(i=0;i<4;i++) { aflag=fflag=0; fmin=amin=-32000; for(j=0;j<5;j++) { if(F[i][j]<0 && F[i][j]>fmin) { fmin=F[i][j]; fflag++; } if(A[i][j]<0 && A[i][i]>amin) { amin=A[i][j]; aflag++; } } if(fflag!=0) { X[i]=fmin; } else { X[i]=0; } if(aflag!=0) { V[i]=amin; } else { V[i]=0; } }cout<<"\nResult X\n";for(i=0;i<4;i++) { cout<<" "<<X[i]; }cout<<"\nResult V\n";for(i=0;i<4;i++) { cout<<" "<<V[i]; }getch();}
Неизвестный
13.11.2007, 02:43
общий
это ответ
Здравствуйте, Лапотников Ден Александрович!

В приложении программа для вашей задачи. Только имейте в виду, что для отрицательных чисел -1 больше, чем -2.


Приложение:
// Вопрос 109018#include <stdio.h>int main(void){double f[4][5] = {{-1.0, 2.0,-3.0, 4.0,-5.0 }, { 1.0,-2.0, 3.0,-4.0, 5.0 }, { 1.0, 2.0,-3.0, 4.0,-5.0 }, { 1.0, 2.0, 3.0, 4.0, 5.0 }}; double a[4][5] = {{ 1.0,-2.0, 3.0, 4.0, 5.0 }, {-1.0, 2.0, 3.0,-4.0,-5.0 }, { 1.0, 2.0, 3.0, 4.0, 5.0 }, {-1.0,-2.0, 3.0,-4.0, 5.0 }}; double x[4], v[4], temp_x, temp_v;int i, j; for(i=0; i<4; i++) { // находим максимальные отрицательные элемент в строках f[i] и a[i] // если отрицательных значений в строке нет, то остается 0 temp_x = 0; temp_v = 0; for(j=0; j<5; j++) { if(f[i][j] < 0) if(temp_x == 0) temp_x = f[i][j]; else if(f[i][j] > temp_x) temp_x = f[i][j]; if(a[i][j] < 0) if(temp_v == 0) temp_v = a[i][j]; else if(a[i][j] > temp_v) temp_v = a[i][j]; } // и сохраняем их в массивах x и v x[i] = temp_x; v[i] = temp_v; } for(i=0; i<4; i++) printf("%6.1f ", x[i]); printf("\n"); for(i=0; i<4; i++) printf("%6.1f ", v[i]); printf("\n"); getchar(); return 0;}
Неизвестный
13.11.2007, 16:41
общий
это ответ
Здравствуйте, Лапотников Ден Александрович!
Вроде работает, но! в этой программе расчитывается только минмальное отрицательное по строкам в масивах. Если же надо рассчитать просто минимальное значение, то программу надо немного видоизменить.

Приложение:
#include <vcl.h>#include <stdio.h>#include <conio.h>#include <iostream.h>#pragma hdrstop//---------------------------------------------------------------------------#pragma argsusedint main(int argc, char* argv[]){float F[4][5]={0}, A[4][5]={0}, X[4]={0},V[4]={0}, MinX=0, MinV=0;// вводим данные два маассива последовательно, если// надо по очереди, то нужно два вложенных цикла// для каждого массиваfor (int i = 0; i < 4; i++) { for (int k = 0; k < 5; k++) { printf("F[%d][%d] = ", i, k); cin >> F[i][k]; printf("A[%d][%d] = ", i, k); cin >> A[i][k]; if (F[i][k]<MinX) MinX=F[i][k]; if (A[i][k]<MinV) MinV=A[i][k]; } X[i] = MinX; V[i] = MinV;}//выводим результат на экранfor (int i = 0; i < 4; i++) { printf("X[%d] = %f ", i, X[i]); printf("V[%d] = %f\n", i, V[i]);}getch(); return 0;}
Форма ответа