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

Очередь на основе статического массива - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
NadyaFK
0 / 0 / 0
Регистрация: 19.07.2012
Сообщений: 4
19.07.2012, 10:23     Очередь на основе статического массива #1
в очередь с экрана вводятся строки,когда вводится строка end,элементы извлекаются из очереди и записываются в файл.

xD.h
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
#include <conio.h>
#include <string.h>
#include <iostream>
 
class xD
{public:
    int n;
    int N;
    char lol[150];
    xD(){n=0;N=50;};
    ~xD() {};
    bool put(char* r);
    bool get(char &r);
    bool is_empty();
    bool del(char*r);
};
bool xD::is_empty()
    {return n==0;}
bool xD::put(char* r)
    {
        if(n<N)
        {
            strcpy(r,lol);
            n++;
            return true;
        }
        else
        {return false;}
}
bool xD::get(char &r)
{
char m[255];
strcpy(lol,m);
return m;
}
bool xD::del(char*r)
    {
        if(strlen(r)>=n)
        return false;
        else
            {for(int q=strlen(r);q<n-1;q++)
                lol[q]=lol[q+1];
        n--;
        return true;}
    };
 
 
 
 
ochered2.0.cpp
 
 
#include "stdafx.h"
#include <iostream>
#include <string.h>
#include <conio.h>
#include "xD.h"
using namespace std;
 
 
void main()
{
    xD A;
    bool flag=true;
    do
    {
        char q[200];
        cout<<"Введите строку: "<<endl;
        gets(q);
        if(strcmp(q,"end")==0)
        {
            FILE* f = fopen("d:\\laba4.txt", "w");
        if (f)
            {
                for(int i=0; i<A.n; i++)
        {
            
                fprintf(f,"%s ",A.get(*q));
                }
        }
        fclose(f);
        A.del(q);
        flag = false;
    }
    else 
    {
        A.put(q);
    }
    }
    while(flag);
};
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rudeeeboy
14 / 14 / 1
Регистрация: 08.11.2010
Сообщений: 172
19.07.2012, 11:57     Очередь на основе статического массива #2
а в чём проблема?
NadyaFK
0 / 0 / 0
Регистрация: 19.07.2012
Сообщений: 4
19.07.2012, 16:15  [ТС]     Очередь на основе статического массива #3
Не записывает в файл строки,извлекаемые из очереди
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.07.2012, 17:12     Очередь на основе статического массива #4
NadyaFK,
Цитата Сообщение от NadyaFK Посмотреть сообщение
A.get(*q)
Что здесь у вас происходит? Передаёте стороку из массива q . Эта строка попадает в метод
C++
1
2
3
4
5
6
bool xD::get(char &r)
{
char m[255];
strcpy(lol,m);
return m;
}
И что там с ней происходит. Ничего. Возвращает значение 0 или 1, и что fprintf должен с этим делать?
NadyaFK
0 / 0 / 0
Регистрация: 19.07.2012
Сообщений: 4
19.07.2012, 18:52  [ТС]     Очередь на основе статического массива #5
спасибо огромное
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.07.2012, 04:10     Очередь на основе статического массива #6
Цитата Сообщение от NadyaFK Посмотреть сообщение
в очередь с экрана вводятся строки,когда вводится строка end,элементы извлекаются из очереди и записываются в файл.
Идея кода не очень понятна. Очередь - это объект класса xD ? Если так, то опишите его поля (предназначение каждого), и методы. Например так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class xD // класс очередь строк.
{
public:
    int n; // сколько строк в очереди.
    int N; // максимальное количество строк в очереди.
    char* lol[150]; // ?
    
    xD()  // конструктор пустой очереди.
    {
        n=0;
        N=50;
    };
    ~xD() {};
    
    bool put(char* r); // добавить строку в очередь.
    bool get(char *r); // получить строку из очереди.
    bool is_empty();   // если пустая.
    bool del(char *r); // удалить строку из очереди.
};
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,560
Записей в блоге: 17
20.07.2012, 06:40     Очередь на основе статического массива #7
Почему не юзать STL-ловские контейнеры?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.07.2012, 16:38     Очередь на основе статического массива #8
Цитата Сообщение от Avazart Посмотреть сообщение
Почему не юзать STL-ловские контейнеры?
Лучше всего. Со статическим массивом строк в стиле С заморочки будут.
NadyaFK
0 / 0 / 0
Регистрация: 19.07.2012
Сообщений: 4
20.07.2012, 20:38  [ТС]     Очередь на основе статического массива #9
люди,можете посоветовать хороший учебник по с++?хочется разобраться основательно
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.07.2012, 21:34     Очередь на основе статического массива #10
Стивен Прата. "Язык программирования С++. Лекции и упражнения. Учебник."
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.07.2012, 21:56     Очередь на основе статического массива
Еще ссылки по теме:

Очередь на основе динамического массива C++
C++ Очередь на основе массива
Очередь на основе динамического массива. Изучение функций ввода/вывода в программном интерфейсе Win32 C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.07.2012, 21:56     Очередь на основе статического массива #11
А вот вам ещё ссылка, на этом форуме тема: Литература C++
Yandex
Объявления
21.07.2012, 21:56     Очередь на основе статического массива
Ответ Создать тему
Опции темы

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