Форум программистов CodeGuru
19 Июль 2018, 21:44:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Помощь Войти Регистрация  
Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Borland C++  (Прочитано 26671 раз)
0 Пользователей и 1 Гость смотрят эту тему.
SS
Интересующийся
**
Офлайн Офлайн

Сообщений: 15


Просмотр профиля
« : 16 Май 2006, 22:58:42 »

Народ!!!Help!!!Помогите решить элементарную задачу в среде Borland C++3.1(под MS-Dos).
Из массива А(20)-который вводит пользователь,сформировать массив состоящий из парных элементов массива А.Буду очень признателен за любую помощь!
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #1 : 16 Май 2006, 23:33:30 »

Цитировать
сформировать массив состоящий из парных элементов

А чт понимается под парными элементами ?
Нельзя ли привести пример массива и указать, какие элементы можно считать парными ?
Записан

SS
Интересующийся
**
Офлайн Офлайн

Сообщений: 15


Просмотр профиля
« Ответ #2 : 16 Май 2006, 23:39:50 »

Под парными понимать чётные,то есть кажется условие такое if a%2==0
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #3 : 17 Май 2006, 02:53:04 »

Цитировать
Под парными понимать чётные,то есть кажется условие такое if a%2==0

Понятно. А то можно подумать, что это либо если в массиве 2 одинаковых элемента (но тогда как быть, если одинаковых больше), либо 2 идущих подряд одинаковых (аналогично - а если больше одинаковых подряд).

Ну вот, например, так должно работать:

Код:
#include

int main(int argc, char* argv[])
{
   int A[20];

   printf("Введите элементы\r\n");

   for(int i = 0; i < 20; i++)
   {
       printf("Элемент %d: ", i + 1);
       scanf("%d", &A[i]);
   }

   printf("\r\nМассив: [ ");

   for(i = 0; i < 20; i++)
       printf("%d ", A[i]);

   printf("]\r\n\r\n");

   int B[20];  // массив на 20 элементов, но реально
               // обычно будет меньше, а максимально -
               // все равно - 20.

   printf("Массив 'парных' элементов:\r\n");

   int nCount = 0;

   for(i = 0; i < 20; i++)
   {
       if(!(A[i] % 2))
       {
           // элемент "парный"
           B[nCount++] = A[i];
           printf("%d ", A[i]);
       }
   }

   printf("\r\nВсего %d парных элементов\r\n", nCount);

   return 0;
}


Записан

SS
Интересующийся
**
Офлайн Офлайн

Сообщений: 15


Просмотр профиля
« Ответ #4 : 17 Май 2006, 21:54:18 »

Спасибо,Вы очень помогли!Жму руку.
Записан
SS
Интересующийся
**
Офлайн Офлайн

Сообщений: 15


Просмотр профиля
« Ответ #5 : 22 Май 2006, 21:45:29 »

3V Добрый человек,помогите ещё не затруднит,плиз!

Требуется составить программу превращения матрицы  A(m*n) таким образом,что строка с номером m становится столбцом c номером n.
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #6 : 22 Май 2006, 22:33:09 »

В общем случае так не получится.
В смысле, в одной матрице.
Например есть матрица:
1 2 3 4
4 5 6 7
Она превратится в:
4 1
5 2
6 3
7 4
Но размерность то первой матрицы 4x2.
То есть, "превратить" матрицу - не получится. Можно новую сформировать только.
Записан

SS
Интересующийся
**
Офлайн Офлайн

Сообщений: 15


Просмотр профиля
« Ответ #7 : 22 Май 2006, 23:03:51 »

Да,верно-сформировать.Как это часто бывает в ВУЗовских методичках некорректно сформулированы задания.
« Последнее редактирование: 22 Май 2006, 23:06:37 от ss » Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #8 : 23 Май 2006, 01:47:48 »

Ну тогда все просто.
Например, есть матрица A[x, y] (x и y - размерность).
И матрица B[y, x] (размерность обратная размерности матрицы A).
Тогда формирование матрицы B будет производиться примерно так:
Код:
for(int i = 0; i < x; i++)
{
   for(int j = 0; j < y; j++)
       B[j][i] = A[i][j];
}
Записан

SS
Интересующийся
**
Офлайн Офлайн

Сообщений: 15


Просмотр профиля
« Ответ #9 : 23 Май 2006, 17:47:37 »

ОК,вот что вышло у меня,точнее не вышло
Код:

#include <stdio.h>
#include <conio.h>

int main()
{
   clrscr();
   int x,y;

   printf("Vvedite kolicestvo strok:");
   scanf("%d",&x);
   printf("Vvedite kolicestvo stolbcov:");
   scanf("%d",&y);

   int A[x][y];
   int B[y][x];

   printf("Vvedite elementy\r\n");

   for(int i = 0; i < x; i++)
   {
printf("Element %d: ", i + 1);
scanf("%d", &A[i]);
   }

   for(int j = 0; j < y; j++)
   {
printf("Element %d: ", j + 1);
scanf("%d", &A[j]);
   }

B[j][i] = A[i][j];
printf("%d ",B[j][i]);

getch();
return 0;
}

 4 ошибки "constant expression required" на x и y.В чём проблема?
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #10 : 24 Май 2006, 01:21:11 »

Неее... так не пойдет.
Первая ошибка - двумерные массивы в C++  так не сделать.
Если бы x и y были константами, то можно было бы так написать.
Например:

Код:
#define x 5
#define y 10

int main()
{
   ...
   int A[x][y];
   int B[y][x];


Так что, если хочется произвольной размерности матриц, то  придется ручками память под массивы выделять, а потом их убивать. Ладно, приведу целиком код:
Код:
   int x,y;

   printf("Vvedite kolicestvo strok:");
   scanf("%d",&x);

   printf("Vvedite kolicestvo stolbcov:");
   scanf("%d",&y);

   // тип A и B - указатель на указатель

   int **A;
   int **B;

   // выделяем массивы указателей
   A = new int*[x];
   B = new int*[y];

   int i, j;

   // теперь - выделяем память под строки массивов
   for(i = 0; i < x; i++)
       A[i] = new int[y];

   for(i = 0; i < y; i++)
       B[i] = new int[x];


   printf("Vvedite elementy\r\n");

   // вторая ошибка была логическая
   // надо вводить матрицу, поэтому - цикл двойной, по _всем_ элементам
   for(i = 0; i < x; i++)
   {
       for(j = 0; j < y; j++)
       {
           printf("Element [%d][%d]: ", i, j);
           scanf("%d", &A[i][j]);
       }
   }

   // ну, сама обработка
   for(i = 0; i < x; i++)
   {
       for(j = 0; j < y; j++)
           B[j][i] = A[i][j];
   }

   // вывод матрицы B
   for(i = 0; i < y; i++)
   {
       for(j = 0; j < x; j++)
           printf("%d\t", B[i][j]);

       printf("\r\n");
   }

   // теперь убиваем ранее выделенную память

   // сначала - строки массивов
   for(i = 0; i < x; i++)
       delete [] A[i];

   for(i = 0; i < y; i++)
       delete [] B[i];

   // потом - массивы указателей на строки
   delete [] A;
   delete [] B;


Вот, примерно так...
Записан

SS
Интересующийся
**
Офлайн Офлайн

Сообщений: 15


Просмотр профиля
« Ответ #11 : 24 Май 2006, 21:33:39 »

Спасибо.Сам бы врядли осилил эти динамические массивы.
Записан
SS
Интересующийся
**
Офлайн Офлайн

Сообщений: 15


Просмотр профиля
« Ответ #12 : 29 Май 2006, 22:06:03 »

Ещё раз здравствуйте!Это снова я!))Если ещё не надоел и у вас есть желание помогите ещё раз,плиз.
Есть программа по нахождению количества нулевых элементов в матрице A(m*n).
Код:
#include <stdio.h>
#include <conio.h>
#define ROW 10           // max colvo strok  //
#define COL 10           // max kolvo stolbcov //

main ()
{
int m, n, j;
int B[ROW][COL];
int C[COL];

void input(int a,int b,int matr[][COL]);
int kol_nul(int a, int matr[][COL],int l);

clrscr();
printf ("Ukagite razmer matricy (ne bolee %d x %d)\n", ROW, COL);
do
{
  printf ("Cislo strok: ");
  scanf ("%d",&m);
}while (m > ROW);
do
{
  printf ("Cislo stolbcov: ");
  scanf ("%d",&n);
}while (n > COL);
printf ("Vvedite elementy matricy:\n");
input (m,n,B);
for (j=0; j< n; j++)
{
   C[j]=kol_nul (m,B,j);
   printf("Kolvo nulevyx elementov %d stolbca: %d\n",j+1,C[j]);
}
}
//vvod znaceniy matricy  //
void input(int a,int b,int matr[][COL])
{
   int i,j;
    for (i=0; i<a; i++)
for (j=0; j<b; j++)
  scanf ("%d",&matr[i][j]);
}

//opredelenie kolva nulevyx elementov //
int kol_nul(int a, int matr[][COL],int l)
{
int i,k=0;

   for (i=0;i< a;i++)
     if (matr[i][l] ==0 ) k++;
   getch();
   return k;
}


Требуется переделать ту часть,где находится функция по нахождению нулевых элементов.Вместо неё нужна функция по нахождению произведения минимальных элементов каждого столбца матрицы A(m*n).
« Последнее редактирование: 29 Май 2006, 22:06:49 от ss » Записан
SS
Интересующийся
**
Офлайн Офлайн

Сообщений: 15


Просмотр профиля
« Ответ #13 : 02 Июнь 2006, 21:03:16 »

Помогите пожалуйста доделать прогу!!!

Код:

#include <stdio.h>
#include <conio.h>
#define ROW 10           /* max colvo strok  */
#define COL 10           /* max kolvo stolbcov */

main ()
{
int m, n, j;
int B[ROW][COL];
int C[COL];

void input(int a,int b,int matr[][COL]);
int proizvedenie(int a, int matr[][COL],int l,int m,int k);

clrscr();
printf ("Ukagite razmer matricy (ne bolee %d x %d)\n", ROW, COL);
do
{
  printf ("Cislo strok: ");
  scanf ("%d",&m);
}while (m > ROW);
do
{
  printf ("Cislo stolbcov: ");
  scanf ("%d",&n);
}while (n > COL);
printf ("Vvedite elementy matricy:\n");
input (m,n,B);
for (j=0; j< n; j++)
{
   int k=1;
   m*=k;
   printf("Proizvedenie minimalnix elementov: %d\n",m);
}
}
/*vvod znaceniy matricy  */
void input(int a,int b,int matr[][COL])
{
   int i,j;
    for (i=0; i<a; i++)
for (j=0; j<b; j++)
   scanf ("%d",&matr[i][j]);
}

/*opredelenie minimalnogo elementa stolbca */
int proizvedenie(int a, int matr[][COL],int l,int m,int k);
{
int i,k,m=0;
     for (i=0;i< a;i++)
     if (matr[i][l] <matr[i][l+1]) k=matr[i][l];
   getch();
   return k;
}
Записан
RIX
Интересующийся
**
Офлайн Офлайн

Сообщений: 18


Просмотр профиля
« Ответ #14 : 03 Июнь 2006, 18:40:05 »

А в чем пробленмы, что не понятно ?
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!