Форум программистов, компьютерный форум CyberForum.ru

Сформировать массив по условию - C++

Восстановить пароль Регистрация
 
asv
0 / 0 / 0
Регистрация: 27.02.2013
Сообщений: 32
27.02.2013, 01:02     Сформировать массив по условию #1
Заданы два вещественных массива Х=(х1, х2, …, хn) и Y=(y1, y2, …, ym). Сформировать массив Z, в который включить из массива Х элементы, превышающие среднее арифметическое значение массива Y, а из массива Y – элементы, большие среднее арифметическое значение массива Х..

Все что есть, но может неправильно, помогите.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include <locale.h>
void FormX(int *X, int n)
{
 int i;
 for(i=0;i<n;i++)
 {
   scanf("%d",&*(X+i));
 }
}
void FormY(int *Y, int m)
{
 int j;
 for(j=0;j<m;j++)
 {
  scanf("%d",&*(Y+j));
 }
}
void outX(int *X,int n)
{
     int i;
     for (i=0;i<n;i++)
     {
         printf("%d\t",*(X+i));
         printf("\n\n");
     }
}
void outY(int *Y,int m)
{
     int j;
     for (j=0;j<m;j++)
     {
         printf("%d\t",*(Y+j));
         printf("\n\n");
     }
}
void outZ(int *Z,int l)
{
     int k;
     for (k=0;k<l;k++)
     {
         printf("%d\t",*(Z+k));
         printf("\n\n");
     }
}
/*void massZ(int *Z,int *X, int *Y, int n, int m,int srX, int srY,int k)
{
 int i,j;
 for(k=0;k<n;k++)
 {
  if(*(X+i)>srY){*(X+i)=*(Z+k+1);
  continue;}
 }
 for(k=0;k<m;k++)
 {
  if(*(Y+i)>srX){*(Y+i)=*(Z+k+1);
  continue;}
 }
}*/
int main()
{
 setlocale (LC_ALL,"russian_russia");
    int l=20,i,a,q,b,n,m,j,X[10],Y[10],Z[100],sX=0,srX,sY=0,srY,k=0;
 int s;
    printf("Введите кол-во элементов массива X:\n");
    scanf("%d",&n);
 printf("Введите %d элемент(ов) массива X через Enter\n", n);
    FormX(&X[0],n);
 printf("\nИсходный массивX\n\n");
    outX(&X[0],n);
 for(a=0;a<n;a++)
 {
  sX=sX+X[a];
 }
 srX=sX/a;
 printf("Среднее значение массиваX = %d\n",srX);
 printf("Введите кол-во элементов массива Y:\n");
 scanf("%d",&m);
 printf("Введите %d элемент(ов) массива Y через Enter\n", m);
    FormY(&Y[0],m);
 printf("\nИсходный массивY\n\n");
 outY(&Y[0],m);
 for(q=0;q<m;q++)
 {
  sY=sY+Y[q];
 }
 srY=sY/q;
 printf("Среднее значение массиваY = %d\n",srY);
 //massZ(&Z[0],&X[0],&Y[0],n,m,srX,srY,k);
 //outZ(&Z[0],l);
 getch ();
 return 0;}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
27.02.2013, 01:06     Сформировать массив по условию #2
Цитата Сообщение от asv Посмотреть сообщение
Заданы два вещественных массива
т.е double
а у тебя

Цитата Сообщение от asv Посмотреть сообщение
int ...,X[10],Y[10],Z[100]
asv
0 / 0 / 0
Регистрация: 27.02.2013
Сообщений: 32
27.02.2013, 01:15  [ТС]     Сформировать массив по условию #3
не совсем понял

Добавлено через 7 минут
нужно было вместо int написать float?
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
27.02.2013, 01:23     Сформировать массив по условию #4
Цитата Сообщение от asv Посмотреть сообщение
нужно было вместо int написать float?
да (лучше double)
но не везде
смотри какие переменные у тебя вещественные а какие целочисленные
asv
0 / 0 / 0
Регистрация: 27.02.2013
Сообщений: 32
27.02.2013, 01:24  [ТС]     Сформировать массив по условию #5
ValeryS, спасибо, а что еще? а то у меня проблема с основным заданием массив Z как сварганить
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
27.02.2013, 01:36     Сформировать массив по условию #6
Цитата Сообщение от asv Посмотреть сообщение
аданием массив Z как сварганить
среднее ты уже нашел
потом сравнивай например так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int zi=0
for(i=0;i<a;i++)
{
  if(X[i]>srY)
  {
   Z[zi]=X[i];
    zi++;
  }
}
for(i=0;i<q;i++)
{
  if(Y[i]>srX)
  {
   Z[zi]=Y[i];
    zi++;
  }
 
 
}
asv
0 / 0 / 0
Регистрация: 27.02.2013
Сообщений: 32
27.02.2013, 01:41  [ТС]     Сформировать массив по условию #7
ValeryS, так тобишь, мои ошибки в том коде, заменить вещественный, целочисленный тобишь int,float,int,float ну и т.д., остальное у меня все правильно только сравнить и все?

Добавлено через 3 минуты
или вот что ты написал сравнение мне это вставить вместо своего? или что совсем уже не понимаю
asv
0 / 0 / 0
Регистрация: 27.02.2013
Сообщений: 32
07.04.2013, 23:13  [ТС]     Сформировать массив по условию #8
Такое дело, сделал почти финальеую версию программки, но есть 1 но: // if(*(X+i)!=-842150451) вот эта строка все портит если ее расскоментировать то будет постоянно выводить это число это нужно исправить поставить счетчик K вместо n+m как это сделать помогите пожалуйста, буду весьма благодарен.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <iostream>
#include <conio.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
void FormMas(int *X,int n)
{int i;
 for(int i=0;i<n;i++)
 X[i]=rand()%100;
}
void VivodMas(int *X,int n)
{
 int i;
 for(int i=0;i<n;i++)
//   if(*(X+i)!=-842150451)
     {
         printf("%d\t",*(X+i));
     }
         printf("\n");
}
float sred(int *X,int n)
{float sr=0;
   int i,sx=0;
     for (i=0;i<n;i++)
  {
      sx+=*(X+i);
     }
 sr=sx/n;
return sr;
}
 
 
void formZ(int *Z,int m,int n,int *X,int *Y, float srX, float srY)
{
int k=0;int i;
for(i=0;i<n;i++)
{if(*(X+i)>srY)
{*(Z+k)=*(X+i);k++;}
}
for(i=0;i<m;i++)
 {if(*(Y+i)>srX)
{*(Z+k)=*(Y+i);k++;}
}}
int main()
{
 setlocale(LC_ALL,"rus");
 int n,m,j=0,k=0;
 
 float srX=0,srY=0;
 printf("Введите размерность массива X:");
 scanf("%d",&n);
 printf("Введите размерность массива Y:");
 scanf("%d",&m);
 int *X = new int[n];
 int *Y = new int[m];
 int *Z = new int[k];
 FormMas(X,n);
 printf("Массив Х:\n");
 VivodMas(X,n);
 FormMas(Y,m);
 printf("Массив Y:\n");
 VivodMas(Y,m);
 srX=sred(X,n);
 printf("\nsredX=%.2f\n",sred(X,n));
 srY=sred(Y,m);
 printf("sredY=%.2f\n\n",sred(Y,m));
 formZ(Z,m,n,X,Y,srX,srY);
 printf("Массив Z:\n");
 VivodMas(Z,n+m);
 getch ();
 return 0;
}
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
08.04.2013, 00:58     Сформировать массив по условию #9
Цитата Сообщение от asv Посмотреть сообщение
//* *if(*(X+i)!=-842150451)
что за странная запись
так не судьба
C++
1
X[i]
во вторых -842150451 это 0xCDCDCDCD
так обычно маркируется невыделанная память
что хотел этим сказать?
asv
0 / 0 / 0
Регистрация: 27.02.2013
Сообщений: 32
08.04.2013, 01:00  [ТС]     Сформировать массив по условию #10
спасибо но я ничего не понял, написал это дабы оно мне не выскакивало, как его убрать мне сказали вместо n+m сделать счетчик К так в массиве может не хватит элементов и нам нечего засовывать будет
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
08.04.2013, 01:05     Сформировать массив по условию #11
Цитата Сообщение от asv Посмотреть сообщение
спасибо но я ничего не понял,
Я тоже

Цитата Сообщение от asv Посмотреть сообщение
мне сказали вместо n+m сделать счетчик К
какое n? какое m ?
и счетчик чего
asv
0 / 0 / 0
Регистрация: 27.02.2013
Сообщений: 32
08.04.2013, 01:24  [ТС]     Сформировать массив по условию #12
в главной функции массив Z там стоит [n+m] мне сказали сделать счетчик, т.к. мы же незнаем сколько в массиве элементов и может получится так что в массив Z не будет что положить, тоесть будет недостаточно элементов или вобще не будет
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
08.04.2013, 01:36     Сформировать массив по условию #13
Цитата Сообщение от asv Посмотреть сообщение
в главной функции массив Z там стоит [n+m] мне сказали сделать счетчик, т.к. мы же незнаем сколько в массиве элементов и может получится так что в массив Z не будет что положить, тоесть будет недостаточно элементов или вобще не будет
какой такой счетчик мотчик ты посмотри какой размер массива Z

Цитата Сообщение от asv Посмотреть сообщение
int n,m,j=0,k=0;
Цитата Сообщение от asv Посмотреть сообщение
int *Z = new int[k];
нулевой размер
создай хотя бы так
C++
1
int *Z = new int[n+m] ;
asv
0 / 0 / 0
Регистрация: 27.02.2013
Сообщений: 32
08.04.2013, 01:43  [ТС]     Сформировать массив по условию #14
это где вобще, у меня так вобще и было, вот вместо этого n+m нужно сделать счетчик
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
08.04.2013, 01:46     Сформировать массив по условию #15
Цитата Сообщение от asv Посмотреть сообщение
это где вобще,
Это ты у меня спрашиваешь?
56 строчка в твоем листинге
asv
0 / 0 / 0
Регистрация: 27.02.2013
Сообщений: 32
08.04.2013, 01:47  [ТС]     Сформировать массив по условию #16
все верно у меня так и было [n+m] вот вместо этого нужен K, вобще короче избавится от тех числе
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
08.04.2013, 01:48     Сформировать массив по условию #17
Цитата Сообщение от asv Посмотреть сообщение
все верно у меня так и было [n+m] вот вместо этого нужен K,
а K, у тебя равен 0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2013, 01:49     Сформировать массив по условию
Еще ссылки по теме:

Сформировать двумерный массив по условию C++
C++ Сформировать двумерный массив из двух двумерных массивов по условию
Сформировать массив согласно условию C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
asv
0 / 0 / 0
Регистрация: 27.02.2013
Сообщений: 32
08.04.2013, 01:49  [ТС]     Сформировать массив по условию #18
а как должно быть? я вобще запутался, можно этот кусок кода увидить?
Yandex
Объявления
08.04.2013, 01:49     Сформировать массив по условию
Ответ Создать тему
Опции темы

Текущее время: 15:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru