Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 20.05.2012
Сообщений: 18
1

Поиск элемента в переменной

13.02.2013, 17:07. Показов 603. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задание: Динамическая память. Одномерный массив. Дан массив вещественных чисел. Правда ли, что цифры минимального элемента входят в состав максимального числа. Жирным я выделил задание, которое не смог сделать.
Текст программы:
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
int main() 
{
    int n=0;
    printf("\nVvedite kol-vo elementov\n");
    scanf("%d",&n);
    float *arr;
    arr=(float *)(malloc(n*sizeof(float)));
    if(!arr)
    {
        printf("Vyhod za predeli pamiati");
    return 1;
    }
    srand(time(NULL));
    int i=0,j=0;
    for(i=0;i<n;i++)
        arr[i]=((float)rand()/RAND_MAX)*100;
    for(i=0;i<n;i++)
        printf("%f ",arr[i]);
    float min=100,max=0;
    for (i=0;i<n;i++)
        if (min>arr[i]) min=arr[i];
        else if(max<arr[i]) max=arr[i];
    printf("\nMinimalnoe znachenie:%f",min);
            printf("\nMaximalnoe chislo:%f",max);
            
           
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.02.2013, 17:07
Ответы с готовыми решениями:

Как присвоить переменной значение элемента структуры
Имеется вот такой код, заполнение структуры происходит из файла. Сама структура заполняется...

Поиск переменной в файле
Здрасьте! Есть файл, и где-то в нем ,среди множества разных переменных ,есть &quot;,T = 10 c,&quot;, как мне...

Переменной e присвоить значение последнего элемента последней строки массива d
Переменной e присвоить значение последнего элемента последней строки массива d . Подскажите

Переменной z присвоить значение последнего элемента последней строки массива d
Переменной z присвоить значение последнего элемента последней строки массива d

6
158 / 157 / 81
Регистрация: 31.12.2012
Сообщений: 254
13.02.2013, 18:50 2
Пойдет?

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
#include <stdio.h>
 
int main(void)
{   
 
   int a[7]={55,64,83,825,25,38,79},max,min,b[5],c[5],count=0;
   int i,j,cou=0;
   
   max=a[0];
   min=a[0];
   
   printf("\nVektor elementov:\n\n");
   
   for(i=0; i<7; i++) {
      printf(" %i",a[i]);
      if(max <= a[i]) {
         max=a[i];
      }
      if(min >= a[i]) {
         min=a[i];
      }
   }
   
   printf("\n\nMax.element = %i",max);
   printf("\nMin.element = %i",min);
   printf("\n");
   
   for(i=0; max>=1; i++){
      for(j=0; min>=1; j++){
         printf("\n - Po odnomu min: %i",min%10);
         b[j]=min%10;
         min/=10;
         cou++;
      }
      printf("\n + Po odnomu max: %i",max%10);
      c[i]=max%10;
      max/=10;
   }
   
   for(i=0; i<2; i++) {
      for(j=0; j<3; j++) {
         if(b[i] == c[j]) {
            count++;
         }
      }
   }
   
   if(cou == count) {
      printf("\n\nTrue!\n");
   }
   else {
      printf("\n\nFalse!\n");
   }
 
   return 0;
}
в сторках 40 41 тодо доп. перем. ввести еще надо
Миниатюры
Поиск элемента в переменной   Поиск элемента в переменной  
1
0 / 0 / 0
Регистрация: 20.05.2012
Сообщений: 18
15.02.2013, 22:11  [ТС] 3
Я уточнил задание. Элементы обязательно задаются рандомно. И обратите внимание, что массив вещественный.

Добавлено через 2 часа 26 минут
Что, если домножить, например, число 24.145342 на 1000000, чтобы получилось 24145342.0000000 и с этим работать ? В таком случае как убрать эти нули и можно ли вообще убрать запятую (иначе %10 не срабатывает).

Добавлено через 2 часа 40 минут
Данной программой я сумел добиться сканирования максимального числа (от минимального берется только 1я цифра). Иногда выдает совпадение. Но дальше вообще не соображаю что делать.
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
int main() 
{
    int n=0;
    printf("Vvedite kol-vo elementov\n");
    scanf("%d",&n);
    float *arr;
    arr=(float*)(malloc(n*sizeof(float)));
    if(!arr)
    {
        printf("Vyhod za predeli pamiati");
    return 1;
    }
    srand(time(NULL));
    int i=0,j=0;
    for(i=0;i<n;i++)
        arr[i]=((float)rand()/RAND_MAX)*100;
    for(i=0;i<n;i++)
        printf("%f ",arr[i]);
    float min=arr[0],max=arr[0];
    for (i=0;i<n;i++)
        if (min>arr[i]) min=arr[i];
        else if(max<arr[i]) max=arr[i];
         printf("\nMinimalnoe znachenie:%f",min);
         printf("\nMaximalnoe chislo:%f",max);
 
        max*=100000;
        min*=100000;
        int fmax,gmin,v[10],b[10];
        fmax=max;
        gmin=min;
        printf("\nfmax:%d",fmax);
        printf("\ngmin:%d",gmin);
        for(i=0; fmax>=1; i++){        
          for(j=0; gmin>=1; j++){
              v[j]=gmin%10;
         gmin/=10;
         printf("\nvmin:%d",v[i]);
          }
      b[i]=fmax%10;
      fmax/=10;
      printf("\nbmax:%d",b[i]); 
      
      if(b[i]==v[j]) printf("\nChislo sovpadaet:%d",b[i]);
        }
         return 0;
}
0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
15.02.2013, 22:28 4
Правда ли, что цифры минимального элемента входят в состав максимального числа
То есть, исходя из обычной точности вещественного числа, сравниваем только первые 6 значаших цифр?

Тогда никаких умножений не требуется, просто печатаете его в символьную переменную и выбираете максимум 6 первых цифр, игнорируя знак, десятичную точку и (если формат E/G) экспоненту.

Всех дел: найти минимум, максимум (первый цикл) и сравнить два шестизначных набора цифр на вхождение одного в другой (например, вычеркивая совпадения - второй цикл).
1
0 / 0 / 0
Регистрация: 20.05.2012
Сообщений: 18
16.02.2013, 19:26  [ТС] 5
А можно примерчик подобной программы ?
0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
16.02.2013, 22:33 6
Цитата Сообщение от Ermol499 Посмотреть сообщение
А можно примерчик подобной программы?
Без какой-либо попытки оптимизации:

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
95
96
97
98
99
   const int PRECISION = 6;
 
   double      pArr[MAX_PATH];
 
   srand((DWORD)time(NULL));
 
   for (int ii = 0; ii < MAX_PATH; ++ii)
   {
      int   iR1 = rand();
      int   iR2 = rand() + 1;
 
      pArr[ii] = ((double)(9 * iR2 / 10)) * (double)iR1 / double(iR2);
   }
 
   double      fMin = FLT_MAX;
   double      fMax = FLT_MIN;
 
   for (ii = 0; ii < MAX_PATH; ++ii)
   {
      fMin = min(fMin,pArr[ii]);
      fMax = max(fMax,pArr[ii]);
   }
 
   char  pszMin[MAX_PATH];
   char  pszMax[MAX_PATH];
 
   sprintf(pszMin,"%f",fMin);
   sprintf(pszMax,"%f",fMax);
 
   char  pszMinDigits[PRECISION + 1];
   char  pszMaxDigits[PRECISION + 1];
 
   memset(pszMinDigits,0,sizeof(pszMinDigits));
   memset(pszMaxDigits,0,sizeof(pszMaxDigits));
 
   for (int jj = 0, kk = 0; kk < PRECISION; ++jj)
   {
      if (isdigit(pszMin[jj])) 
      {
         pszMinDigits[kk++] = pszMin[jj];
      }
   }
 
   for (jj = 0, kk = 0; kk < PRECISION; ++jj)
   {
      if (isdigit(pszMax[jj])) 
      {
         pszMaxDigits[kk++] = pszMax[jj];
      }
   }
 
   bool     bContain;
 
   for (kk = 0; kk < PRECISION; ++kk)
   {
      bContain = false;
 
      for (int ll = 0; ll < PRECISION; ++ll)
      {
         if (pszMinDigits[kk] == pszMaxDigits[ll])
         {
            bContain = true;
         }
      }
 
      if (!bContain)
      {
         break;
      }
   }
 
   const char*    STR_MIN     = "минимальное число";
   const char*    STR_MAX     = "максимальное число";
   const char*    STR_HYPO    = "Гипотеза о вхождении всех цифр минимального числа в максимальное";
   const char*    STR_NO      = "НЕ";
   const char*    STR_CONFIRM = "подтвердилась";
 
   char  pszTemp   [MAX_PATH];
   char  pszNo     [MAX_PATH];
   char  pszConfirm[MAX_PATH];
 
   CharToOem(STR_MIN,pszTemp);
   printf("%s : %15.6f [%s]\n",pszTemp,fMin,pszMinDigits);
 
   CharToOem(STR_MAX,pszTemp);
   printf("%s: %15.6f [%s]\n",pszTemp,fMax,pszMaxDigits);
 
   CharToOem(STR_HYPO,pszTemp);
   CharToOem(STR_CONFIRM,pszConfirm);
 
   if (!bContain)
   {
      CharToOem(STR_NO,pszNo);
      printf("%s %s %s.\n",pszTemp,pszNo,pszConfirm);
   }
   else
   {
      printf("%s %s.\n",pszTemp,pszConfirm);
   }
Output:

C++
1
2
3
минимальное число :       91.796851 [917968]
максимальное число:    29365.798453 [293657]
Гипотеза о вхождении всех цифр минимального числа в максимальное НЕ подтвердилась.
0
158 / 157 / 81
Регистрация: 31.12.2012
Сообщений: 254
17.02.2013, 00:59 7
задать рандомно? держи
вещественный? пожалуйста

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 <stdio.h>
#include <math.h>
#include <time.h>
 
int main(void)
{   
   
   srand(time(NULL));
   
   double a[7],max,min;
   int i,j,cou=0,dmin,dmax,b[5],c[5],count=0,nc=0,nb=0;
   
   for(i=0; i<7; i++) {
      a[i]=rand()%200;
   }
   
   max=a[0];
   min=a[0];
   
   printf("\nVektor elementov:\n\n");
   
   for(i=0; i<7; i++) {
      printf(" %.2f",a[i]);
      if(max <= a[i]) {
         max=a[i];
      }
      if(min >= a[i]) {
         min=a[i];
      }
   }
   
   dmin=(int) min;
   dmax=(int) max;
   
   printf("\n\nMax.element = %i",dmax);
   printf("\nMin.element = %i",dmin);
   printf("\n");
   
   for(i=0; dmax>=1; i++){
      for(j=0; dmin>=1; j++){
         printf("\n - Po odnomu min: %i",dmin%10);
         b[j]=dmin%10;
         dmin/=10;
         cou++;
         nb++;
      }
      printf("\n + Po odnomu max: %i",dmax%10);
      c[i]=dmax%10;
      dmax/=10;
      nc++;
   }
   
   for(i=0; i<3; i++) {
      for(j=0; j<2; j++) {
         if(b[j] == c[i]) {
            count++;
         }
      }
   }
   
   //printf("\nCount=%i",count);
   //printf("\nCou=%i",cou);
   
   if(cou <= count) {
      printf("\n\nTrue!\n");
   }
   else {
      printf("\n\nFalse!\n");
   }
 
   return 0;
}
Миниатюры
Поиск элемента в переменной   Поиск элемента в переменной   Поиск элемента в переменной  

Поиск элемента в переменной   Поиск элемента в переменной   Поиск элемента в переменной  

0
17.02.2013, 00:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.02.2013, 00:59
Помогаю со студенческими работами здесь

Если в одномерном массиве имеются три подряд идущих одинаковых элемента, то переменной R присвоить значение 1
1)Если в одномерном массиве имеются три подряд идущих одинаковых элемента,то переменной R присвоить...

Поиск элемента по фаимлии
Помогите с 14 заданием, пожалуйста

Поиск максимального элемента.
Даны 2 числа: a,b. a не равно b. Найти максимальное из этих чисел. Ребята,подскажите пожалуйста...

Поиск элемента массива
#include&lt;conio.h&gt; #include&lt;stdio.h&gt; #include&lt;math.h&gt; main() { int j=0,n,i=0,; int...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru