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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2015, 10:23   #1
kaktotaksyak
Новичок
Джуниор
 
Регистрация: 24.12.2015
Сообщений: 4
По умолчанию Вылетает прога на Си

В общем пытался решить с сайта задание - Задан целочисленный массив из N элементов. N<=30. Пользователь задает некоторое целое число. Необходимо посчитать, количество элементов массива меньших по модулю этого числа. Вот мой код, который вылетает после компиляции и запуска:
Код:
#include <stdio.h>
#include <stdlib.h>

int main() {
	int a,N,A[N],s,k;
	printf("Vvedite kolvo mas:");
	scanf("%d",&N);
	
	printf("chislo",&a);
	scanf("%d,&a");
	
	for(s=0; s<N; s++){
	A[s]=s+1;
	}
                for(s=0;s<N;s++){
		if (a>A[s])
		k++;
}
	for(s=0; s<N; s++)
	printf("menshe:%d",&k);
	return 0;
}

Последний раз редактировалось Stilet; 24.12.2015 в 10:41.
kaktotaksyak вне форума Ответить с цитированием
Старый 24.12.2015, 10:25   #2
kaktotaksyak
Новичок
Джуниор
 
Регистрация: 24.12.2015
Сообщений: 4
По умолчанию

Вот скринoshib.jpg
kaktotaksyak вне форума Ответить с цитированием
Старый 24.12.2015, 10:31   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Вы объявили N и сразу же A[N]. Размер массива уже будет определен тут. После считывания N он уже не изменится. Нужно или динамически выделять память, или объявлять массив после считывания N, если компилятор позволит так сделать.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 24.12.2015, 10:32   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Код:
int a,N,A[N],s,k;
Как думаете чему тут будет равно N? а какого размера будет массив A?
p51x вне форума Ответить с цитированием
Старый 24.12.2015, 10:36   #5
kaktotaksyak
Новичок
Джуниор
 
Регистрация: 24.12.2015
Сообщений: 4
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Вы объявили N и сразу же A[N]. Размер массива уже будет определен тут. После считывания N он уже не изменится. Нужно или динамически выделять память, или объявлять массив после считывания N, если компилятор позволит так сделать.
Теперь запускается (объявил массив после ввода N), но результат оставляет желать лучшего.
oshib.jpg
kaktotaksyak вне форума Ответить с цитированием
Старый 24.12.2015, 10:40   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Во-первых, не нужно в цикле производить печать. Во-вторых, не нужно брать адрес переменной k вместо ее значения.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 24.12.2015, 10:51   #7
kaktotaksyak
Новичок
Джуниор
 
Регистрация: 24.12.2015
Сообщений: 4
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Во-первых, не нужно в цикле производить печать. Во-вторых, не нужно брать адрес переменной k вместо ее значения.
Изменил, все равно результат с ошибкойosh.jpg
kaktotaksyak вне форума Ответить с цитированием
Старый 24.12.2015, 11:52   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Во-первых, сначала считайте значение в "a", а затем выводите. Во-вторых, инициализируйте переменную k нулем.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 24.12.2015, 12:23   #9
taras-proger
Подтвердите свой е-майл
 
Регистрация: 12.11.2014
Сообщений: 470
По умолчанию

А чего ты ждал?
Код:
int a,N,A[N],s,k;
. В этот момент в N мусор и не факт, что массив вообще создан.
Код:
scanf("%d",&N);
Поздно, массив декларирован выше. Мало того, даже
Код:
int N;
scanf("%d",&N);
int a,A[N],s,k;
не поможет, так как массив всё равно декларирован на этапе разработки, то есть до запуска, а значение введено на этапе исполнения, то есть после запуска, а значит и после декларации массива. N должно быть известно на этапе компиляции, то есть быть константой, только тогда массив будет гарантированно создан.

Последний раз редактировалось taras-proger; 24.12.2015 в 12:26.
taras-proger вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вылетает какая-то установочная прога Liberty_Fox Безопасность, Шифрование 2 12.11.2015 14:32
При вычислении больших чисел вылетает прога Пенек Помощь студентам 11 15.10.2011 20:41
Прога вылетает при нажатии кнопки.. Дмитрий142 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 15.03.2011 08:36
Прога вылетает Fi11eR Паскаль, Turbo Pascal, PascalABC.NET 4 18.06.2009 19:56
не могу найти почему вылетает прога Андрей Куб Общие вопросы Delphi 19 28.04.2009 06:54