Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Игорёха
0 / 0 / 0
Регистрация: 22.07.2009
Сообщений: 4
#1

безвыходное положение :( - C++

22.07.2009, 06:12. Просмотров 1133. Ответов 10
Метки нет (Все метки)

Доброго времени суток! Я очень надеюсь на вашу помощь.
На практике мне задали 6 заданий. 4 я благополучно решил, а две - не смог, так как подобного на лекциях и практических занятий нам не давали. Вчера я гуглил около 2 часов и ничего подходящего не нашел. Последняя надежда на обитателей этого форума!

Задача 1:
Имеется текстовый файл passenger.txt, в котором хранятся данные о пассажирах в таком формате: номер пассажира, его фамилия, колличество перевозимых вещей, вес перевозимых вещей. Вывести на экран всех пассажиров, у которых более двух вещей и, соответсвенно их вес больше нуля.
В файле данные представлены так:
1,Иванов,3,15;
2,Петров,0,0;
3,Сидоров,1,2;

В принципе можно данные оформить как угодно, лишь бы информация была.


Задача 2: Написать функцию, strip_tags - Удаляет HTML и PHP тэги из строки.
В принципе функции я знаю, но как сделать это - не знаю.

Постскриптум: Я работаю на турбо С++ для доса и сдавать работы в нем же.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.07.2009, 06:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос безвыходное положение :( (C++):

Нулевое положение. - C++
Нулевое положение. В данной матрицы найти положение нуля. Вход Первая линия N и M (1 <= N, M <= 100). Тогда NxM таблице...

Положение курсора в с++ - C++
Как получить координаты позиции каретки(текстового курсора) в с++? Мне очень надо записать эти координаты в переменные.

Изменить положение label - C++
Подскажите пжалуста! как переместить label делаю так private: System::Void button2_Click(System::Object^ sender,...

Добавить строку в указанное положение - C++
Помогите найти ошибку... Программа должна добавить строку в указанное положение и если необходимо сместить старую... Строка добавляется но...

Проверка подстроки на положение в тексте - C++
Доброго времени суток. У меня есть программа, которая ищет слово в тексте, и выводит в дальнейшем предложение содержащее это слово, код: ...

Положение точек вне прямой - C++
Даны координаты двух точек (x1,y1) и (x2,y2) вне прямой с нормальным уравнением Ax+By+C=0. Напечатать "Yes", если точки лежат по одну...

10
mamedovvms
2918 / 839 / 93
Регистрация: 30.04.2009
Сообщений: 2,633
22.07.2009, 06:18 #2
по второй задаче, берешь и в файл или в массив забиваешь все теги которые тебе надо удалить, а затем поочериди проверяешь есть ли такие в строке если есть то удаляешь если нет то берешь следующий тег и проверяешь есть ли он в строке и т.д.
0
Игорёха
0 / 0 / 0
Регистрация: 22.07.2009
Сообщений: 4
22.07.2009, 06:28  [ТС] #3
Но их же кучи! + я не знаю тегов php. И еще как удалять их?
0
mamedovvms
2918 / 839 / 93
Регистрация: 30.04.2009
Сообщений: 2,633
22.07.2009, 06:39 #4
удалить можно вот как
http://www.cyberforum.ru/cpp/thread4120.html
там хороший пример ты все поймешь

Добавлено через 1 минуту 30 секунд
а насчет того что теги может просто удалять все что начинается < и заканчивается >
0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
22.07.2009, 07:39 #5
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
#include <stdio.h>
 
void DeleteHtmlLine(char *l);
 
/* удаляет из строк теги, php не проверяет */
main()
{
    char html[100] = "one <two> three </four> five";
    char php[100] = "one <?php two\r\nthree\r\n</four>\r\nfive";
    
    printf("%s\n", html);
    printf("%s\n", php);
    
    DeleteHtmlLine(html);
    DeleteHtmlLine(php);
    
    printf("%s\n", html);
    printf("%s\n", php);
    
    return 0;
}
 
/* DeleteHtmlLine:  удаляет html теги из l */
void DeleteHtmlLine(char *l)
{
    char *p;
    int tag;
    enum { OUT, IN };
    
    for (p = l, tag = OUT; *l != '\0'; p++)
        if (tag == OUT) {
            if (*p == '<') {
                tag = IN;
                continue;
            }        
            *l++ = *p;
        } else if (*p == '>')
            tag = OUT;
}
0
Игорёха
0 / 0 / 0
Регистрация: 22.07.2009
Сообщений: 4
22.07.2009, 11:07  [ТС] #6
БОЛЬШОЕ человеческое спасибо accept'у за программу и mamedovvms'у за советы! Но один вопрос - что значит енум в функции. В хелпе написано, что возвращает константе значение инт. Я правильно понял?

По поводу первой программы - мне не обязательно писать всю - просто обьясните как присвоить переменным в программе данные из файла? Если через структуру, то как?
0
Roman VC++
0 / 0 / 0
Регистрация: 16.07.2009
Сообщений: 8
22.07.2009, 14:03 #7
Вот небольшая программка для чтения из файла
На оптимальность не претендующая (делал минут за 10)

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
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    // отображает русские шрифты в консоли
    setlocale(LC_ALL, "Russian_Russia.1251"); 
 
    /*Файл Input.txt:
 
    1 Иванов 3 15
    2 Петров 0 0
    3 Сидоров 1 2*/
 
    ifstream fin("Input.txt"); // создаем поток чтения из файла
    if (!fin) {
        cout << "Файл открыть невозможно!\n";
        return 1;
    }
    // 3 - количество строк
    int Num_pas[3], Col_v[3]; // Номер Пас , Кол вещ
    double Ves [3];             // вес
    char Fam[3] [80];           //Фамилия
 
    for(int i = 0; !fin.eof(); i++){ // считывать данные пока не будет достигнут конец файла
        fin >> Num_pas[i] >> Fam[i] >> Col_v[i] >> Ves[i] ;
        cout << Num_pas[i] << " " << Fam[i] << " " << Col_v[i] << " " << Ves[i] << endl;
    };
 
    fin.close();
    return 0;
}

Дальше с массивами делай, что нужно

Также советую почитать:
Gerbert Schildt - Teach Yourself C++ (third edition) (RUS)
в сети она была в свободном доступе
0
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
22.07.2009, 15:33 #8
2Игорёха: Я правильно понял, что каждый пассажир встречается в файле ровно один раз ?
0
Игорёха
0 / 0 / 0
Регистрация: 22.07.2009
Сообщений: 4
22.07.2009, 16:14  [ТС] #9
Roman VC++, спасибо попробую запустить прогу.
odip, да, 1 раз, без клонов.

Добавлено через 24 минуты 40 секунд
Прогу запустил. Видать турбо не знает условие "пока не будет достигнут конец файла" - начал бесконечно выдавать непонятный текст со скоростью пол экрана в секунду. Пришлось вводить конечное число - и все заработало!

Спасибо Roman VC++, за любезно предоставленный код!

Добавлено через 1 минуту 9 секунд
Ах, да! Обьясните пожалуйста, что делает
enum { OUT, IN }
0
#pragma
Временно недоступен
954 / 225 / 6
Регистрация: 12.04.2009
Сообщений: 921
22.07.2009, 17:27 #10
enum - это тип перечисления,задаваемый пользователем.Я вижу его как удобное средство для отладки и написания кода,то есть,проще понять такую запись:
C++
1
2
3
4
if ( что-то) 
    exit (SUCCESS);
else
    exit (FAILURE);
,чем
C++
1
2
3
4
if ( что-то) 
    exit (0);
else
    exit (1);
Следует обратить внимание на неявные преобразования с этим типом данных,так как у него есть свой диапазон значений,задаваемый пользователем.
0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
23.07.2009, 04:06 #11
C
1
enum { OUT, IN };
это типа
C
1
2
#define OUT 0
#define IN  1
только оно (enumeration) имеет область видимости, как обычная переменная
главное, что оно задаёт константы, которые до самого удаления всего перечисления не могут быть изменены

вот небольшой пример
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
 
main()
{
    enum { OUT };
    
    /* OUT = 1; */ /* с этим не скомпилится */
    
    /* enum { OUT = 1 }; */ /* с этим не скомпилится */
    
    {
        enum { OUT, IN };
    
        printf("%d %d\n", IN, OUT);
    }    
    
    /* printf("%d\n", IN); */ /* с этим не скомпилится */
    printf("%d\n", OUT);
    
    return 0;
}
вывод
Код
[guest@station src]$ ./test
1 0
0
[guest@station src]$
элементы перечисления базируются на типе int

Добавлено через 20 минут 59 секунд
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
#include <stdio.h>
 
/* создаёт структуру для 1,Иванов,3,15 и выводит */
main()
{
    struct man {
        int passno;
        char fio[3*100];
        int nthings, weight;
    };
    
    struct man someone;
    char line[100] = "1,Иванов,3,15";
    
    if (sscanf(
            line,
            "\t"
            "%d"
            ","
            "%299[^,]"
            ","
            "%d"
            ","
            "%d"
            "\t",
            &someone.passno,
            someone.fio,
            &someone.nthings,
            &someone.weight
        ) != 4)
        return 1;
    
    printf(
        "Passenger number: " "%d"
        "\n"
        "Passenger's name: " "%s"
        "\n"
        "Took things: " "%d"
        "\n"
        "Amount weight: " "%d"
        "\n",
        someone.passno,
        someone.fio,
        someone.nthings,
        someone.weight
    );
    
    return 0;
}
вывод
Код
[guest@station src]$ ./test
Passenger number: 1
Passenger's name: Иванов
Took things: 3
Amount weight: 15
[guest@station src]$
0
23.07.2009, 04:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.07.2009, 04:06
Привет! Вот еще темы с ответами:

Положение точки относительно заданного эллипса - C++
Задан центр элипса и Rx Ry соответственно и точка К (x0 , y0); Задача : узнать как лежит точка К относительно заданного элипса. В...

Как узнать текущее положение курсора ? - C++
Добрый день ! Подскажите пожалуйста как узнать текущее положение курсора ? как я понял должна быть какая-то функция которая...

Положение точек относительно заданной прямой - C++
положение точек относительно заданной прямой

Стиль кода: положение фигурных скобок - C++
ребята кто пишет вот так if () { } назовите хоть одно преимущество такой записи перед if()


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.