Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437

Подсчитать количество пар одинаковых рядом стоящих элементов массива

11.10.2011, 19:54. Показов 3642. Ответов 35
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Программа, автоматическое заполнение 20 значного массива(вектора), под функция должна подсчитать количество пар одинаковых рядом стоящих элементов..
пример:
2 2 3 4 5 6 6 7 8 9 2 1 3 5 7 7 8 2 4 6
ответ: 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
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <time.h>
 
#define N 20
 
void p_pare(int *vector);
 
int main()
{//1
 int  *vector, i;
 system("cls");
 srand(time(NULL));
 
 vector = (int *)malloc(sizeof(int *)); 
 printf("\nVektors\n");
 for(i=0; i<N; i++)
 {//2
 printf("%3d", *(vector+i)=2-rand()%4);
 }//2
  printf("\n");
  p_pare(vector);
 system("pause");
 return 0;
}//1   
 
void p_pare(int *vector)
{//1a
int i, count = 0;
for(i = 0; i < N; i++)
{//2a
if(vector[i] == vector[i+1])
count++;
}//2a
return count;
}//1a
что-то он мне кричит на return count; и я не понимаю как вызвать ответ под функции в программе? можете помочь?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.10.2011, 19:54
Ответы с готовыми решениями:

Найти количество пар одинаковых рядом стоящих элементов в массиве
Функции с индексами и указателями считают количество пар одинаковых рядом стоящих элементов, например: 2 5 8 2 2 ответ: 1 пара , но...

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

Сосчитать пары рядом стоящих одинаковых элементов массива
Есть 20-ти значный массив с индексами, надо функцию для каждого массива которая будит вывод ответ на экран. Функция: сосчитать пары рядом...

35
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
11.10.2011, 20:50  [ТС]
Студворк — интернет-сервис помощи студентам
убираю count
C
1
2
3
4
5
6
7
8
9
10
void p_pare(int *vector, int *count)
{//1a
int i;
for(i = 0; i < N; i++)
{//2a
if(vector[i] == vector[i+1])
count++;
}//2a
return count;
}//1a
я вообще не понимаю что дальше, второе занятие а такие требования...
0
Заблокирован
11.10.2011, 20:53
Должно быть так

C++
1
2
3
4
5
6
7
8
9
void p_pare(int *vector, int *count)
{//1a
int i;
for(i = 0; i < N; i++)
{//2a
if(vector[i] == vector[i+1])
*count++;
}//2a
}/
0
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
11.10.2011, 21:05  [ТС]
пишет что слишком много аргументов, но мне кажется это из-за вызова функции, ответа

Добавлено через 9 минут
как сделать правильный вызов под функции и ответа на экран?
0
 Аватар для alkagolik
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
11.10.2011, 21:08
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int count_double(int *arr, const int size)
{
    int i = 0, count = 0;
    for (i; i < size - 1; ++i)
        if ( arr[i] == arr[i + 1] )
            ++count;
    return count;
}
 
int main()
{
    .....
    printf("%d ", count_double(array, size)); //array - массив, size - размер массива
    .....
}
1
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
11.10.2011, 21:10  [ТС]
мне надо через
C
1
void
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
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <time.h>
 
#define N 20
 
void p_pare(int *vector, int *count);
 
int main()
{//1
 int  *vector, i, count;
 system("cls");
 srand(time(NULL));
 
 vector = (int *)malloc(N * sizeof(int));
 printf("\nVektors\n");
 for(i=0; i<N; i++)
 {//2
 printf("%3d", *(vector+i)=2-rand()%4);
 }//2
  printf("\n");
  p_pare(vector);
 system("pause");
 return 0;
}//1   
 
void p_pare(int *vector, int *count)
{//1a
int i;
for(i = 0; i < N; i++)
{//2a
if(vector[i] == vector[i+1])
*count++;
}//2a
}//1a
где-то ошибка.. вывод ответа нет, не знаю как указать правильно..
0
 Аватар для alkagolik
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
11.10.2011, 21:14
C
1
2
3
4
5
6
7
8
void count_double(int *arr, const int size)
{
    int i = 0, count = 0;
    for (i; i < size - 1; ++i)
        if ( arr[i] == arr[i + 1] )
            ++count;
    printf("%d ", count);
}
1
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
11.10.2011, 21:17  [ТС]
как вызвать в самой программе?
0
Заблокирован
11.10.2011, 21:19
Мы уже с вами несколько раз обсуждали , что вы неправильно вызываете функцию p_pare!
0
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
11.10.2011, 21:21  [ТС]
Цитата Сообщение от Сыроежка Посмотреть сообщение
Мы уже с вами несколько раз обсуждали , что вы неправильно вызываете функцию p_pare!
а как надо? я вообще не понимаю как это всё делать, дали задание и вперёд, а как что, смотрю в презентациях, читаю в гугл, и желаю как там..
0
Заблокирован
11.10.2011, 21:23
Цитата Сообщение от Doctor_ Посмотреть сообщение
а как надо? я вообще не понимаю как это всё делать, дали задание и вперёд, а как что, смотрю в презентациях, читаю в гугл, и желаю как там..
Я вообще не понимаю, зачем вы ее вызываете, если результатом ее работы нигде в коде не пользуетесь?! Но правильно ее вызывать надо следующим образом


C++
1
p_pare(vector, &count );
0
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
11.10.2011, 21:26  [ТС]
Цитата Сообщение от Сыроежка Посмотреть сообщение
Я вообще не понимаю, зачем вы ее вызываете, если результатом ее работы нигде в коде не пользуетесь?! Но правильно ее вызывать надо следующим образом


C++
1
p_pare(vector, &count );
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
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <time.h>
 
#define N 20
 
void p_pare(int *vector, int *count);
 
int main()
{//1
 int  *vector, i, count;
 system("cls");
 srand(time(NULL));
 
 vector = (int *)malloc(N * sizeof(int));
 printf("\nVektors\n");
 for(i=0; i<N; i++)
 {//2
 printf("%3d", *(vector+i)=2-rand()%4);
 }//2
  printf("\n");
  printf("Paru sk rad ir:\n");
  p_pare(vector, &count);
 system("pause");
 return 0;
}//1   
 
void p_pare(int *vector, int *count)
{//1a
int i;
for(i = 0; i < N; i++)
{//2a
if(vector[i] == vector[i+1])
*count++;
}//2a
}//1a
самое интересно что ответа он никакого не выаодит
0
Заблокирован
11.10.2011, 21:28
Цитата Сообщение от Doctor_ Посмотреть сообщение
самое интересно что ответа он никакого не выаодит
Так и я о том же! Что вам надо наверное вывести значение count на экран после вызова вашей функции, или нет?
0
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
11.10.2011, 21:49  [ТС]
Цитата Сообщение от Сыроежка Посмотреть сообщение
Так и я о том же! Что вам надо наверное вывести значение count на экран после вызова вашей функции, или нет?
мне надо вывести количество этих пар

Добавлено через 7 минут
надо что-о в printf написать?

Добавлено через 12 минут
как это печально..
0
 Аватар для alkagolik
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
11.10.2011, 22:18
Цитата Сообщение от Doctor_ Посмотреть сообщение
как вызвать в самой программе?
C
1
2
3
4
5
6
int main()
{
    ...
    count_double(array, size);   // array - массив, size - размер массива
    ...
}
1
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
11.10.2011, 22:25  [ТС]
он всегда пишет что ответ 1

Добавлено через 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
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <time.h>
 
#define N 20
 
void count_double(int *vector, const int size);
 
int main()
{//1
 int  *vector, i, size;
 system("cls");
 srand(time(NULL));
 
 vector = (int *)malloc(N * sizeof(int));
 printf("\nVektors\n");
 for(i = 0; i < N; i++)
 {//2
 printf("%3d", *(vector+i)=2-rand()%4);
 }//2
  printf("\n");
  printf("sadasdas\n");
 count_double(vector, size);
 system("pause");
 getch();
 return 0;
}//1   
 
void count_double(int *vector, const int size)
{
    int i = 0, count = 0;
    for (i; i < size - 1; ++i)
        if ( vector[i] == vector[i + 1] )
            ++count;
    printf("%d ", count);
}
пишет ответ 1
0
 Аватар для alkagolik
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
11.10.2011, 22:32
ваш код, доведенный до ума. проверьте каждую строчку. сбой был потому что вы не передавали размер массива в функцию. вызывая функцию malloc нельзя забывать об освобождении памяти и в конце программы вызывать free(), так же следует проверять код, возвращенный функциями malloc(), realloc(), calloc()...
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define N 20
 
void count_double(int *vector, const int size);
 
int main()
{
    int  *vector = 0, i;
    srand(time(NULL));
 
    vector = (int *)malloc(N * sizeof(int));
    if (!vector) exit (-1);
 
    printf("\nVektors\n");
    for(i = 0; i < N; i++)
        printf("%3d", *(vector + 0) = rand() % 4);
    printf("\n");
 
    printf("sadasdas\n");
    count_double(vector, N);
 
    free(vector);
    return 0;
}
 
void count_double(int *vector, const int size)
{
    int i = 0, count = 0;
    for (i; i < size - 1; ++i)
        if ( *(vector + i) == *(vector + i + 1) )
            ++count;
    printf("%d ", count);
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.10.2011, 22:32

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

Найти количество пар одинаковых рядом стоящих элементов массива
Найти количество пар одинаковых рядом стоящих элементов массива

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

В одномерном целочисленном массиве подсчитать количество пар, стоящих рядом четных элементов
В одномерном целочисленном массиве подсчитать количество пар, стоящих рядом четных элементов.

Подсчитать количество пар стоящих рядом элементов, имеющих одинаковые значения, но разные знаки
Дан массив целых чисел А1, А2, ... А47. Подсчитать количество пар состоящих из двух рядом стоящих элементов, имеющих одинаковые значения,...


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

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
Новые блоги и статьи
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru