Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 09.04.2014
Сообщений: 60
1

Вывести сумму чисел из данного набора, расположенных между последними двумя нулями (консольное приложение)

24.10.2014, 09:23. Показов 1444. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дано целое число N и набор из N целых чисел, содержащий по крайней мере два нуля. Вывести сумму чисел из данного набора, расположенных между последними двумя нулями (если последние нули идут подряд, то вывести 0).
Помогите решать...
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.10.2014, 09:23
Ответы с готовыми решениями:

Вывести сумму чисел из данного набора, расположенных между последними двумя нулями
Дано целое число N и набор из N целых чисел, содержащий по крайней мере два нуля. Вывести сумму...

Вывести сумму чисел из данного набора, расположенных между последними двумя нулями
№2 Дано целое число N и набор из N целых чисел, содержащий по крайней мере два нуля. Вывести сумму...

Вывести сумму чисел из данного набора, расположенных между последними двумя нулями (С++ -> Си)
Доброго времени суток, дорогие работяги! Мне нужна ваша помощь. А именно: Нужно перевести этот...

Вывести сумму чисел из данного набора, расположенных между последними двумя нулями
Дано целое число N и набор из N целых чисел, содержащий по крайней мере два нуля. Вывести сумму...

2
25 / 25 / 22
Регистрация: 18.09.2014
Сообщений: 218
24.10.2014, 10:29 2
Лучший ответ Сообщение было отмечено SADU как решение

Решение

т.е. например N=10. Набор: 1,2,3,4,5,6,7,0,8,9,0 (тоже например). Надо найти сумму 8+9?
Могу посоветовать набор писать в массив размером N.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var i,j,k,n, sum:integer;
     mass:array[0..255] of integer;//или можешь объявить динамический
begin
   k:=0;//Счетчик попавшихся нулей
   for i:=n-1 downto 0 do begin
      if mass[i]=0 then begin
         k:=k+1;
         for j:=i-1 downto 0 do begin
            if mass[j]<>0 then sum:=sum+mass[j]
            else break;
         end;  
      end;
      if k=2 then break;
   end;
   //тут пропишешь вывод результата
end;
Примерно так. Компилятора под рукой нет, проверить не могу.
0
Модератор
9267 / 6045 / 2380
Регистрация: 21.01.2014
Сообщений: 25,815
Записей в блоге: 3
24.10.2014, 13:48 3
Если не критично отсутствие массивов, то можно как-то так сделать...
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    UpDown1: TUpDown;
    Button1: TButton;
    StringGrid1: TStringGrid;
    Button2: TButton;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
begin
//Задаем количество и ширину колонок StringGrid в зависимости от числа элементов
 StringGrid1.ColCount := UpDown1.Position;
 for i := 0 to StringGrid1.ColCount - 1 do
  StringGrid1.ColWidths[i] := StringGrid1.Width div UpDown1.Position - 2;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var
 i, z1, z2, summ : integer;
 FirstZero : boolean;
begin
 FirstZero := true;
 summ := 0;
 with StringGrid1 do
  begin
//Проверяем правильность введенных данных
   for i := 0 to ColCount - 1 do
    if not TryStrToInt(Cells[i, 0], z1)
     then begin
           ShowMessage(Format('Неверный ввод данных в столбце %d',[i]));
           Exit;
          end;
//Проверяем наличие 2-х нулей и их позиции
   z1 := 0; z2 := 0;
   for i := ColCount - 1 downto 0 do
    begin
     if(StrToInt(Cells[i, 0]) = 0) and (FirstZero)
      then begin
            FirstZero := false;
            z1 := i;
            continue;
           end;
     if(StrToInt(Cells[i, 0]) = 0) and (not FirstZero)
      then begin
            z2 := i;
            break;
           end;
    end;
   if FirstZero
    then begin
          ShowMessage('Нет ни одного ноля. Измените данные');
          Exit;
         end;
   if (z2 = 0) and (StrToInt(Cells[0, 0]) <> 0)
    then begin
          ShowMessage('Всего один ноль. Измените данные');
          Exit;
         end;
   if z1 - z2 = 1
    then begin
          ShowMessage('Два ноля подряд. Измените данные');
          Exit;
         end;
//Если все нормально - считаем сумму
   for i:= z2 to z1 do
    summ := summ + StrToInt(Cells[i, 0]);
  end;
 Label2.Caption := Format('Сумма элементов между двумя последними нолями = %d', [summ]);
end;
 
end.
Миниатюры
Вывести сумму чисел из данного набора, расположенных между последними двумя нулями (консольное приложение)  
0
24.10.2014, 13:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.10.2014, 13:48
Помогаю со студенческими работами здесь

Вывести сумму чисел из набора, расположенных между последними двумя нулями
Дано целое число N и набор из N целых чисел, содержащий по крайней мере два нуля. Вывести сумму...

Вывести сумму чисел из данного массива, расположенных между последними двумя нулями
Дан целочисленный массив, содержащий по крайней мере два нуля. Вывести сумму чисел из данного...

Вывести сумму чисел из данного набора, расположенных между двумя нулями
Задание: дано целое число N и набор из N целых положительных чисел, содержащий по крайней мере два...

Вывести сумму чисел из данного набора, расположенных между первыми двумя нулями
Если на затруднит. Завтра зачёт, а препод поставил условие решать НЕ ЧЕРЕЗ МАССИВЫ. если кто-то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru