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

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

Восстановить пароль Регистрация
 
Serzhik
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 20
14.10.2011, 22:51     Написать программу по C++. Уже второй день голову ломаю... #1
Задание в общем понятное(вложенный файл C_PP.gif), но черт голову сломаешь как это все реализовать.

Есть предположение для того чтобы создать массив надо использовать вложение while в for по схеме
(вложенный файл 321.gif)
Однако потом опять тупик - как этот массив потом прочитать и выделить из него четные элементы массива чтобы потом их перемножить, а также как определить начальный и конечный нулевой элемент и сложить элементы находящиеся между ними
Миниатюры
Написать программу по C++. Уже второй день голову ломаю...   Написать программу по C++. Уже второй день голову ломаю...  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2011, 22:51     Написать программу по C++. Уже второй день голову ломаю...
Посмотрите здесь:

Написать программу проверки знания даты начала второй мировой войны C++
C++ помогите написать программу, которая считывает содержимое файла, преобразовывает его и записывает во второй фаил
Написать программу, которая бы переводила слова «ДОБРЫЙ ДЕНЬ» по выбору на один из пяти языков C++
C++ Я второй день как учу С++ (найти ошибки в коде)
Второй день не могу заменить объявление массива C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.10.2011, 22:55     Написать программу по C++. Уже второй день голову ломаю... #2
Serzhik, задание слабо перепечатать? у меня ваша картинка не открывается
Serzhik
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 20
14.10.2011, 23:01  [ТС]     Написать программу по C++. Уже второй день голову ломаю... #3
Jupiter, двойной клик по изображению откроет его в новом окне
aeshes
 Аватар для aeshes
437 / 200 / 13
Регистрация: 07.10.2011
Сообщений: 462
14.10.2011, 23:02     Написать программу по C++. Уже второй день голову ломаю... #4
Serzhik, оно имеет вид черного квадрата с точками тогда
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.10.2011, 23:08     Написать программу по C++. Уже второй день голову ломаю... #5
Serzhik, кому нужно задание мне или вам? а вы хотите чтобы я еще делал двойной клик
jonson
 Аватар для jonson
231 / 204 / 61
Регистрация: 18.03.2010
Сообщений: 749
14.10.2011, 23:12     Написать программу по C++. Уже второй день голову ломаю... #6
второй клик как раз на том окне с точками. У меня вроде открывается.
aeshes
14.10.2011, 23:20
  #7

Не по теме:

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

alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
15.10.2011, 00:18     Написать программу по C++. Уже второй день голову ломаю... #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
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
15.10.2011, 00:51     Написать программу по C++. Уже второй день голову ломаю... #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);
}
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
15.10.2011, 01:11     Написать программу по C++. Уже второй день голову ломаю... #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]);
}
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
15.10.2011, 02:25     Написать программу по C++. Уже второй день голову ломаю... #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 секунды
А в конце память надо освободить, я забыл!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2011, 02:45     Написать программу по C++. Уже второй день голову ломаю...
Еще ссылки по теме:

C++ Написать программу решение квадратного уравнения. Программа должно проверять правельность исходных данных и в случае, если коэффициент при второй степ
C++ Всю голову сломала этими матрицами! Дана матрица.Написать программу, которая упорядочивает элементы каждой строки этой матрицы по возрастанию
C++ Графы с++, пожалуйста, всю голову уже сломал

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

Или воспользуйтесь поиском по форуму:
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
15.10.2011, 02:45     Написать программу по C++. Уже второй день голову ломаю... #12
быдлокодер впервые вижу такое на форуме
Yandex
Объявления
15.10.2011, 02:45     Написать программу по C++. Уже второй день голову ломаю...
Ответ Создать тему
Опции темы

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