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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.10.2012, 10:38   #1
glebast
Форумчанин
 
Аватар для glebast
 
Регистрация: 10.12.2011
Сообщений: 154
Восклицание Задача с массивами на Си

Привет ребятки.
Вот мне нужно задачку на Си решить. Вот условие:

Код:
В одномерном массиве, состоящем из n целочисленных элементов, вычислить: 
  номер максимального элемента массива; 
  произведение  элементов  массива,  расположенных  между  первым  и  вторым  нулевыми 
элементами. 
Преобразовать массив таким образом, чтобы в первой его половине располагались элементы, 
стоявшие в нечетных позициях, а во второй половине – элементы, стоявшие в четных позициях.
Вот мои наработки (сделал только первый пункт):

Код:
#include <stdio.h>

void main(void){
 int i, n, j[100], k=0, min, s;

printf("N="); scanf("%i",&n);

 for (i=1; i<=n; i++){
     min=j[1];
     printf("j%i = ",i); scanf("%i",&j[i]);
     
     if (j[i]<min) min=i;
 
     }    


     printf("J min - %i element\n",min);

     
     system("pause");
     return 0;
     }
Не могу сделать действие между двумя нулями, как это вообще реализовать?
Заранее спасибо.
glebast вне форума Ответить с цитированием
Старый 01.10.2012, 11:00   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Во-первых, массивы в С/С++ нумеруются с 0
Во-вторых, что-то типа:
Код:
p = 1;
i = 0;
while ((i < n) && (j[i] <> 0)) ++i;
if(i != n){
  ++i;
  while((i < n) && (j[i] <> 0)) p *= j[i];
}
if(i == n) ....
p51x вне форума Ответить с цитированием
Старый 01.10.2012, 11:05   #3
glebast
Форумчанин
 
Аватар для glebast
 
Регистрация: 10.12.2011
Сообщений: 154
По умолчанию

Цитата:
p = 1;
i = 0;
while ((i < n) && (j[i] <> 0)) ++i;
if(i != n){
++i;
while((i < n) && (j[i] <> 0)) p *= j[i];
}
if(i == n) ....
Так не, тут ты считаешь произведение всех элементов кроме нуля, а в условии написано надо посчитать между нулями, т.е. если 2 3 5 0 6 5 0 3 то он должен посчитать 6*5
glebast вне форума Ответить с цитированием
Старый 01.10.2012, 12:22   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Вы уверены?

Код:
пока не ноль брать следущий элемент - поиск первого нуля
сдвиг с нуля
пока не ноль перемножать - поиск второго нуля
как раз 6*5 и посчитает
p51x вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача с массивами Koreps Паскаль, Turbo Pascal, PascalABC.NET 3 28.03.2012 03:55
Задача с массивами my_blood_is_blue Помощь студентам 6 29.12.2011 00:08
Задача с массивами investr Паскаль, Turbo Pascal, PascalABC.NET 1 30.11.2011 21:43
Задача с массивами. Fender92 Паскаль, Turbo Pascal, PascalABC.NET 3 20.03.2011 14:19
Задача с Массивами Fender92 Паскаль, Turbo Pascal, PascalABC.NET 0 17.03.2011 11:53