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

Сосчитать количество строк в символьном массиве - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ WinAPI Сделать листбокс в главном окне программы средствами WinAPI http://www.cyberforum.ru/cpp-beginners/thread20539.html
Возможно глупый вопрос поскольку я только только начал изучать с++. Во общем мне поставлена задача сделать листбокс в главном окне программы. А я пока что умею делать это только в диалоговом окне. Подскажите можно ли сделать главное окно - диалоговым по умолчанию. Либо как поместить лист бокс в главное окно? ЗЫ Всякие MFC/ATL пока не использую, нужно без них.
C++ Пользователь вводит с клавиатуры число, необходимо перевернуть его (число) и вывести на экран. Сегодняшнее домашнее задание основано именно на этом принципе, однако, вам придется использовать еще и циклы. 1. Пользователь вводит с клавиатуры число - программа должна показать сколько в данном числе цифр. Число вводится целиком в одну переменную. Примечание: Например, пользователь ввел число 12345. На экране должно появиться сообщение о том, что в числе 5 цифр. 2. Пользователь вводит с... http://www.cyberforum.ru/cpp-beginners/thread20536.html
C++ Измерение скорости копирование данных в оперативной памяти!
Там вроде надо два массива содавать я пробовал ничего не вышло((
Поменять стандартный тип данных C++
Народ, помогите с вопросом. В С++ стандартным типом данных является int. Как поменять это на что-то другое. Например, что бы переменная определенная без типа была char: a = 5; // sizeof(a) == 1
C++ Метод удаления по ключу http://www.cyberforum.ru/cpp-beginners/thread20512.html
ребята помогите пожалуста! нужно что то исправить.. ни как не работает метод удаления по ключу.. у меня условие следующее: нужно удалить все марки новее выбраного возраста.(его вводим с клавиатуры) мои марки содержат 4 параметра. (цвет, номинал, страну, возраст) а нужно удалить по одному параметру всю марку разом(то есть весь массив). в менюхе я ввожу число ниже которого все марки...
C++ Класс множество Нужно написать класс множество с конструкторами, деструкторами, операторами. Так вот возник вопрос...как понимать тип данных множество?? Это обычный массив в котором даннеы не могут повторяться, распологаются упорядоченно (обязательно или нет?),.....?? Добавлено через 5 часов 10 минут 26 секунд template <class T> class set { public: //------------------- подробнее

Показать сообщение отдельно
Ёрик
46 / 46 / 2
Регистрация: 07.01.2009
Сообщений: 298
11.01.2009, 12:12  [ТС]     Сосчитать количество строк в символьном массиве
полностью выкладываю сделанную задачу по условию,которое выложено в 1 сообщении
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define M 30
 
 
struct NUMB
{
    int numb;
    char name[30];
 
};
 
 
struct ITEM
{
    NUMB *numb;
    ITEM *next;
};
 
NUMB * makeNUMB(char *s)
{
        NUMB *numb=(NUMB*)malloc(sizeof(NUMB));
        strcpy(numb->name,s);
        numb->numb = 1;
        return numb;
}
 
ITEM *createList(NUMB *numb)
{
    ITEM *head=(ITEM*)malloc(sizeof(ITEM));
    head->numb = numb;
    head->next = NULL;
    return head;
}
 
void addItem(ITEM *head,NUMB *numb)
{
    while(head->next)
        head = head->next;
    head->next=(ITEM*)malloc(sizeof(ITEM));
    head->next->numb = numb;
    head->next->next = NULL;
}
 
 
NUMB * makeNumbADD(char *s,ITEM *head)
{
    NUMB *numb = (NUMB*)malloc(sizeof(NUMB));
    while(head)
    {
        if (strcmp(s,head->numb->name) == 0)
            head->numb->numb++;
        else
        {
            strcpy(head->numb->name,s);
            head->numb->numb = 1;
        }
        head = head->next;
    }
    return numb;
    
}
 
NUMB *ADD_THE_FIRST(char *s)
{
    NUMB *numb=(NUMB*)malloc(sizeof(NUMB));
    strcpy(numb->name,s);
    numb->numb = 1;
    return numb;
}
 
void printList(ITEM *head)
{
    while(head)
    {
        if (head->numb->numb > 1)
            printf("%s",head->numb->name);
        head = head->next;
    }
}
int main()
{
    unsigned int N;
    ITEM *head = NULL;
    
    int g = 0;
    
 
    scanf("%u",&N);
    char **s = (char**) malloc(N*sizeof(char*)); 
    char *last_name = (char*)malloc(N*sizeof(char)); 
      
 
    for (int i = 0; i < N; i++) 
    {          
        *(s+i) = (char *) malloc(30*sizeof(char));
        fflush(stdin);
        fgets(*(s+i), 30, stdin);  
    }
 
 
 
 
 
 
    for(int g = 0; g < N;g++)
    {
        if (g == 0)
        {
            head = createList(makeNUMB((*(s+g)))); 
            strcpy((last_name),(*(s + g)));
        }
        else
        {
            int count = 0;
            for(int j = 0; j < N;j++)
            {
                if (strcmp((last_name) , (*(s + g + j))) == 0)
                {
                    addItem(head, makeNumbADD(last_name,head));
                    strcpy((last_name),(*(s + g + j)));
                    count++;
                } // вот здесь access violation,возможно,выход за пределы массива,что только не делал,пробовал цикл до N - 1,1-ый раз проходит,а второй раз кбкаогда в этот цикл заходим,снова эта ошибка.Задачка видно очень легкая,только я устал все переписывать.Уже 8 часов без отрыва сижу и дебажу.В результате программа вообще изменилась до неузнаваемости.
                
            }
            if (count == 0)
            {
                char *temp = (char*) malloc(N*sizeof(char*));
                strcpy(temp,last_name);
                last_name = NULL;
 
                char *last_name = (char*)malloc(N*sizeof(char));
                strcpy(last_name,temp);
            }
        }
        (*(s+g))++;
    }
 
 
    printList(head);
    return 0;
}
Задумка: использовал список, каждым элементом
которого была струкура: строка длиной в 30 символов и целое
беззнаковое число (количество повторов).Бегу по исходному массиву и смотрю, есть ли текущая строка в списке (последовательным перебором с головы списка). Если нашел ее - увеличиваю счетчик у найденного элемента на единицу. Не
нашел (дошел до конца списка) - добавляю новый элемент со
счетчиком, равным единице.

Ну а после при простом проходе по списку вывожу только те
строки, у которых счетчик больше единицы.

Помогите доделать.Память не освобождал,т.к. в конце программы она сама освобождается принудительно(и писать не надо,я знаю как освобождать!!).

Добавлено через 4 минуты 31 секунду
Тут можно редактировать сообщения?не найду.Опять перед тем,как отдебажил программу, я вставлял defin'ы,и забыл обратно один define заменить(#define M 30),в результате 30 так и болтается по программе,ну это просто,думаю, недочет.
 
Текущее время: 12:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru