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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2010, 13:00   #1
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
По умолчанию массив С++

здравствуйте, помогите решить задачку
вроде не сложная, но ответ выводит не тот..
в массиве нужно посчитать кол-во элементов, чья сумма не больше введенного числа k, например
Код:
7
1 2 3 4 5 6 7
10
ответ: 4, т. к сумма первых 4 элементов = 10
или
7
7 6 5 4 3 2 1
ответ: 1, т.к 7<10
пишу)
Код:
#include <iostream>
using namespace std;

	int airTrip (int *n, int *a) {
	 int c=0,  k=0, sum = 0;
	    for (int i=1; i<*n; i++) {
	     while (sum <= k) 
		 sum+=a[i]; 	
		  c++;
		  }
	return c;
	}
	 
	int main() {
	   int n, k;
	   cin >>n;
	   int a[n];
	   for (int i=0; i<n; i++)
	   cin >>a[i];
	   cin >>k;
	   cout << airTrip (&n, a);
	return 0;
	}
кажется это чушь)
I'm a rebel. [I think positively].
Guzal вне форума Ответить с цитированием
Старый 16.11.2010, 13:12   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

Код:
 int k=0
Вы всегда считаете сумму чисел, кот. меньше 0.
p51x вне форума Ответить с цитированием
Старый 16.11.2010, 13:14   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
кажется это чушь)
А знаешь почему?
Если нет то отсортируй массив по убыванию, а потом
Код:
for(int sum=0;sum<k&&i<Кол-воЭлементов;i++) sum+=a[i];
Где a[i] - элемент отсортированного массива
Вся соль в сортировке - сделаешь ее получишь возможность пройтись по массиву в одностороннем порядке.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.11.2010, 19:09   #4
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
По умолчанию

оказывается мой код работает, если написать не через функцию и без указателей..
Код:
#include <iostream>
using namespace std;
	int main() {

	   int n, k;
	   cin >>n;
	   int a[n];
	   for (int i=0; i<n; i++)
	   cin >>a[i];
	   cin >>k;
	
	  int c=0, sum = 0;
	     
	     for(int i=0;i<n;i++){
 			sum=a[i]+sum;
 			if(sum<=k) c++;
 				
			}
	         cout <<c;
	
	return 0;
	}
I'm a rebel. [I think positively].
Guzal вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как конвертировать массив символов в массив байт davinci C++ Builder 6 30.10.2010 18:09
Одномерный массив , двухмерный массив Woxx Паскаль, Turbo Pascal, PascalABC.NET 0 10.09.2010 09:28
Одномерный массив. Q basic - Построить новый массив из элементов исходного ,которые больше P. Marishkaa Помощь студентам 2 12.01.2010 16:54
Двумерный массив, одномерный массив. Branbal Помощь студентам 14 18.11.2009 12:40
Упорядочить массив в порядке возрастания и напечатать входной и исходный массив. TheVenny Помощь студентам 3 26.11.2008 15:06