Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
POVT
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 239
10.07.2014, 15:37     Напечатать список учеников класса с указанием для каждого ученика количества его однофамильцев #1
В символьном массиве хранятся фамилии и инициалы учеников класса. Требуется напечатать список учеников класса с указанием для каждого ученика количества его однофамильцев.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2014, 15:37     Напечатать список учеников класса с указанием для каждого ученика количества его однофамильцев
Посмотрите здесь:

Напечатать для каждого числа от M до N его минимальный делитель C++
Известны оценки двух учеников по четырём предметам Определить сумму оценок каждого ученика C++
C++ Переведите, Вычислить средний балл учеников класса, если известны оценки каждого ученика по математике, русскому языку и физике. Распечатать списо
C++ Распечатать список учеников , фамилии которых начинаются на букву В, с указанием даты их рождения
C++ Известен рост каждого из 20 учеников класса
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,543
Записей в блоге: 27
10.07.2014, 15:38     Напечатать список учеников класса с указанием для каждого ученика количества его однофамильцев #2
Н-ну? Где код?
POVT
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 239
10.07.2014, 15:41  [ТС]     Напечатать список учеников класса с указанием для каждого ученика количества его однофамильцев #3
C++
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
//---------------------------------------------------------------------------
 
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
 
void probel(char mass[255], int *js){  //пропускает пробелы в строке mass начиная с индекса js
        while(mass[*js]==' '){
          *js++;
        }
}
 
void sled(char mass[255], int *js){ //Пропускает все символы в строке mass начиная с индекса js до позиции запятой + 1 (т.е. начало следующей фамилии)
        while (mass[*js]!=','){
          *js++;
        }
        *js++;
}
 
void famil(char mass[255],char mass2[255], int *js){ //Считывает фамилию из mass (начиная с индекса js) в mass2
        int j = 0;
        for (j=0; j<strlen(mass2); j++);
        while(mass[*js]!=','){
          mass2[j]=mass[*js];
          *js++;
          j++;
        }
}
 
int poisk(char mass[255], char mass2[255]){ //Возвращает кол-во однофамильцев ученика mass2
        int js = 0;
        int j = 0;
        int res = 0;
        char buf[255];
        
        while (j<strlen(mass)){
          probel(mass, &j);
          famil(mass, buf, &j);
          probel(mass, &j);
          if (buf==mass2){
            res++;
          }
        }
        return res;
}
 
int main(int argc, char* argv[])
{
char mass[255];
char mass2[255];
char z[1]={','};
int i=0,m=0,vvod=1, js=0;
 
 
        printf("\n vvedite familiu i iniciali  \n");
        while (vvod==1){
          scanf("%s",&mass2);
          strcat(mass,mass2);
          strcat(mass,",");
          printf("\n Hotite eshe vvesti uchenika? Yes-1/no-2:\n");
          scanf("%i",&vvod);
        }
        printf("\n %s",mass);
 
        while(js<strlen(mass)){ //Главный супер-цикл
          famil(mass, mass2, &js);
          printf ("%s %i", mass2, poisk(mass, mass2));
          sled(mass, &js);
        }
 
        getch();
        return 0;
}
//---------------------------------------------------------------------------
Добавлено через 2 минуты
Вроде все правильно, логично. Но вылазит ошибка адреса
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,543
Записей в блоге: 27
10.07.2014, 15:45     Напечатать список учеников класса с указанием для каждого ученика количества его однофамильцев #4
Ох уж эти имена функций...

Добавлено через 1 минуту
А почему бы строки не использовать? Есть же готовый функционал.

Добавлено через 1 минуту
И это... Где хэдэра?..
POVT
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 239
10.07.2014, 15:48  [ТС]     Напечатать список учеников класса с указанием для каждого ученика количества его однофамильцев #5
Ну сказали сделать через функции, а то пятерочку не получу Завтра последний день( Помогитееее. Последняя задача осталась. Не понимаю в чем ошибка

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

Добавлено через 47 секунд
Цитата Сообщение от Тамика Посмотреть сообщение
почему
ну в задании написано символьный массив

Добавлено через 23 секунды
Цитата Сообщение от Тамика Посмотреть сообщение
хэдэра
Извеняюсь, что такое Хэдэра?
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,543
Записей в блоге: 27
10.07.2014, 15:52     Напечатать список учеников класса с указанием для каждого ученика количества его однофамильцев #6
Цитата Сообщение от POVT Посмотреть сообщение
Извеняюсь, что такое Хэдэра?
о_О
Ладно. Забыли.
del

Добавлено через 1 минуту
Цитата Сообщение от POVT Посмотреть сообщение
у сказали сделать через функции,
Я говорю ОБ ИМЕНАХ.
Потому названия в стиле - moya_tvoya_ne_ponimat() уже утомляют. Невозможно же код читать.
POVT
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 239
10.07.2014, 15:57  [ТС]     Напечатать список учеников класса с указанием для каждого ученика количества его однофамильцев #7
Цитата Сообщение от Тамика Посмотреть сообщение
Я говорю ОБ ИМЕНАХ.
Потому названия в стиле - moya_tvoya_ne_ponimat() уже утомляют. Невозможно же код читать.
О_О я наоборот старалась назвать как можно понятнее....
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,543
Записей в блоге: 27
10.07.2014, 16:16     Напечатать список учеников класса с указанием для каждого ученика количества его однофамильцев #8
C++
1
sled(mass, &js);
Вот мне непонятно что это делает. Почему бы не назвать ее next()? Хотя бы. И тому подобное.
Как минимум.
C++
1
char mass[255];
Ни этот массив, ни второй не инициализированы.
C++
1
strcat(mass,mass2);
А тут Вы пытаетесь склеить два неинициализированых массива. А где у первого символ конца строки будет? И будет ли вообще?
Исправьте хотя бы на такое.
C++
1
2
    char mass[255] = {0};
    char mass2[255] = {0};
Дабы не было мусора в начале.

Добавлено через 7 минут
Плачевный код. Вот так всё работает. У меня. Попробуйте.
C++
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
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
 
#include <cstdio>
#include <cstring>
#include <iostream>
 
void probel(char* mass, int *js){ //пропускает пробелы в строке mass начиная с индекса js
while(mass[*js]==' '){
*js++;
}
}
 
void next(char* mass, int *js){ //Пропускает все символы в строке mass начиная с индекса js до позиции запятой + 1 (т.е. начало следующей фамилии)
while (mass[*js]!=','){
*js++;
}
*js++;
}
 
void read_surname(char* mass,char* mass2, int js)
{ //Считывает фамилию из mass (начиная с индекса js) в mass2
    for (int j=0; j<strlen(mass2); j++)
        while(mass[js] != ',')
        {
            mass2[j] = mass[js];
            ++js;
        }
}
 
int poisk(char mass[255], char mass2[255]){ //Возвращает кол-во однофамильцев ученика mass2
int js = 0;
int j = 0;
int res = 0;
char buf[255];
 
while (j<strlen(mass)){
probel(mass, &j);
read_surname(mass, buf, j);
probel(mass, &j);
if (buf==mass2){
res++;
}
}
return res;
}
 
int main(int argc, char* argv[])
{
    char mass[255] = {0};
    char mass2[255] = {0};
    int vvod=1, js=0;
 
 
    printf("\nVvedite familiu i iniciali: \n");
    while (vvod==1)
    {
        scanf("%s",&mass2);
        strcat(mass,mass2);
        strcat(mass,",");
        printf("\n Hotite eshe vvesti uchenika? Yes-1/no-2:\n");
        scanf("%i",&vvod);
    }
    printf("\n %s",mass);
 
    while(js < strlen(mass))
    { //Главный супер-цикл
        read_surname(mass, mass2, js);
        printf ("%s %i", mass2, poisk(mass, mass2));
        next(mass, &js);
    }
 
    system("pause>>null");
    return 0;
}
POVT
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 239
10.07.2014, 16:17  [ТС]     Напечатать список учеников класса с указанием для каждого ученика количества его однофамильцев #9
Цитата Сообщение от Тамика Посмотреть сообщение
А тут Вы пытаетесь склеить два неинициализированых массива. А где у первого символ конца строки будет? И будет ли вообще?
Исправьте хотя бы на такое.
Про конец строки я не подумала
Цитата Сообщение от Тамика Посмотреть сообщение
Код C++
1
2
* * char mass[255] = {0};
* * char mass2[255] = {0};
Это исправила)
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,543
Записей в блоге: 27
10.07.2014, 16:18     Напечатать список учеников класса с указанием для каждого ученика количества его однофамильцев #10
Код работает, который я выложила?
POVT
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 239
10.07.2014, 16:21  [ТС]     Напечатать список учеников класса с указанием для каждого ученика количества его однофамильцев #11
Сейчас попробую)

Добавлено через 2 минуты
Цитата Сообщение от Тамика Посмотреть сообщение
Код работает, который я выложила?
У меня в этой строчке for (int j=0; j<strlen(mass2); j++) ошибку пишет [C++ Error] _mbstate.h(26): E2188 Expression syntax
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,543
Записей в блоге: 27
10.07.2014, 16:24     Напечатать список учеников класса с указанием для каждого ученика количества его однофамильцев #12
А так?
C++
1
2
3
4
5
6
7
8
9
10
11
void famil(char* mass,char* mass2, int js)
{
    for (int j=0; j<strlen(mass2); j++)
    {
        while(mass[js] != ',')
        {
            mass2[j] = mass[js];
            ++js;
        }
    }
}
POVT
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 239
10.07.2014, 16:27  [ТС]     Напечатать список учеников класса с указанием для каждого ученика количества его однофамильцев #13
А еще вот такая ошибка typedef __stl_mbstate_t mbstate_t;
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,543
Записей в блоге: 27
10.07.2014, 16:28     Напечатать список учеников класса с указанием для каждого ученика количества его однофамильцев #14
Удалите нафиг все #pragma
Оставьте только
C++
1
2
3
#include <cstdio>
#include <cstring>
#include <iostream>
tdo22
10 / 10 / 1
Регистрация: 14.02.2013
Сообщений: 727
10.07.2014, 16:32     Напечатать список учеников класса с указанием для каждого ученика количества его однофамильцев #15
хотел помочь, но код вообще не читабельной.
как ты так умудряешся писать ?
POVT
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 239
10.07.2014, 16:32  [ТС]     Напечатать список учеников класса с указанием для каждого ученика количества его однофамильцев #16
та же ерунда((
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,543
Записей в блоге: 27
10.07.2014, 16:33     Напечатать список учеников класса с указанием для каждого ученика количества его однофамильцев #17
Весь код мне и название IDE.
POVT
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 239
10.07.2014, 16:33  [ТС]     Напечатать список учеников класса с указанием для каждого ученика количества его однофамильцев #18
Цитата Сообщение от tdo22 Посмотреть сообщение
хотел помочь, но код вообще не читабельной.
как ты так умудряешся писать ?
ну как-то умудряюсь)
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,543
Записей в блоге: 27
10.07.2014, 16:35     Напечатать список учеников класса с указанием для каждого ученика количества его однофамильцев #19
И расширение файлика.
Подсказка - .c или .cpp
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2014, 16:36     Напечатать список учеников класса с указанием для каждого ученика количества его однофамильцев
Еще ссылки по теме:

C++ Структуры. Определить среднюю оценку каждого ученика и всего класса
Требуется напечатать список класса с указанием для каждого ученика количества его однофамильцев C++
Требуется напечатать список класса с указанием для каждого ученика количества его однофамильцев C++

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

Или воспользуйтесь поиском по форуму:
POVT
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 239
10.07.2014, 16:36  [ТС]     Напечатать список учеников класса с указанием для каждого ученика количества его однофамильцев #20
C++
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
//---------------------------------------------------------------------------
 
 
 
#include <cstdio>
#include <cstring>
#include <iostream>
 
void probel(char* mass, int *js){ //?????????? ??????? ? ?????? mass ??????? ? ??????? js
while(mass[*js]==' '){
*js++;
}
}
 
void next(char* mass, int *js){ //?????????? ??? ??????? ? ?????? mass ??????? ? ??????? js ?? ??????? ??????? + 1 (?.?. ?????? ????????? ???????)
while (mass[*js]!=','){
*js++;
}
*js++;
}
 
void read_surname(char* mass,char* mass2, int js)
{ //????????? ??????? ?? mass (??????? ? ??????? js) ? mass2
    for (int j=0; j<strlen(mass2); j++)
    {
        while(mass[js] != ',')
        {
            mass2[j] = mass[js];
            ++js;
        }
}
  }
int poisk(char mass[255], char mass2[255]){ //?????????? ???-?? ????????????? ??????? mass2
int js = 0;
int j = 0;
int res = 0;
char buf[255];
 
while (j<strlen(mass)){
probel(mass, &j);
read_surname(mass, buf, j);
probel(mass, &j);
if (buf==mass2){
res++;
}
}
return res;
}
 
int main(int argc, char* argv[])
{
    char mass[255] = {0};
    char mass2[255] = {0};
    int vvod=1, js=0;
 
 
    printf("\nVvedite familiu i iniciali: \n");
    while (vvod==1)
    {
        scanf("%s",&mass2);
        strcat(mass,mass2);
        strcat(mass,",");
        printf("\n Hotite eshe vvesti uchenika? Yes-1/no-2:\n");
        scanf("%i",&vvod);
    }
    printf("\n %s",mass);
 
    while(js < strlen(mass))
    { //??????? ?????-????
        read_surname(mass, mass2, js);
        printf ("%s %i", mass2, poisk(mass, mass2));
        next(mass, &js);
    }
 
    system("pause>>null");
    return 0;
}
Yandex
Объявления
10.07.2014, 16:36     Напечатать список учеников класса с указанием для каждого ученика количества его однофамильцев
Ответ Создать тему
Опции темы

Текущее время: 02:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru