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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2019, 00:15   #1
Jcrover
Новичок
Джуниор
 
Регистрация: 20.10.2019
Сообщений: 2
По умолчанию Помогите найти ошибку (СИ)

Добрый вечер, условие задачи: Нужно найти максимальный эл.массива.
Не могу понять почему генерирует массив выходящий за пределы, прошу помочь, подсказать. В СИ полный ноль, поэтому прошу понять и простить(
Код:
#include<stdio.h>
#include <time.h>
#include <stdlib.h>
#include <locale.h>
//#define N 10 // Размер массива

int main() {
	setlocale(LC_ALL, "Rus");
	srand(time(NULL));
	const int N = 10;
	printf("Введите размер массива : ");
	scanf_s("%d", &N);
	int k = 0;
	double arr[] = {N};
	printf("\n Выберите режим ввода: 1 - генерация, 2 - ручной ввод : ");
	scanf_s("%i", &k);
	if (k == 1) {
		for (int i = 0; i < N; i++) {
			 arr[i] = rnd() % 21-10 ;
		}
		printf("\n Сгенерированы следующие элементы: ");
		for (int i = 0; i < N; i++) {
			printf("%10.2f ", arr[i]);
		}
	}
	else if (k == 2) {
		printf("Ввод: ");
		for (int i = 0; i < N; i++) {
			scanf_s("%d", &arr[i]);
		}
		printf("\n Вы ввели следующие элементы: ");
		for (int i = 0; i < N; i++) {
			printf("%10.2f ", arr[i]);
		}
	}
	k = 0;
	printf("\n Выберите вид цикла для поиска: 1 - for, 2 - while, 3 - do while : ");
	scanf_s("%i", &k);
	int max = 0;
	int i = 0;
	switch (k) {
	case 1:
		for (i = 0; i < N; i++) {
			if (max < arr[i]) {
				max = arr[i];
			}
		}; break;
	case 2:
		while (i < N) {
			if (max < arr[i]) {
				max = arr[i];
			}
			i++;
		} break;
	case 3:
		do {
			if (max < arr[i]) {
				max = arr[i];
			}
			i++;
		} while (i < N); break;
	default:
		for (int i = 0; i < N; i++) {
			if (max < arr[i]) {
				max = arr[i];
			}
		}
	}
	printf(" max = %d \n", max);
	for (int i = 0; i < N; i++) {
		printf("%10.2f ", arr[i]);
	}
}
Jcrover вне форума Ответить с цитированием
Старый 22.10.2019, 06:19   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Код:
	const int N = 10;
	printf("Введите размер массива : ");
	scanf_s("%d", &N);
Так константа или вводите?

Код:
double arr[] = {N};
Это массив из 1 элемента.
p51x вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[C++] найти сумму ряда , посчитать функцию ch(x) и найти абсолютную и относительную погрешности. Помогите найти ошибку! Vladonna Помощь студентам 2 13.09.2018 22:07
Помогите, пожалуйста, найти ошибку в коде (найти сумму факториалов чётных чисел в заданном диапазоне) kris14 Паскаль, Turbo Pascal, PascalABC.NET 8 25.10.2017 15:42
Дан массив а(n) типа SWORD. найти сумму всех отрицательных элементов массива.помогите найти ошибку Юлия123456 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 07.09.2016 06:12
Найти седловые точки в матрице(помогите найти ошибку) - pascal tdsotm Помощь студентам 0 20.11.2014 18:57
Помогите найти ошибку - StrToFloat выдаёт ошибку EConvertError для ячеек StringGrid (Delphi) Artsiom Помощь студентам 10 18.12.2013 14:10