1 / 1 / 0
Регистрация: 26.05.2018
Сообщений: 72
1
Excel

Напечатать список класса с указанием для каждого ученика количества его однофамильцев

10.11.2019, 14:12. Показов 1521. Ответов 9
Метки нет (Все метки)

В универе дали задание написать прогу(далее текст задания)

В строковом массиве хранятся фамилии и инициалы учеников класса. Требуется напечатать список класса с указанием для каждого ученика количества его однофамильцев.

Я сначала хотел сделать через поиск. Сделал два одинаковых массива и по одному прогонял каждый элемент одного массива через другой, но не получилось.( вот код)
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Dim arr() As String
Dim arr1() As String
Dim i, endl, n, j, sum, str As String
n = InputBox("Введите количество учеников в классе")
ReDim arr(1 To n) As String
ReDim arr1(1 To n) As String
For i = 1 To n
    arr(i) = InputBox("Введите фамилию и инициалы ученика")
    arr1(i) = arr(i)
Next i
endl = UBound(arr, 1)
For i = LBound(arr, 1) To endl
    For j = LBound(arr1, 1) To endl
        If (arr(i) = arr1(j)) Then
            sum = sum + 1
        End If
    Next j
    Cells(3).Resize(endl).Value = sum
Next i
    Range("B1:B40").Resize(endl).Value = Application.Transpose(arr1)
End Sub
Потом решил переписать массив в строку и поиск провести в строке, но то же не получилось. Затем снизошло озарение, что ведь нужны однофамильцы, а не полные тезки. Я в полном замешательстве. Помогите кто шарит, пожалуйста. Заранее Спасибо
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.11.2019, 14:12
Ответы с готовыми решениями:

Напечатать список класса с указанием для каждого ученика количества его однофамильцев
В символьном массиве хранятся фамилии и инициалы учеников класса. Требуется напечатать список...

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

Напечатать список класса с указанием для каждого ученика количества его однофамильцев
Помогите решить задачу: В символьном массиве хранятся фамилии и инициалы учеников класса....

Напечатать список учеников класса с указанием для каждого ученика количества его однофамильцев
В символьном массиве хранятся фамилии и инициалы учеников класса. Требуется напечатать список...

9
3217 / 966 / 223
Регистрация: 29.05.2010
Сообщений: 2,085
10.11.2019, 14:50 2
Удалил..
0
2610 / 1623 / 737
Регистрация: 23.03.2015
Сообщений: 5,101
10.11.2019, 15:10 3
PurpleLoris,

Цитата Сообщение от PurpleLoris Посмотреть сообщение
хранятся фамилии и инициалы учеников класса
В каком виде?
1) Иванов А.А.
2) Иванов А А
3) Иванов АА
4)ИвановАА
5)ивановАа
….
Цитата Сообщение от PurpleLoris Посмотреть сообщение
делал два одинаковых массива
Цитата Сообщение от PurpleLoris Посмотреть сообщение
ReDim arr(1 To n) As String
ReDim arr1(1 To n) As String
Здесь вы уже знаете "длину" ваших массивов-зачем вам
Цитата Сообщение от PurpleLoris Посмотреть сообщение
endl = UBound(arr, 1)
For i = LBound(arr, 1) To endl
Подумайте чему равен LBound(arr) и UBound(arr)…

Вытащить фамилии можно будет лишь уточнив В каком виде?
1) Иванов А.А.
0
1798 / 1123 / 343
Регистрация: 11.07.2014
Сообщений: 3,968
10.11.2019, 15:42 4
Лучший ответ Сообщение было отмечено PurpleLoris как решение

Решение

PurpleLoris, попробуйте так, только после фамилии (перед инициалами) должен быть пробел, либо без инициалов совсем
Visual Basic
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
Sub Repl()
Dim Arr() As String
Dim I As Integer, N As Integer, J As Integer, K As Integer
Dim St As String, S As String, Sum As Integer
N = InputBox("Введите количество учеников в классе")
ReDim Arr(1 To N, 1 To 2)
For I = 1 To N
    Arr(I, 1) = InputBox("Введите фамилию и инициалы ученика")
Next I
For I = 1 To N - 1
  St = Arr(I, 1): S = St: K = I
  For J = I + 1 To N
    If St > Arr(J, 1) Then St = Arr(J, 1): K = J
  Next
  Arr(I, 1) = Arr(K, 1): Arr(K, 1) = S
  Arr(I, 2) = 0
Next
For I = 1 To N - 1
  S = Arr(I, 1) & " ": J = InStr(S, "."): Sum = 0
  If J > 0 Then S = Left(S, J - 2)
  For J = I + 1 To N
      K = InStr(Arr(J, 1) & " ", S)
      If K = 0 Then Exit For
      If K = 1 Then Sum = Sum + 1
  Next J
  For J = I To I + Sum
    Arr(J, 2) = Sum
  Next
  I = I + Sum
Next I
Cells(1, 1).Resize(N, 2) = Arr
End Sub
Добавлено через 5 минут
да и точка после первого инициала
1
2610 / 1623 / 737
Регистрация: 23.03.2015
Сообщений: 5,101
10.11.2019, 15:51 5
Burk,

Иванов А.А.
Иванова А.А.

не однофамильцы?
0
1798 / 1123 / 343
Регистрация: 11.07.2014
Сообщений: 3,968
10.11.2019, 16:03 6
PurpleLoris, и ещё, если нужны все ученики с одинаковыми фамилиями, включая и самого человека, которому проставляется число его однофамильцев (2 иванова, но у каждого по одному однофамильцу - я сделал по этому принципу) тогда в 27 строке поставьте
Visual Basic
1
Arr(J, 2) = Sum + 1
Добавлено через 3 минуты
Narimanych, однофамильцы, по-быстрому накидал, может автор темы подделает или вы выложите свой безупречный код. Правда тут могут возникнуть ситуации Иванов Ива или Ванов Или Мамед Оглы (всё это фамилия, они и так пишут)

Добавлено через 6 минут
Или прибалтийские фамилии, где мужская от женской может отличаться не на одну букву. Или Ивановский и Ивановская - однофамильцы
0
2610 / 1623 / 737
Регистрация: 23.03.2015
Сообщений: 5,101
10.11.2019, 16:05 7
Цитата Сообщение от Burk Посмотреть сообщение
Или Мамед Оглы (всё это фамилия,
1) не думаю что ....
по крайней мере Мамед Оглы- не фамилия - а отчество- ( дословно - сын Мамеда)…

2) Лучше пройду мимо...
0
1798 / 1123 / 343
Регистрация: 11.07.2014
Сообщений: 3,968
10.11.2019, 16:25 8
Narimanych, не будем вдаваться в тонкости перевода испанского на фарси, но я встречал подобное сочетание с Оглы в паспорте. А на кладбище есть памятник, где просто Оглы - фамилия на памятнике женщине. Будете в Томске, заходите.
0
2610 / 1623 / 737
Регистрация: 23.03.2015
Сообщений: 5,101
10.11.2019, 16:40 9
Burk,

Не по теме:


Оглы к фарси не имеет никакого значения …..
Слово относится к тюркским корням - У самих тюрков оглы меняется на оглу.
У нас- в Азербайджане ( я истый азербайджанец- родился, вырос и живу в Баку), "оглы" используется в отчестве...

Цитата Сообщение от Burk Посмотреть сообщение
но я встречал подобное сочетание с Оглы в паспорте
Я тоже - в своем паспорте...:)

Пы Сы А в испанский язык приставка "эль" кстати, пришла из арабского...



Добавлено через 1 минуту
Burk,
Приезжайте в гости
1
1 / 1 / 0
Регистрация: 26.05.2018
Сообщений: 72
12.11.2019, 11:07  [ТС] 10
Спасибо, мне и так пойдёт, просто нет времени допиливать.) Но всё равно большое СПАСИБО.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.11.2019, 11:07
Помогаю со студенческими работами здесь

Требуется напечатать список класса с указанием для каждого ученика количества его однофамильцев
В символьном массиве хранятся фамилии и инициалы учеников класса. Требуется напечатать список...

Требуется напечатать список класса с указанием для каждого ученика количества его однофамильцев
В символьном массиве хранятся фамилии и инициалы учеников класса. Требуется напечатать список...

Требуется напечатать список класса с указанием для каждого ученика количества его однофамильцев
В строковом массиве хранятся фамилии и инициалы учеников класса. Требуется напечатать список класса...

Требуется напечатать список класса с указанием для каждого ученика количества его однофамильцев.
В символьном массиве хранятся фамилии и инициалы учеников класса. Требуется напечатать список...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru