Стек из текстового файла

Тема в разделе "Общие вопросы по С и С++", создана пользователем Tamchik, 6 дек 2010.

  1. Tamchik

    Tamchik Active Member

    Регистрация:
    10 мар 2010
    Сообщения:
    27
    Симпатии:
    0
    Не могу разобраться с выводом текста из файла на С++ постоянно ошибки (невозможно найти файл в директории и т.п.), может директивы не все подключены??кто нибудь знает как на С++ вывести текстовый файл в консоль??
    Код (C++):
    #include "stdafx.h"
    #include<stack>
    #ifdef _UNICODE
    #include <stdio.h>
    #include <iostream>
    void main()
    {
    int i, j, t=0;
    char c;
    char f[10];
    FILE *f1;
    clrscr();
    f1 = fopen("doc.txt", "r"); //открываем файл для чтения
    while (!feof(f1))
    {
    fscanf(f1, "%c", &c); /*считываем очередной символ в переменную с*/
    for (j=0; j < strlen(f); j++) //перебор символов строки f
    if (c == f[j])
    vstek (&top, &ends, c); //вводим символ в стек
    else if (f[j]==')')
    puts("Стек:");

    getchar();
    return 0;

    }
     
  2. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    А вот тут ты с чем сравниваешь?

    Тут цикл до бесконечности может идти...

    На счет "невозможно найти файл" попробуй полный путь указать.
     
  3. Tamchik

    Tamchik Active Member

    Регистрация:
    10 мар 2010
    Сообщения:
    27
    Симпатии:
    0
    ну вот код выводит текстовый файл и формирует стек
    Код (C++):
    #include "stdafx.h"
    #include <fstream>
    #include <iostream>
    #include <string>
    #include <cstring>
    #include <stdlib.h>
    class Stack
    {
    static const int MAX = 80;
    int st[MAX];
    int top;
    public:
    Stack()
    {
    top=0;
    }
    void push (int var)
    {
    st[--top]=var;
    }
    int pop( )
    {
    return st[top++];
    }
    };

    int main()
    {
    Stack s1;
    Stack s2;
    const int MAX=9;
    char buffer[3][MAX];
    int i=0;
    int x,j,dlina,k;
    std::ifstream infile("LS.txt");
    std::cout<<"Stack is created \n";
    while (!infile.eof())
    {
    infile.getline(buffer[i],MAX);
    std::cout << buffer[i] << std::endl;
    i++; //считали данные в массив строк
    };
    k=0;
    dlina=0;

    for (i=0;i<9;i++)
    {
    x=strlen(buffer[i]);
    dlina=dlina+x;
    for (j=0;j<=x;j++)//данные из массива помещаем в стек
    {
    s1.push(buffer[i][j]);
    k++;
    };
    };

    std::cout<<"Press any key! \n";
    getchar();
    return 0;
    }
    а как создать стек без употребления класса Stack?? :what?:
     
  4. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Этот код у тебя работать не может. Как ты собираешься адресовать st[-1] ??

    Добавлено: При первом же push-е ты выходишь за рамки массива.

    Добавлено: Может быть должно быть так:
     
  5. Tamchik

    Tamchik Active Member

    Регистрация:
    10 мар 2010
    Сообщения:
    27
    Симпатии:
    0
    да код то работает, во всяком случае содержимое текстового файла выводит как надо, другое дело что стек не получается, так как если бы стек сформировался число 27 было бы внизу, а то последовательность такая же как и в текстовом файле осталась
    ____.JPG
     
  6. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Смотри:
    Код (C++):
    int a[10];
    a[-1] = 123;
    a[-2] = 456;
    Так можно делать?
     
  7. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    В таких случаях лучше создавать файл... Тоесть создал файл 12456789.txt и посмотрел где он у тебя создался... Там и директория по умолчанию... Ну или запускать бинарник не из среды, а уже из чистой операционки(консоль, проводник), тогда уж точно текущая директория - директория по умолчанию....
    З.Ы. Я сам иногда бывает в VS затуплю по этой части (среда уж очень много каталогов и их совокупностей создает) и иногда даже не знаешь какой каталог будет дефолтный....(вернее знаешь, но иногда терятся начинаешь)

    Мне тоже Лэйз это очень понравилось ;-)))
     
  8. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Я хочу, чтобы сначала автор ответил на мой вопрос. А потом поясню кому не понятно.
     
  9. Tamchik

    Tamchik Active Member

    Регистрация:
    10 мар 2010
    Сообщения:
    27
    Симпатии:
    0
    ну вообщето с чтением текстового файла все ясно,
    Код (C++):
    #include "stdafx.h"
    #include <fstream>
    #include <iostream>
    #include <string>
    #include <cstring>
    #include <stdlib.h>

    int main()
    {
    const int MAX=9;
    char buffer[9][MAX];
    int i=0;
    std::ifstream infile("LS.txt");
    std::cout<<"File LS.txt read \n";
    while (!infile.eof())
    {
    infile.getline(buffer[i],MAX);
    std::cout << buffer[i] << std::endl;
    i++; //считали данные в массив строк
    };

    std::cout<<"Press Enter!";
    getchar();
    return 0;
    }
    я прошу помочь разобраться со стеком. :blink:


    Добавлено:
    лан понятно буду думать своей башкой......
     
  10. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Потому, что выражение типа array[-1] (в авторском исполнении) будет ссылаться на неопределенный участок памяти.

    Вот в таком случае это допустимо:
    Код (C++):
        int i;
    int a[10];
    int *b = &a[5];

    for ( i = 0; i < 10; i++ ) {
    a[i] = i;
    cout << i << endl;
    }

    for ( i = 0; i >= -5; i-- ) {
    cout << b[i] << endl;
    }
    В случае автора - нет.
    А вообще я считаю, что модер с репутацией 51 должен это прекрасно понимать...
     
Загрузка...
Похожие Темы - Стек из текстового
  1. Tamchik
    Ответов:
    4
    Просмотров:
    2.510
  2. street
    Ответов:
    0
    Просмотров:
    1.101
  3. Tamchik
    Ответов:
    2
    Просмотров:
    4.570
  4. Ytsukene
    Ответов:
    0
    Просмотров:
    1.024
  5. lena-tus
    Ответов:
    0
    Просмотров:
    1.066

Поделиться этой страницей