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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2015, 01:57   #1
Pug_from_Mordor
Пользователь
 
Аватар для Pug_from_Mordor
 
Регистрация: 09.11.2014
Сообщений: 40
Сообщение Не работает программа по вводу/выводу массива в СИ.

Написал простую программу по вводу всех элементов вещественного массива, а затем их выводу. Но программа отказывается нормально считывать и выводить элементы массива. Что делать?
Код:
#include<stdio.h>
#include<locale.h>

int main(void)
{
        int n;  
	float a[n];

	setlocale(LC_ALL, "RU");  
	printf("Введите размер массива: ");
	scanf("%d", &n);
        printf("Введите все элементы массива через пробел:\n");

	for(int i=0; i<n; ++i)     //Считывание всех элементов массива.
		scanf("%f", &a[i]);
	
	for(int i=0; i<n; ++i)       //Вывод всех элементов массива.
		printf("a[%d]=%.2f\n", i, a[i]);

	return 0;
}
Pug_from_Mordor вне форума Ответить с цитированием
Старый 04.01.2015, 10:34   #2
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

Я бы сделал вместо массива float массив double и вместо %f писал %lf, поскольку студия может не использовать тип float, а неявно заменять его double.
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Старый 04.01.2015, 10:39   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Это не через пробел, а через enter.
Код:
for(int i=0; i<n; ++i)     //Считывание всех элементов массива.
  scanf("%f", &a[i]);
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 04.01.2015, 16:58   #4
Aleksander550
Форумчанин
 
Регистрация: 07.01.2014
Сообщений: 124
По умолчанию

Цитата:
Код:
 
int n;  
float a[n];
у вас массив статический, а размер вы ему задаёте переменной - это ошибка.
в вашем случае надо
Код:
#include<stdio.h>
#define Size 100
int main(){
	int n, i;
	float a[Size];
  do {
	printf("Введите размер массива(0<n<Size): ");
	scanf("%d", &n);
 } while ((n < 0) || (n > Size));//проверка границ массива
	printf("\nВведите все элементы массива через Enter:\n");
	for(i=0; i<n; ++i)     //Считывание всех элементов массива.
		scanf("%f", &a[i]);
	for(i=0; i<n; ++i)       //Вывод всех элементов массива.
		printf("a[%d]=%.2f\n", i, a[i]);
	scanf("%d", &n);//чтобы окно не закрылось
}
#define TRUE FALSE //счастливой отладки

Последний раз редактировалось Aleksander550; 04.01.2015 в 18:12.
Aleksander550 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по вводу массива Shredzer Помощь студентам 11 30.07.2014 23:02
Программа по выводу картинок (C++ и DirectX) Venetti Общие вопросы C/C++ 0 05.05.2011 19:08
Почему программа на С++ не работает с локальным описанием массива, но работает с глобальным? >>STINGER<< Помощь студентам 4 08.03.2011 09:56
Программа по выводу матрицы. Ekvental Помощь студентам 2 14.01.2011 16:55