Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2016, 01:31   #1
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
По умолчанию Одномерный массив ( Си )

Почему при n = 4 , при значениях массива -1 0 0 0 , после вывода результата вылетает программа....
Вот код программы:
Код:
#include <stdio.h>
#include <conio.h>
#define OK 0
#define EMPTY_MASS -2
#define ERROR -1

int read_arr(int* mas, int* n);
void change_arr(int* mas, int n);

int read_arr(int* mas, int* n)
{
    int i;
    printf("\n Input n =");
    scanf("%d", n);
    if (*n == 0)
        return EMPTY_MASS;
    if (*n < 0)
        return ERROR;
    printf("\n Input elements of array: \n");
    for(i = 0; i < *n; i++)
    {
        printf("\n mas[%d] = ", i);
        scanf("%d", &mas[i]);
    }
    return OK;
}
void change_arr(int* mas, int n)
{
    int i, j, k = 0, col, new_mas;
    int mas_num[] = {};
    for(i = 0; i < n-1; i++)
    {
        col = 0;
        new_mas = mas[i];
        for(j = i+1; j < n; j++)
        {
            if (mas[j] == new_mas)
                col++;
        }
        if (col != 0)
        {
            col = 0;
            for (j = 0; j < k; j++)
            {
                if(mas[i] == mas_num[j])
                    col++;
            }
            if ( col == 0)
            {
                k++;
                mas_num[k-1] = mas[i];
                printf("%d ", mas[i]);
            }
        }
    }
}
int main()
{
    int mas[]= {};
    int n;

    switch (read_arr(mas, &n))
    {
        case EMPTY_MASS:
            printf("\n This array empty! \n");
            break;
        case ERROR:
            printf("\n n can't < 0! \n");
            break;ч
        case OK:
            printf("\n Repeating elements of array: \n");
            change_arr(mas, n);
    }
}
zaira001002 вне форума Ответить с цитированием
Старый 11.11.2016, 01:42   #2
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

А ну попробуй:
Код:
#include <stdio.h>
#include <conio.h>
#define OK 0
#define EMPTY_MASS -2
#define ERROR -1

int read_arr(int* mas, int* n);
void change_arr(int* mas, int n);

int read_arr(int* mas, int* n)
{
	int i;
	printf("\n Input n =");
	scanf("%d", n);
	if (*n == 0)
		return EMPTY_MASS;
	if (*n < 0)
		return ERROR;
	printf("\n Input elements of array: \n");
	for (i = 0; i < *n; i++)
	{
		printf("\n mas[%d] = ", i);
		scanf("%d", &mas[i]);
	}
	return OK;
}
void change_arr(int* mas, int n)
{
	int i, j, k = 0, col, new_mas;
	int mas_num[10];
	for (i = 0; i < n - 1; i++)
	{
		col = 0;
		new_mas = mas[i];
		for (j = i + 1; j < n; j++)
		{
			if (mas[j] == new_mas)
				col++;
		}
		if (col != 0)
		{
			col = 0;
			for (j = 0; j < k; j++)
			{
				if (mas[i] == mas_num[j])
					col++;
			}
			if (col == 0)
			{
				k++;
				mas_num[k - 1] = mas[i];
				printf("%d ", mas[i]);
			}
		}
	}
}
int main()
{
	int mas[10];
	int n;

	switch (read_arr(mas, &n))
	{
	case EMPTY_MASS:
		printf("\n This array empty! \n");
		break;
	case ERROR:
		printf("\n n can't < 0! \n");
		break; 
	case OK:
		printf("\n Repeating elements of array: \n");
		change_arr(mas, n);
	}
	_getch();
}
ura_111 вне форума Ответить с цитированием
Старый 11.11.2016, 02:20   #3
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
По умолчанию

РАБОТАЕТ!!!!!!! СПАСИБО!А чем почему тогда _getch() вместо getch()?
zaira001002 вне форума Ответить с цитированием
Старый 11.11.2016, 02:24   #4
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Понятие не имею. Я просто подглядел у одного чувака:

http://www.programmersforum.ru/showthread.php?t=299523

4.jpg

Последний раз редактировалось Вадим Мошев; 11.11.2016 в 05:26.
ura_111 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование в VBA: двумерный массив M на N, нужно создать новый одномерный массив TheAnnihilyator Помощь студентам 1 04.06.2014 09:16
Найти одномерный массив элементы которого равны минимальным значениям в строках исходной матрицы и одномерный массив элементы... Richik123 Microsoft Office Excel 1 16.10.2013 15:45
Двумерный массив развернуть в одномерный массив по строкам[QBASIC] TrueStyle777 Помощь студентам 3 29.05.2013 21:56
Дан одномерный массив, сформировать новый массив по заданному правилу {Delphi} Nickolai47 Помощь студентам 5 16.12.2012 14:51
Одномерный массив. Q basic - Построить новый массив из элементов исходного ,которые больше P. Marishkaa Помощь студентам 2 12.01.2010 16:54