Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Serzhik
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 20
1

Написать программу по C++. Уже второй день голову ломаю...

14.10.2011, 22:51. Просмотров 884. Ответов 11
Метки нет (Все метки)

Задание в общем понятное(вложенный файл C_PP.gif), но черт голову сломаешь как это все реализовать.

Есть предположение для того чтобы создать массив надо использовать вложение while в for по схеме
(вложенный файл 321.gif)
Однако потом опять тупик - как этот массив потом прочитать и выделить из него четные элементы массива чтобы потом их перемножить, а также как определить начальный и конечный нулевой элемент и сложить элементы находящиеся между ними

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Миниатюры
Написать программу по C++. Уже второй день голову ломаю...   Написать программу по C++. Уже второй день голову ломаю...  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2011, 22:51
Ответы с готовыми решениями:

Голову уже сломал
DEL

Графы с++, пожалуйста, всю голову уже сломал
У меня два массива (вектора), в первом создается длина ребер графов. Во втором...

Ребят, нужна лабораторная, уже сломала всю голову
Вычислить и вывести на экран в виде таблицы значения функции, заданной с по-...

Всю голову сломала этими матрицами! Дана матрица.Написать программу, которая упорядочивает элементы каждой строки этой матрицы по возрастанию
Дана матрица А(nxn). Написать программу, которая упорядочивает элементы каждой...

тема: C++ Visual Studio 2013 ПОМОЩИ ПРОШУ! А то уже сломаю голову скоро!
тема: C++ Visual Studio 2013 ПОМОЩИ ПРОШУ! А то уже сломаю голову скоро! ...

11
Jupiter
Каратель
Эксперт С++
6570 / 3991 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.10.2011, 22:55 2
Serzhik, задание слабо перепечатать? у меня ваша картинка не открывается
0
Serzhik
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 20
14.10.2011, 23:01  [ТС] 3
Jupiter, двойной клик по изображению откроет его в новом окне
0
aeshes
442 / 205 / 21
Регистрация: 07.10.2011
Сообщений: 462
14.10.2011, 23:02 4
Serzhik, оно имеет вид черного квадрата с точками тогда
1
Jupiter
Каратель
Эксперт С++
6570 / 3991 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.10.2011, 23:08 5
Serzhik, кому нужно задание мне или вам? а вы хотите чтобы я еще делал двойной клик
0
jonson
235 / 208 / 84
Регистрация: 18.03.2010
Сообщений: 750
14.10.2011, 23:12 6
второй клик как раз на том окне с точками. У меня вроде открывается.
0
aeshes
14.10.2011, 23:20
  #7

Не по теме:

у меня тоже, но там там глаза сломать можно, пока прочтешь

0
alkagolik
Заблокирован
15.10.2011, 00:18 8
тут не до конца. пункт 3 я делать не стал.
первая программа
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
100
101
102
103
104
105
106
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
int check_null(int n)
{
    return (n == 0) ? 1 : 0;
}
 
/********************************/
 
void call_break_pid(int *n)
{
    if (!n) exit(-1);
}
 
/********************************/
 
void ar_in(int *arr, const int size, const int iternull_1, const int iternull_2)
{
    int i = 0, minus;
    for (i; i < size; ++i)
    {
        minus = (rand() % 2) ? -1 : 1;
        if ((i + 1) != iternull_1 && (i + 1) != iternull_2)
            *(arr + i) = minus * rand() % 10 + 1;
    }
}
 
/********************************/
 
long long int mathematical_work(int * arr, const int size, const int iter)
{
    int i = iter;
    long long int tmp = 1;
    for (i; i < size; i +=2)
        tmp *= *(arr + i);
    return tmp;
}
 
/********************************/
 
int minimum(int min, int max)
{
    return (min < max) ? min : max;
}
 
/********************************/
 
int maximum(int max, int min)
{
    return (max > min) ? max : min;
}
 
/********************************/
 
int mathematical_sum(int *arr, int min, int max)
{
    int i, sum = 0;
    i = minimum(min, max);
    max = maximum(min, max);
    for (i -= 1; i < max - 1; ++i)
        sum += *(arr + i);
    return sum;
}
 
int main(int argc, char *argv[])
{
    int N, *ar = 0, i, tmp, a, b;
    long long int max;
    srand(time(0));
 
    if (argc > 1)
    {
        max = atoi(argv[1]);
 
        N = rand() % max;
        if (check_null(N))
        {
            printf("случайный размер массива равен 0");
            return 0;
        }
 
        ar = (int*)malloc(N * sizeof(int));
        call_break_pid(ar);
 
        a = rand() % (N - 1) + 1;
        b = rand() % (a - 1);
        ar[a] = 0; ar[b] = 0;
 
        ar_in(ar, N, a, b);
        for (i = 0; i < N; ++i)
            printf("%d ", ar[i]);
        printf("\n");
        max = mathematical_work(ar, N, 1);
        printf("\nпроизведение четных = %d\n", max);
        max = mathematical_work(ar, N, 0);
        printf("\nпроизведение нечетных = %d\n", max);
        max = mathematical_sum(ar, a, b);
        printf("\nсумма чисел между нулевыми = %d\n", max);
 
        free(ar);
    }
    else printf("\nmay be you dont read source code of programm? try again\n");
    return 0;
}



вот как работает
Код
9 7 -6 9 -4 -6 7 0 10 8 7 -3 0 -1 -1 8 7 -6 8 4 -4 

произведение четных = 0

произведение нечетных = 0

сумма чисел между нулевыми = 22
0
easybudda
Модератор
Эксперт CЭксперт С++
10148 / 6055 / 1522
Регистрация: 25.07.2009
Сообщений: 11,476
15.10.2011, 00:51 9
3.
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
 #include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define MIN_ARRAY_SIZE 10
#define MAX_ARRAY_SIZE 20
 
#define random_number() ( ( rand() % 9 + 1 ) * ( ( rand() & 1 ) ? 1 : -1) )
#define int_swap(a, b) ({ int t = *(a); *(a) = *(b); *(b) = t; })
 
void dump(const int * arr, size_t size){
    while ( size-- )
        printf ("%d%c", *arr++, ( size ) ? ' ' : '\n');
}
 
int main(void){
    int * arr;
    size_t size, i, j;
 
    srand(time(NULL));
 
    size = rand() % ( MAX_ARRAY_SIZE - MIN_ARRAY_SIZE + 1 ) + MIN_ARRAY_SIZE;
    if ( ! ( arr = malloc(sizeof(int) * size) ) ){
        perror("malloc");
        exit(1);
    }
 
    for ( i = 0; i < size; ++i )
        arr[ i ] = random_number();
 
    arr[ rand() % ( size / 2 ) ] = arr[ rand() % ( size / 2 ) + ( size / 2 ) ] = 0;
 
    dump(arr, size);
 
    for ( i = 0; i < size - 1; ++i ){
        if ( arr[ i ] < 0 ){
            for ( j = i + 1; j < size && arr[ j ] < 0; ++j )
                ;
            if ( j == size )
                break;
            while ( j > i ){
                int_swap(&arr[ j - 1 ], &arr[ j ]);
                --j;
            }
        }
    }
 
    dump(arr, size);
 
    free(arr);
 
    exit(0);
}
0
Net_Wanderer
235 / 208 / 29
Регистрация: 08.06.2011
Сообщений: 467
15.10.2011, 01:11 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
75
76
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
enum { NO, YES };
 
#define MAX_SIZE 20
#define MIN_SIZE 10
 
void stable_partiton(int *, int);
 
int main()
{
    int *arr, n;
    int i, t;
    int prod, sum;
    int counting;
    
    srand(time(NULL));
    n = rand() % MIN_SIZE + MAX_SIZE + 1 - MIN_SIZE;
    if ((arr = (int *) malloc(n * sizeof(int))) == NULL) {
        printf("error: cannot allocate memory\n");
        return 1;
    }
    for (i = 0; i < n; i++)
        while (!(arr[i] = rand() % 21 - 10))
            ;
    /* adding zeros */
    arr[ (i = rand() % n) ] = 0;
    srand(time(NULL));
    while ((t = rand() % n) == i)
        ;
    arr[t] = 0;
 
    printf("array:\n");
    counting = NO;
    sum = 0;
    prod = 1;
    for (i = 0; i < n; i++) {
        printf("%d ", arr[i]);
        if ( ! (i+1 & 1) )
            prod *= arr[i];
        if (arr[i] == 0)
            counting = (counting == NO) ? YES : NO;
        if (counting)
            sum += arr[i];
    }
 
    printf("\n\nproduct of elements with even indeces: %d\n", prod);
    printf("sum of elements between zeros: %d\n", sum);
    stable_partiton(arr, n);
    printf("\nreformed array:\n");
    for (i = 0; i < n; i++)
        printf("%d ", arr[i]);
    putchar('\n');
    return 0;
}
 
#define SWAP(type, a, b) \
{ \
    type tmp = (a); \
    (a) = (b); \
    (b) = tmp; \
}
 
void stable_partiton(int *a, int size)
{
    int i, j;
    int s, t;
    
    for (i = 0, j = 1; j < size; i++, j++)
        if (a[i] < 0 && a[j] >= 0) 
            for (s = i, t = j; 
                s >= 0 && !(a[s] >= 0 && a[t] >= 0); s--, t--)
                    SWAP(int, a[s], a[t]);
}
1
kravam
быдлокодер
1710 / 897 / 105
Регистрация: 04.06.2008
Сообщений: 5,549
15.10.2011, 02:25 11
Не славы ради но вспоминания STL для:
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <numeric>
#include <algorithm>
using namespace std; 
 
bool myfunction (int i,int j) { 
 return (i>=0 &&j< 0); 
}
 
 
int main () {
 srand (time(0));
 rand();
 
 //Прежде всего разберёмся с количеством элементов, пусть их будет от 11 до 15 включительно
 int N= rand()%5+ 11;
 
 //Теперь позиции нолей
 int pos [2];
 pos [0]= rand()% N;
 while ((pos[1]= rand()%N)== pos[0]); 
 (pos[0]> pos[1])?pos[0]^=pos[1]^=pos[0]^=pos[1]:(0);
 
 //Теперь собсно массив, пуст в нём будут числа от -5 до 5 включительно
 //Ну и про ноли не забудем
 int* array= new int [N];
 for (int i= 0; i< N; i++) {
  while (!(array [i]= (rand()%11- 5)));
 }
 array[pos[0]]= array[pos[1]]= 0;
 
 for (int i= 0;  i< N; i++) {
  printf ("%d ", array[i]);
 }
 printf ("\n");
 
 //ПРоизведение:
 int proizv= 1;                
 for (int i= 0; i< N; i+=2) {
  proizv*= array [i];
 }
 printf ("proizv= %d\n", proizv);
 
 //Сумма находится так:
 int sum= accumulate (&array[pos[0]], &array[pos[1]], 0);        
 printf ("sum= %d\n", sum);
 
 //хитрое преобразование:
 sort (array, &array[N], myfunction); 
 
 for (int i= 0;  i< N; i++) {
  printf ("%d ", array[i]);
 }
 printf ("\n");
 getchar ();
 return 0;
}
Добавлено через 43 секунды
А в конце память надо освободить, я забыл!
0
alkagolik
Заблокирован
15.10.2011, 02:45 12
быдлокодер впервые вижу такое на форуме
0
15.10.2011, 02:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2011, 02:45

Написать программу, которая будет показывать следующий день на определенным формате
помагите пожалуста написать программу которое будет показывать следующий день...

Написать программу, которая бы переводила слова «ДОБРЫЙ ДЕНЬ» по выбору на один из пяти языков
Здравствуйте. Помогите пожалуйста написать задачи. 1.Написать программу,...

Написать программу проверки знания даты начала второй мировой войны
Написать программу проверки знания даты начала второй мировой войны. В случае...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru