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

Отсортированный список на массивах и работа с ним - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Программа должна определять корректность вводимой структуры http://www.cyberforum.ru/cpp-beginners/thread1069652.html
суть такова: вы вводите в консоль код, описывающий структуру. программа должна проверить есть ли ето структурой. Добавлено через 51 секунду у меня только две идеи. первая - на пролом. т.е. проверять каждую лексему, пересмотреть все способы создания структуры. вторая более адекватная - создаем файл .h, туда пихаем строчку "void func{" , потом вводим наш код с клавиатуры, добавляем '}'....
C++ переменной Т присваивает значение переменной Т присваивает значение, равное скалярному произведению векторов X и Y, где компоненты вектора X определяются как максимальные элементы строк, а компоненты вектора Y - как минимальные элементы столбцов матрицы A. http://www.cyberforum.ru/cpp-beginners/thread1069628.html
Вывести на экран в виде таблицы значения функции F C++
Пожалуйста помогите! Вывести на экран в виде таблицы значения функции F на интервале от Xнач до Xкон с шагом H. Значение a,b,c, Xнач ,Xкон , H - действительные числа, вводятся с клавиатуры. Задачу необходимо решить двумя способами: с использованием пользовательских функций, и без них. При применении функций использования глобальных переменных запрещается. F={█(ax^2+b если x<0 и b≠0@(x-a)/(x-c) ...
C++ Класс Person. Исправить ошибку в коде
Ребят, помогите пожалуйста. Что-то никак не пойму в чем ошибка. Подчеркивает "Халилов" #include "stdafx.h" #include <iostream> #include <locale> #include <string> using namespace std; class person { public:
C++ Ханойские башни http://www.cyberforum.ru/cpp-beginners/thread1069616.html
Головоломка “Ханойские башни” состоит из трех стержней, пронумерованных числами 1, 2, 3. На стержень 1 надета пирамидка из n дисков различного диаметра в порядке возрастания диаметра. Диски можно перекладывать с одного стержня на другой по одному, при этом диск нельзя класть на диск меньшего диаметра. Необходимо переложить всю пирамидку со стержня 1 на стержень 3 за минимальное число ...
C++ WT С++ - нужен пример хочу разобраться с библиотекой WT С++ смотрел код чата на сайте, но как то слишком там не понятно, мошь есть у кого другой пример? подробнее

Показать сообщение отдельно
Desar
0 / 0 / 0
Регистрация: 12.01.2014
Сообщений: 1
13.01.2014, 12:10     Отсортированный список на массивах и работа с ним
Имеется задачка, суть которой заключается в добавлении, удалении элементов из упорядоченного списка, и выводе оставшегося списка в файл. Имеется Microsoft Visual Studio Express 2013 & CodeBlocks. Имеются ошибки при выполнении. Для начала, вот кусок кода, остальное я закомментировал, дабы не мешалось:
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
#include <stdio.h>
#include <string> //строки - наше все
#include <conio.h>
 
using namespace std; //без него стл-овские фигни не пашут. Чистый Си нынче не в почете :(
 
struct List
    {
        int first,firstFree;
        string *surnameString;
        int *nextPoint;
    };
    List mylist;
 
void initArr (struct List &mylist, int N) //заполняем все, что надо в исходный список
{
    mylist.surnameString=new string[N];
    mylist.nextPoint=new int[N];
    for (int i=0;i<N-1;i++) mylist.nextPoint[i]=i+1;
    mylist.first=-1;
    mylist.firstFree=0;
    mylist.nextPoint[N-1]=-1;
    //for (int i=0;i<N;i++) printf("%d\n",mylist.nextPoint[i]);
}
 
int main()
{
    FILE* filein=fopen("input.txt","r");
    FILE* fileout=fopen("output.txt","w");
    int N;
    string z;
    char c;
    fscanf(filein,"%d\n",&N);
    initArr(mylist, N);
    for (int i=0;i<N;i++) 
    {
        fscanf(filein,"%c%s\n",&c,&z);
        if (c=='+') /*vstavka(z,mylist)*/printf("%c\n",c);
        else if (c=='-') /*udal(z,mylist)*/printf("%c\n",c);
        else printf ("Error");
    }
    /*int Curr, Prev;
    Curr=mylist.first;
    Prev=-1;
    while (Curr!=-1)
    {
        printf("%s\n",mylist.surnameString[Curr]);
        Prev=Curr;
        Curr=mylist.nextPoint[Curr];
    }*/
    getch();
    delete[]mylist.nextPoint;
    delete[]mylist.surnameString;
    fclose(filein);
    fclose(fileout);
    return 0;
}
Ошибка вылазит где-то ровно после getch(), без строк delete и fclose все равно вылетает. Цикл, который после initArr проходит тоже на ура. Но это все так в MVSE, в CodeBlocks программа то ли просто зависает, то ли выводит минус до вылета.

Ах да, вот еще содержимое входного файла:
Кликните здесь для просмотра всего текста

10
+a65g3
+a12u86
-a65g3
+b765f1
+a65g3
-a65g3
+a65g3
+a02s43
+k32u7
-b765f1


Добавлено через 15 часов 23 минуты
Путем отключения всего, что можно, пришел к выводу, что затык в string z; если использовать char z[30]; работает более менее. Но возникает логичная проблема переписывания всего остального кода для работы с типом char, а не string, что есть долго и проблемно. На крайняк, есть ли функции приведения типа char к типу string? Потому что писать массивы строк на char'ах у меня плохо получается.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru