Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
1 / 1 / 3
Регистрация: 24.03.2010
Сообщений: 50

Составить программу, которая подсчитывает количество различных по значению элементов в нём

29.03.2010, 21:04. Показов 1414. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста с задачами.

1.Составить программу, которая определяет количество положительных элементов до последнего нулевого элемента и количество отрицательных после него в массивах Y(N) и X(M). Вычисление количества элементов оформить в виде подпрограммы.

2.Дан одномерный массив Х, состоящий из 20 целых чисел. Составить программу, которая подсчитывает количество различных по значению элементов в нём.


Мои соображения к первой задаче:
Pascal
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
program MyProgram;
uses crt;
const n=5;
var
    i,j,r,r1,Pol,otr,pol1,otr1: integer;
    a,b:Array [1..n] of integer;
    procedure MyProcedure(var l,p,o:integer);
        begin
             p:=0;
             o:=0;
             if l>0 then P:=P+1;
             if l<0 then O:=O+1;
        end;
 
begin
     clrscr;
     Writeln('Vvedite perviy massiv');
 
     for i:=1 to n do
     readln (A[i]);
 
     Writeln('Vvedite vtoroy massiv');// ввожу массивы
 
     for j:=1 to n do
     readln(b[j]);
 
 
 
     for i:=1 to n do
     if A[i]=0 then r:=i; // Решил сделать флаг чтобы найти ноль в массиве
 
     for j:=1 to N do
     if b[j]=0 then r1:=i;// второй флаг для второго массива
 
     for i:=1 to A[r] do
     MyProcedure(a[i],pol,otr); // Применяю процедуру
 
     writeln('pologitelnie elementi v pervom massive  do nylevogo elementa ',pol);
 
     for i:=A[r] to n do
     MyProcedure(A[i],pol,otr);
 
     writeln('otrizatelnye elementi v pervom massive posle nylevogo elementa ',otr);
 
     for j:=1 to b[r1] do
     MyProcedure(b[j],pol1,otr1);
 
     writeln('pologitelnye elementi vo vtorom massive do nylevogo elementa ',pol1);
 
     for j:=b[r1] to n do
     MyProcedure(b[j],pol1,otr1);
 
     writeln('otrizatelnye elementy vo vtorom massive posle nylevogo elementa ',otr1);
 
     readkey;
end.
Программа работает не правильно. Думаю что ошибка в процедуре но не могу найти в чём именно.

Буду очень благодарен за помощь.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.03.2010, 21:04
Ответы с готовыми решениями:

Напишите программу, которая сортирует массив целых чисел и определяет количество различных значений в нём
Помогите написать код,спасибо.Напишите программу, которая сортирует массив целых чисел и определяет количество различных значений в нём. ...

Составить программу, которая подсчитывает количество символов во втором слове
там что-то через length, но вот как именно второго слова я хз, помогите

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

6
 Аватар для pazlle
27 / 17 / 8
Регистрация: 02.11.2009
Сообщений: 176
29.03.2010, 21:16
Цитата Сообщение от Terik Посмотреть сообщение
for i:=1 to n do readln (A[i]);
Цитата Сообщение от Terik Посмотреть сообщение
for i:=1 to n do if A[i]=0 then r:=i; // Решил сделать флаг чтобы найти ноль в массиве
Ошибка в этом!=)

Добавлено через 49 секунд
i это тупо счётчик индексов, сделай лучше флаг типа boolean

Добавлено через 5 минут
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
program SummaElrm;
const n=20;
var i,sum:integer;
begin
     for i:=1 to n do begin
     writeln('a[',i,']');
     end;
   sum:=0;//Инициализация суммы
   for i:=1 to n do
//проверка уловия
 if a[i]<>a[i+1] then sum:=sum+a[i];
 
write('Сумма равна  ', sum);
end;
0
1 / 1 / 3
Регистрация: 24.03.2010
Сообщений: 50
29.03.2010, 21:34  [ТС]
Я тоже думал над тем чтобы задать флагу булевский тип, но не смог додуматься как задать условие чтобы он просчитывал положительные суммы до флага и отрицательные после флага
0
 Аватар для pazlle
27 / 17 / 8
Регистрация: 02.11.2009
Сообщений: 176
29.03.2010, 21:37
Заведи 2 флага. Для положительный и отрицательных, и проинициализируй, и в нужный момент поменяй.=)
0
1 / 1 / 3
Регистрация: 24.03.2010
Сообщений: 50
29.03.2010, 21:59  [ТС]
Ты меня не правильно понял саму систему я понял но как это именно в коде будет выглядеть?

Не думаю что правильно будет написать

For i:=1 to N do
If A[i]=True do pol:=Pol+1 // Опустил предыдущие описания

Добавлено через 6 минут
Мне понравилась идея флага не булевского типа именно тем, что я как бы делю весь массив на отрезки. первый отрезок до нуля, а второй отрезок после нуля и просто применяю процедуру.
0
 Аватар для pazlle
27 / 17 / 8
Регистрация: 02.11.2009
Сообщений: 176
29.03.2010, 22:48
Ну заводишь переменную булевского типа, например, flag:boolean
и код так выглядит if flag then бла бла бла
а до этого нужно написать flag:=false; или true)

Добавлено через 1 минуту
И в задаче как ты дойдёшь до нулевого элемнета меняешь флаг)))

Добавлено через 16 секунд
точнее значение флага)
0
1 / 1 / 3
Регистрация: 24.03.2010
Сообщений: 50
30.03.2010, 00:40  [ТС]
И как подобное условие будет относиться к массиву? не стоит забывать что по условию мы должны учитывать самый последний ноль в массиве.

Добавлено через 1 час 29 минут
Сделал всё таки по своему. Все работает, и вроде правильно.

Pascal
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
program MyProgram;
uses crt;
const n=5;
var
    i,j,r,r1,Pol,otr,pol1,otr1: integer;
    a,b:Array [1..n] of integer;
    procedure MyProcedure(var l,p,o:integer);
        begin
             if l>0 then P:=P+1;
             if l<0 then O:=O+1;
        end;
 
begin
     clrscr;
     Writeln('Vvedite perviy massiv');
 
     for i:=1 to n do
     readln (A[i]);
 
     Writeln('Vvedite vtoroy massiv');
 
     for j:=1 to n do
     readln(b[j]);
 
     for i:=1 to n do
     if A[i]=0 then r:=i;
 
     for j:=1 to N do
     if b[j]=0 then r1:=j;
 
     pol:=0;
     otr:=0;
     for i:=1 to r do
     MyProcedure(a[i],pol,otr);
 
     writeln('pologitelnie elementi v pervom massive  do nylevogo elementa ',pol);
 
     for i:=r to n do
     MyProcedure(A[i],pol,otr);
 
     writeln('otrizatelnye elementi v pervom massive posle nylevogo elementa ',otr);
 
     pol1:=0;
     otr1:=0;
 
     for j:=1 to r1 do
     MyProcedure(b[j],pol1,otr1);
 
     writeln('pologitelnye elementi vo vtorom massive do nylevogo elementa ',pol1);
 
     for j:=r1 to n do
     MyProcedure(b[j],pol1,otr1);
 
     writeln('otrizatelnye elementy vo vtorom massive posle nylevogo elementa ',otr1);
 
     readkey;
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.03.2010, 00:40
Помогаю со студенческими работами здесь

Разработать программу,которая содержит функцию,которая подсчитывает в произвольном текстовом файле количество
Разработать программу,которая содержит функцию,которая подсчитывает в произвольном текстовом файле количество строк,которые начинаются и...

Составить программу, которая по заданному номеру и значению соответствующего элемента вычисляла бы значение всех остальных элементов треугольника.
Составить программу (используя оператор выбора case), которая по заданному номеру и значению соответствующего элемента вычисляла бы...

Составить подпрограмму. которая подсчитывает количество гласных букв находящихся между 1-м и 2-м двоеточиями
Составить подпрограмму . которая подсчитывает количество гласных букв находящихся между первым и вторым двоеточием. Если второго двоеточия...

Написать программу, которая подсчитывает количество слов в предложении.
вот задача . Предложение состоит из слов-строк. Написать программу, которая подсчитывает количество слов в предложении.

Разработать программу, которая подсчитывает количество однокоренных слов
Помогите, пожалуйста, разработать программу, которая анализирует файл и подсчитывает количество слов, объединяя статистику для однокоренных...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru