Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 131
1

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

28.04.2013, 01:41. Просмотров 357. Ответов 2
Метки нет (Все метки)

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]. Места проживания отделены одним или более чем одним пробелом.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.04.2013, 01:41
Ответы с готовыми решениями:

Что с моим кодом не так?Он работает
Из несколько примеров собрал свой) Я в JS ноль)! Я чувствую что-то с ним не так)...

Что не так с кодом? ( пытаюсь понять, что не так? )
Есть исходный код. Hook, работает хорошо, но есть минус огромный - перестаёт писать в лог, при...

Не компилируется: что не так с конструктором структуры?
Есть некий класс - односвязный линейный список, с элементами типа TElem. Шаблонность здесь только...

Что не так с кодом?
В некоторых видах спортивных состязаний выступление каждого спортсмена независимо оценивается...

2
Эксперт С++
4958 / 3064 / 456
Регистрация: 10.11.2010
Сообщений: 11,152
Записей в блоге: 10
28.04.2013, 01:50 2
Что конкретно не работает?
0
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 131
28.04.2013, 01:55  [ТС] 3
lazybiz, ошибка вылетает: name.exe has stopped working
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.04.2013, 01:55

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Что не так с кодом ?
Почему этот код не подходит для этой задачи: Шахматный король ходит по горизонтали, вертикали и...

Что не так с кодом?
Есть функция: function RC4Delphi(str, key: string): string; var s: array of integer; i,...

Что не так с кодом?
using System.Collections; using System.Collections.Generic; using UnityEngine; using...

Что не так с кодом?
Нужно вывести максимальное значение массива, если ввести отрицательные числа, то выводит 0. В чем...


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

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

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