|
|
|
| Составить одномерный массив из слов, записанных в обратном порядке, то есть первым элементом массива будет последнее слово, вторым предпоследнее
4.10. Дана действительная матрица А размером MxN, где M, N - заданные натуральные числа Сформировать одномерный действительный массив В, в котором элемент B(j) равен 1, если элементы j-ого столбца матрицы составляют строго возрастающую последовательность и ноль в противном случае (j= 1,2,..., N).
heelp | |
|
|
|
|
|
|
|
для: Coller9
(01.12.2009 в 18:26)
| |
#include <iostream>
#include <vector>
using namespace std;
vector< vector<double> > a;
int main()
{
int n, m;
scanf("%d %d", &m, &n);
a.assign(m, vector<double>(n, 0.0));
for(int i=0; i<m; i++)
for(int j=0; j<n; j++)
scanf("%lf", &a[i][j]);
vector<double> b(n, 1.); // по умолчанию - все 1
for(int j=0; j<n; j++)
{
for(int i=1; i<m; i++)
if (a[i][j]<=a[i-1][j]) // не возрастающая последовательность, ответ 0
{
b[j] = 0; break;
}
}
return 0;
}
|
для работы с дробными числами в некоторых задачах для сравнения надо епсилон юзать,
но это не обязательно.
а на счет первой задачи, то поищите на форуме, недавно похожая была рассмотрена | |
|
|
|
|
|
|
|
для: AlMag
(02.12.2009 в 02:54)
| | almag thx
но вот только 3.01 нету vector.h ну и само сабой ругается на
vector< vector<double> > a;
=( | |
|
|
|
|
|
|
|
для: Coller9
(02.12.2009 в 09:31)
| | ну это с использованием СТЛ.
если на чистом С надо, то просто можно память выделить массиву стандартными функциями.
но, если Вы знаете пределы, например N, M <= 1000 всегда, то можно статический массив завести
double a[1000][1000];
.....
a.assign(m, vector<double>(n, 1)); // это убрать.
...
double b[1000];
for(int j=0; j<n; j++)
{
b[j]=1.;
for(...)
}
|
вот так заменить, и норм | |
|
|
|
|
|
|
|
для: AlMag
(02.12.2009 в 11:09)
| | оххх , я запутался , вроде все заменил , ругается на scanf типо функция should have a prototype
еще 1000 1000 много)) меньше пишу , тогда не ругается | |
|
|
|
|
|
|
|
для: Coller9
(02.12.2009 в 16:44)
| | можно полный текст программы ? )) | |
|
|
|
|
|
|
|
для: Coller9
(02.12.2009 в 16:45)
| |
#include <stdio.h>
#define FOR(i, a, b) for(int i=a; i<b; ++i)
double a[1000][1000];
double b[1000];
int n, m;
int main()
{
scanf("%d %d", &m, &n);
FOR(i, 0, m) FOR(j, 0, n) scanf("%lf", &a[i][j]);
FOR(j, 0, n)
{
b[j] = 1.;
FOR(i, 1, m)
if (a[i][j] <= a[i-1][j]) { b[j] = 0.; break; }
}
return 0;
}
|
| |
|
|
|
|
|
|
|
для: AlMag
(02.12.2009 в 18:55)
| | #include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>
void main(){
int k=0,i;
char *str=new char[50];
char *w[10]={0},*m[10]={0};
char *chr;
clrscr();
gets(str);
chr=strtok(str," ");
while(chr){
w[k++]=chr;
chr=strtok(NULL," ");
}
for(i=0;i<k;i++)
//if(strlen(w[k])>0)
m[k-i-1]=w[i];
for(i=0;i<k;i++) cout<<m[i]<<" ";
getch();
вот :)
спасибо за помощь | |
|
|
|