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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2011, 14:55   #1
torren108
Пользователь
 
Регистрация: 28.09.2011
Сообщений: 17
По умолчанию Неверный поиск элемента массива.

Задание: задается массив, его элементы. Программа ищет наименьший кратный 7ми и наибольший, порядковый номер которого больше его значения. С первым элементов все хорошо, а второй почему то всегда получается равным -858кк... Программа не дописана, не обращайте внимания на хвост, также простите за излишние комментарии.
Что у меня написано не так? Как заставить программу считать последний элемент верно?



Код:
// l113.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <stdio.h>
#include <locale.h>
#define N 100

void main()
{
	setlocale(LC_ALL, "russian_russia.1251");				//возможность вывода кириллицы

	int M[N], i, sum, n, k, na7, kon;						//i - номер элемента, sum - сумма, n - количество элементов, k - длинна массива
															//na7 - первый эл-т последовательности, делящийся на 7; 
															//kon - последний эл-т, у которого M[i]<i. юс: (i=k; i--)
//ЧАСТЬ 1. Создание и заполнение массива.
l:															//телепорт

	printf("Введите длинну массива (не больше 100):\n");			
	scanf_s("%d", &k);					
	
//	k--;													//убрал 0й элемент

 		if ((k < 1) || (k > N))								//защита от дурака
		{
			printf("\n Не попали в диапазон (не больше 100 элементов)!\n");
			goto l;
			return;
		
		}

	printf("Введите элементы массива:\n");

		for (i=0; i<k; i++)									//присваиваем поочередно значение каждому элементу массива
			scanf_s("%d", &M[i]);

/*		for (i=0; i<k; i++)							        //самопроверка, закомментить от сих			//НЕПОНЯТНАЯ МАГИЯ
			printf("\n%d\n", M[i]);																		//ОСТАВИТЬ КАК ЕСТЬ, ОНО РАБОТАЕТ! о__О
*/

//ЧАСТЬ 2. Нахождение первого и последнего элемента последовательности.
		for (i=0; i<k; i++)									//вычисление и запись наименьшего кратного 7
			if (M[i]%7==0)
			{
				na7 = M[i];
				break;
			}

		for (i=k; i>0; i--)									//вычисление и запись последнего "знач<номер"
			if (i>M[i])
			{
				kon = M[i];
				break;
			}

			printf("Первый и последний элемент последовательности: %d, %d", na7, kon);

//ЧАСТЬ 3. Подсчет суммы и количества элементов последовательности.
		sum=0;												
		i=na7;
		while(i<=kon)
		{
			sum+=M[i];
			i++;
		}

		printf("Сумма равна %d\n", sum);
}
torren108 вне форума Ответить с цитированием
Старый 22.10.2011, 23:30   #2
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Код:
for (i=k; i>0; i--)
Последний элемент массива не k-й, а k-1, а первый 0, т. д.б
for (i=k-1; i>0; i--)
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal. поиск макс. элемента массива Сергей К. Помощь студентам 12 10.12.2009 21:14
поиск мин. элемента массива lg12 Помощь студентам 1 10.07.2009 15:07
Поиск минимального (максимального) элемента массива Radamant Помощь студентам 10 24.12.2008 17:44
Поиск позиции элемента несортированного массива gdneon Microsoft Office Excel 4 16.04.2007 08:08