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

Заполнение массива - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 47, средняя оценка - 4.81
Сеня 2007
2 / 2 / 0
Регистрация: 03.10.2010
Сообщений: 182
23.02.2011, 13:35     Заполнение массива #1
Как заполнить массив?
Вот что получилось:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void main()
{
    int i,n,c,a[500];
    
    printf("Введите количество символов n= \n");
    scanf("%d",&n);
    printf("Ввести символы: \n");
    for (i=0; i<n; i=i+1)
    {
    scanf("%d",a[i]);
    }
    printf("Массив \n");
    for (i=0; i<n; i=i+1)
    {
    printf("\n %d",&a[i]);
    }
    getch();
}
Выдает какой то лист ошибок. Можно рандомно заполнить если сможете!! Помогите плиз
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
White Luna
 Аватар для White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402
23.02.2011, 13:59     Заполнение массива #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
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <stdlib.h>
 
int main()
{
        int i,n,c,a[500];
        setlocale (LC_ALL, "Russian"); // что бы русские буквы были
        printf("Введите количество символов n= \n");
        scanf("%d",&n);
        printf("Ввод случайных символов: \n");
        for (i=0; i<n; i=i+1)
        {
       
 c=rand() % 20 + 1; // случайные числа от 0 до 20
a[i] = c;
 
        }
        printf("Массив \n");
        for (i=0; i<n; i=i+1)
        {
        printf("\n %d",&a[i]);
        }
        getch();
        return 0;
}
смотри, вроде так,
Сеня 2007
2 / 2 / 0
Регистрация: 03.10.2010
Сообщений: 182
23.02.2011, 13:59  [ТС]     Заполнение массива #3
Сделал теперь почему то указывает числа 6 значные заместо указанных мной
vaselo
19 / 19 / 1
Регистрация: 17.10.2010
Сообщений: 247
23.02.2011, 14:02     Заполнение массива #4
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
 
int randomize(int n,int mas[400])
{   
    for(int i=0;i<400;i++)
mas[i]=rand()%89+10;
return mas[400];
}
int custom(int &n, int mas[400])
{   int c;setlocale(LC_ALL,"Russian");
    cout<<"Введите количество элементов массива: ";cin>>n;
    for(int i=0;i<n;i++)
        {cout<<"\nВведите "<<i+1<<"-й элемент массива: ";
        cin>>c;
        mas[i]=c;
        }
return mas[400];
}
int def(int &n, int mas[400])
{ for(int i=0;i<n;i++)
    mas[i]=300-i;
return mas[400];
}
 
 
switch(sw)//в функции маин
        {
            case 1: custom(n,mas); break;
            case 2: randomize(n,mas); break;
            case 3: def(n, mas); break;
            case 0: return; break;
        }
Сеня 2007
2 / 2 / 0
Регистрация: 03.10.2010
Сообщений: 182
23.02.2011, 14:22  [ТС]     Заполнение массива #5
Цитата Сообщение от White Luna Посмотреть сообщение
stdafx.h
Что это?
Все равно генерит 7 значные числа!!!
Вообще вот задание может есть у кого то готовый вариант?
В одномерном массиве, состоящем из п целых элементов, вычислить
1) количество элементов массива, больших С;
2) произведение элементов массива, расположенных после максимального по модулю элемента.
Преобразовать массив таким образом, чтобы сначала располагались все отрицательные элементы, а потом — все положительные (элементы, равные 0, считать положительными).

Добавлено через 11 минут
Вот картинка что показывает у меня:
Хотя в отладчике показывает правильно сгенереные числа от 0 до 20
Миниатюры
Заполнение массива  
timchuchok
15 / 15 / 0
Регистрация: 21.12.2010
Сообщений: 55
23.02.2011, 15:58     Заполнение массива #6
для заполнения масива рандома:
C++
1
2
3
int A[NMAX];
for ( int i = 0; i < NMAX; i++)
A[i] = rand();
vaselo
19 / 19 / 1
Регистрация: 17.10.2010
Сообщений: 247
23.02.2011, 16:12     Заполнение массива #7
7-значные с точкой????? тип инт надо, а не флоат или дабл. если же надо дабл - почитай как можно через cout или printf можно откидывать после точки
Сеня 2007
2 / 2 / 0
Регистрация: 03.10.2010
Сообщений: 182
23.02.2011, 18:13  [ТС]     Заполнение массива #8
без точек все. просто значения показывает 7 значные пройди по ссылке и увидеш. а когда смотрю при дебаге показывает нормальные числа а в компиляторе 7 значные

Добавлено через 1 час 55 минут
помогите штоль кто нить
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
23.02.2011, 18:47     Заполнение массива #9
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//исправленый код  [b]White Luna[/b]
#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
 
int main()
{
        int i,n,c,a[500];
        setlocale (LC_ALL, "Russian"); 
        printf("Введите количество символов n= \n");
        scanf("%d",&n);
        printf("Ввод случайных символов: \n");
        for (i=0; i<n; i=i+1)
           a[i] = and() % 20 + 1; 
        printf("Массив \n");
        for (i=0; i<n; i=i+1)
        {
        printf("\n %d",a[i]); //сдесь не нужен амперсанд
        }
        getchar();
        return 0;
}
qdlbp
2 / 2 / 0
Регистрация: 24.12.2010
Сообщений: 5
23.02.2011, 19:32     Заполнение массива #10
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
#include <conio.h>
 
#include <algorithm>
#include <ctime>
#include <iostream>
#include <vector>
 
using namespace std;
 
bool value_greater_10(int value)
{
    return value > 10;
}
 
int _max = 0;
 
bool is_first_max_value(int value)
{
    return value == _max;
}
 
int main()
{
    const int array_size = 10;
 
    vector<int> items;
 
    // Random fill array of elements in range from 0 to 20
    srand(time(NULL));
    for (int i = 0; i < array_size; ++i)
    {
        //items.push_back((int)(((float)rand() / RAND_MAX) * 20));
        int value = (int)(((float)rand() / RAND_MAX) * 20);
        items.push_back((rand() % 2) ? value : (-value));
    }
 
    // Print array
    cout << "Array:" << endl;
    for (vector<int>::iterator i = items.begin(); i != items.end(); ++i)
    {
        cout << *i << endl;
    }
    cout << endl;
 
    // Print count of elements greater 10
    cout << "Count of elements > 10: " << count_if(items.begin(), items.end(), value_greater_10) << endl << endl;
 
    // Find max element and multiple elements right of max
    _max = *(max_element(items.begin(), items.end()));
    int result = 1;
    for (vector<int>::iterator i = find_if(items.begin(), items.end(), is_first_max_value); i != items.end(); ++i)
    {
        result *= *i;
    }
    
    // Print multiple elements right of max
    cout << "Multiple elements right of max: " << result << endl << endl;
 
    // Sort array
    sort(items.begin(), items.end());
 
    // Print array
    cout << "Array:" << endl;
    for (vector<int>::iterator i = items.begin(); i != items.end(); ++i)
    {
        cout << *i << endl;
    }
    cout << endl;
 
    cout << "Press any key to exit";
    getch();
    
    return 0;
}
Сеня 2007
2 / 2 / 0
Регистрация: 03.10.2010
Сообщений: 182
23.02.2011, 19:45  [ТС]     Заполнение массива #11
Цитата Сообщение от qdlbp Посмотреть сообщение
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
#include <conio.h>
 
#include <algorithm>
#include <ctime>
#include <iostream>
#include <vector>
 
using namespace std;
 
bool value_greater_10(int value)
{
    return value > 10;
}
 
int _max = 0;
 
bool is_first_max_value(int value)
{
    return value == _max;
}
 
int main()
{
    const int array_size = 10;
 
    vector<int> items;
 
    // Random fill array of elements in range from 0 to 20
    srand(time(NULL));
    for (int i = 0; i < array_size; ++i)
    {
        //items.push_back((int)(((float)rand() / RAND_MAX) * 20));
        int value = (int)(((float)rand() / RAND_MAX) * 20);
        items.push_back((rand() % 2) ? value : (-value));
    }
 
    // Print array
    cout << "Array:" << endl;
    for (vector<int>::iterator i = items.begin(); i != items.end(); ++i)
    {
        cout << *i << endl;
    }
    cout << endl;
 
    // Print count of elements greater 10
    cout << "Count of elements > 10: " << count_if(items.begin(), items.end(), value_greater_10) << endl << endl;
 
    // Find max element and multiple elements right of max
    _max = *(max_element(items.begin(), items.end()));
    int result = 1;
    for (vector<int>::iterator i = find_if(items.begin(), items.end(), is_first_max_value); i != items.end(); ++i)
    {
        result *= *i;
    }
    
    // Print multiple elements right of max
    cout << "Multiple elements right of max: " << result << endl << endl;
 
    // Sort array
    sort(items.begin(), items.end());
 
    // Print array
    cout << "Array:" << endl;
    for (vector<int>::iterator i = items.begin(); i != items.end(); ++i)
    {
        cout << *i << endl;
    }
    cout << endl;
 
    cout << "Press any key to exit";
    getch();
    
    return 0;
}
А можно попроще сделать? А то я не понимаю как здесь происходит!
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
23.02.2011, 20:36     Заполнение массива #12
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void main()
{
        int i,n;
        int a[500];
        printf("Enter number elements  n= \n");
        scanf("%d",&n);
        printf("Enter elements: \n");
        for (i=0; i<n; i++)
        {
        scanf("%d",&a[i]);
        }
        printf("Array \n");
        for (i=0; i<n; i++)
        {
        printf("\n %d",a[i]);
        }
        getch();
}
Сеня 2007
2 / 2 / 0
Регистрация: 03.10.2010
Сообщений: 182
23.02.2011, 20:38  [ТС]     Заполнение массива #13
Помогите пожалуйста переделать этот вариант под простой С. А то я ваще не пойму ниче!!!
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
23.02.2011, 20:40     Заполнение массива #14
Сеня 2007, ето и есть С.
Сеня 2007
2 / 2 / 0
Регистрация: 03.10.2010
Сообщений: 182
23.02.2011, 21:43  [ТС]     Заполнение массива #15
Вот что сейчас:
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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <locale.h>
 
void main()
{
        int i,n,c,id;
        int ci,proiz;
                int a[500];
        setlocale (LC_ALL, "Russian");
        printf("Введите количество элементов  n= \n");
        scanf("%d",&n);
        for (i=0; i<n; i++)
        {
        a[i]=rand() % 20 + 1;
        }
        printf("Массив \n");
        for (i=0; i<n; i++)
        {
        printf("\n %d",a[i]);
        }
        printf("\n Введите число С \n");
        scanf("%d",&c);
        id=0;
        for (i=0; i<n; i++)
        {
            if (c<a[i])
            {
                id++;
            }
        }
        printf("Количество элементов больших С=%d",id);
        ci=0;
        for (i=0; i<n; i++)
        {
            if (abs(a[i])>abs(a[i+1]))
            {
                i==ci;
            }
        }
        proiz=1;
        for (i==ci; i<n; i++)
        {
            proiz=proiz*a[i];
        }
        printf("\n Произведение = %d",proiz);
 
        getch();
}
Только чего то он мне произведение не считает и когда по модулю операцию делаю он мне не те результаты выдает в режиме дебага!
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
23.02.2011, 23:24     Заполнение массива #16
Цитата Сообщение от Сеня 2007 Посмотреть сообщение
for (i=0; i<n; i++)
{
if (abs(a[i])>abs(a[i+1]))
{
i==ci;
}
}
Что вы здесь хотите сделать?

Добавлено через 5 минут
Сеня 2007, желательно сформируйте полностью задание.
Сеня 2007
2 / 2 / 0
Регистрация: 03.10.2010
Сообщений: 182
24.02.2011, 06:58  [ТС]     Заполнение массива #17
Вот задание:
В одномерном массиве, состоящем из п целых элементов, вычислить
1) количество элементов массива, больших С;
2) произведение элементов массива, расположенных после максимального по модулю элемента.
Преобразовать массив таким образом, чтобы сначала располагались все отрицательные элементы, а потом — все положительные (элементы, равные 0, считать положительными).

Я пытаюсь сделать вторую часть!
qdlbp
2 / 2 / 0
Регистрация: 24.12.2010
Сообщений: 5
24.02.2011, 11:44     Заполнение массива #18
Произведение элементов массива, расположенных после максимального по модулю элемента:
1. Находишь максимальный по модулю элемент и запоминаешь его индекс
2. объявляешь локальную переменную и инициализируешь ее 1
3. в цикле от индекса, который ты запомнил, и до конца массива умножаешь каждый элемент на локальную переменную, которую ты объявил, а результат запоминаешь в эту же локальную переменную.
Ничего сложного.
Предупреждение: при умножении возможно переполнение (т. е. значение умноженных чисел будет больше максимального значения, которое может содержать переменная данного типа)
PS: в моем коде я использовал STL
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
24.02.2011, 15:26     Заполнение массива #19
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
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <math.h>
#include <time.h>
#include <conio.h>
 
int number_more_c(int *arr,int size, int c);
int mult_after_max(int *arr, int size);
int* sort(int *arr,int size);
int main()
{
  //  srand(unsigned int time(0));
    int *arr;
    int size,i,c;
    printf("Enter number elements -> ");
    scanf("%d",&size);
    arr=(int*)malloc(size*sizeof(int));
    printf("Array -> ");
     for(i=0; i<size; i++)
     {
         arr[i]=rand()%9-4;
         printf("%d ",arr[i]);
     }
    printf("\nEnter c -> ");
    scanf("%d",&c);
    printf("\nNumber elements more c -> %d",number_more_c(arr,size,c));
    printf("\nMult after mod max -> %d",mult_after_max(arr,size));
    sort(arr,size);
    printf("\nSorted array -> ");
    for(i=0; i<size;i++)
      {
          printf("%d ",arr[i]);
 
      }
    printf("\n\n");
    getch();
    return 0;
}
 
// first task
int number_more_c(int *arr, int size, int c)
 {
     int cnt_more_c=0,i;
      for(i=0; i<=size; i++)
      {
          if(arr[i]>c)
          {
              cnt_more_c++;
          }
      }
     return cnt_more_c;
 }
 
 // second task
 int mult_after_max(int *arr, int size)
 {
     int mod_max=abs(arr[0]);
     int num_mod_max=0,i,mult=1;
      for(i=0; i<size; i++)
      {
          if(abs(arr[i])>=mod_max)
          {
              mod_max=abs(arr[i]);
              num_mod_max=i;
          }
      }
      for(i=num_mod_max; i<size; i++)
      {
          mult*=arr[i];
      }
    return mult;
 }
 
 // sorted
 
 int* sort(int *arr, int size)
 {
     int tmp,i,j;
      for(i=0; i<size; i++)
      {
          for(j=i; j<size; j++)
          {
              if(arr[i]>arr[j])
              {
                  tmp=arr[i];
                  arr[i]=arr[j];
                  arr[j]=tmp;
              }
          }
      }
     return arr;
 }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.02.2011, 14:52     Заполнение массива
Еще ссылки по теме:

Заполнение массива C++
C++ Заполнение массива
C++ Заполнение массива

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

Или воспользуйтесь поиском по форуму:
Сеня 2007
2 / 2 / 0
Регистрация: 03.10.2010
Сообщений: 182
25.02.2011, 14:52  [ТС]     Заполнение массива #20
Как сделать чтобы числа генерировались от -20 до 20?
Yandex
Объявления
25.02.2011, 14:52     Заполнение массива
Ответ Создать тему
Опции темы

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