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

Что не так с кодом? Компилируется, но не работает (связные списки) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Алгоритм Флойда http://www.cyberforum.ru/cpp-beginners/thread850502.html
Ребят, помогите! нужно в коде поправить вывод кратчайшего пути, а именно что бы выводило сам кратчайший путь, а не только вершины. на входе файлик вида n m v1 u2 w1 v2 u2 w2 .... где n - количество вершин,m- количество ребер,v - начальная вершина ребра ,u - конечная ,w - вес ребра. #include <iostream> #include <fstream>
C++ Сообщить одной функции другую Экспериментирую с функциями, вот решил написать две функции. одна для расчета другая для вывода. Вопрос гду ошибка. Или так просто нельзя делать? #include <iostream> using namespace std; double vklad,stavka,srok; double output(double *result){ double c; cout << "Ведите сумму вклада: "; cin >> vklad; cout << "Введите процент ставки: "; http://www.cyberforum.ru/cpp-beginners/thread850492.html
Сформировать массив данных с помощью структуры. Отсортировать полученный список по полю «год издания» C++
Сформировать массив данных с помощью структуры. Предметная область – список книг в библиотеке (номер по порядку, название, автор, год издания, количество книг). Отсортировать полученный список по полю «год издания». Вывод результатов оформить в виде таблицы. #include<iostream.h> #include<string.h> int main() {
C++ Непонятный Stack Overflow
Здравствуйте, уважаемые форумчане.Столкнулся с непонятной мне проблемой при решении одной лёгкой олимпидной задачи. Вот условие задачи: Задана последовательность, содержащая n целых чисел. Необходимо найти число, которое встречается в этой последовательности наибольшее количество раз, а если таких чисел несколько, то найти минимальное из них, и после этого переместить все такие числа в конец...
C++ Строки. Замена слова в строке на заданное слово http://www.cyberforum.ru/cpp-beginners/thread850478.html
Задача, ввожу слова в строку потом ввожу слово которое нужно заменить и слово на которое нужно заменить. Т.к с функциями строк плохо знаком моя идея такова если ето возможно.. Я разбиваю строку на слова и в масив строк в каждую ячейку добавляю слово. Введеное слово сравниваю с словом в ячейке и если совпадает заменяю и в конце вывожу свой масив строк) подскажите как лучше сделать и если моя...
C++ Не могу разобраться с шаблонным классом Привет. Не могу разобраться в нижеизложенной ситуации. Вопрос: почему такая конструкция не работает, и как заставить её работать?template <typename T> struct A { T * a; A( unsigned size ) : a( new T ) {} }; class B { A <char> a; B() {} }; подробнее

Показать сообщение отдельно
w0nder
 Аватар для w0nder
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 131
28.04.2013, 01:41     Что не так с кодом? Компилируется, но не работает (связные списки)
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
#include "stdio.h"
#include "stdlib.h"
#include <string.h>
#include "iostream"
using namespace std;
 
 
class Elem
{
public:
    char name[256];
    Elem * next;
    Elem (char * n)
    {
        strcpy(name,n);
        next = NULL;
    }
 
};
 
class List
{
protected:
    Elem * first, * last;
 
public:
    Elem * current;
    List(){
        first = last = current = NULL;
    }
 
    void add_element(char * n) {
        Elem * p = new Elem(n);
        if(first == NULL) first= last= p;
        else last=last->next = p;
        current = p;
    }
 
    void delete_element(){
        Elem * p = first;
        first = first->next;
        delete[] p;
 
    }
    void pop(char * arr) {
        Elem * p = first;
        first = first->next;
        strcpy(arr,p->name);
        delete[] p;
    }
 
    int is_empty() {
        return (first == NULL);
    }
 
    void start() {
        current = first;
    }
 
    int end() {
        return (current == NULL);
    }
 
    void next() {
        if(!end()){
            current = current->next;
        }
    }
    void push(char * x) {
        Elem * p = new Elem(x);
        if(first == NULL) first= last= p;
        else {
            p->next = first;
            first = p; }
        current = p;
        }
};
 
int main(void)
{
    List students[26];
    unsigned int x = 0;
 
    //nado sdelatj klass stekov itd.
    FILE  * inFile;
    FILE  * outFile;
    // 97 - 122 = a - z
    char name[256];
 
    inFile = fopen("paldies.in", "r");
    outFile = fopen("paldies.out", "w+");
 
    fscanf(inFile, "%s", name);  //  chitajem simvoli do pervogo probela
    students[name[0]-97].push(name);
    //fprintf(outFile, "%s", name);
 
    while(!feof(inFile)){
        x++;
        fscanf(inFile, "%s", name);
        //fprintf(stdout, "Name: %s\n", name);
        students[name[0]-97].push(name);
    }
 
 
    //cout << students.end() << endl;
    if(!x){
        fprintf(outFile, "%s ","nothing");
        cout << "nothing";
    }
 
    else {
        for(int i = 0;i < 26;i++) {
            for(students[i].start();!students[i].end();students[i].next())
            {
                //students[i].pop(name);
 
                //cout << name << " ";
                cout << students[i].current->name << " ";
                fprintf(outFile, "%s ", students[i].current->name);
            }
        }
    }
    // Close files
    fclose(inFile);
    fclose(outFile);
    return 0;
}
Условие задания:

Есть студенты, есть большое количество карточек, на которых написаны названия мест, куда их нужно разослать. Их нужно отсортировать по местам, куда они будут отправлены.
Вопрос в том, как большое кол-во карточек отсортировать по местам проживания? Было предложено сначала отсортировать все карточки по первой букве названия места проживания. Затем будет легче отсортировать по самим местам проживания. Была предложена следующая процедура для первого этапа:

1)Каждой букве латинского алфавита - по одному студенту (нужны 26 студентов)
2)Карточки должны лежать на движущейся ленте или ее аналоге, вдоль которой стоят студенты, которые занимаются сортировкой карточек.
3)Каждый студент берет с ленты предназначенную ему карточку, т.е. карточку, адрес места жительства которой начинается с буквы, которая у конкретного студента. Все большие буквы будут считаться за маленькие.
4)Студент взятые карточки по порядку кладет в одну стопку
5)Потом, когда все карточки на ленте закончатся, студенты берут по одной карточке из своей стопки и кладут на движущуюся ленту, чтобы отправить ее на следующий этап сортировки.
6)Студенты кладут карточки по алфавитному порядку (т.е. сначала все свои карточки кладет студент с буквой "а", потом следующие по алфавиту до "z"

Написать программу симуляции этого процесса.

Запрограммировать результаты работы первого этапа. На вводе - файл, который содержит места проживания (одно слово длиной [1..255], только маленькие буквы латинского алфавита [a...z]. Места проживания отделены одним или более чем одним пробелом.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 07:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru