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

исправить двусвязный список? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ввести строку символов, если ее длина нечетная, удалить символ, стоящий посередине строки. http://www.cyberforum.ru/cpp-beginners/thread324992.html
Помогите пожалуйста с решением Ввести строку символов, если ее длина нечетная, удалить символ, стоящий посередине строки.
C++ Дана последовательность целых чисел a1, a2, ..., an. Не понимаю почему не работает Дана последовательность целых чисел a1, a2, ..., an. Выяснить, какое число встречается раньше - положительное или отрицательное. #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <math.h> void main(void) { http://www.cyberforum.ru/cpp-beginners/thread324990.html
C++ Пирамидка
Привет всем. Помогите пожалуйсто написать программу, которая с помощью двух вложенных циклов печатает пирамидку. Мой код #include<iostream> using namespace std; int main() {setlocale(LC_ALL,"Rus"); char a='X',t=' ';
C++ Дана последовательность целых чисел a1, a2, ..., an. Выяснить, какое число встречается раньше - положительное или отрицательное.
Дана последовательность целых чисел a1, a2, ..., an. Выяснить, какое число встречается раньше - положительное или отрицательное. Не работает :hysteric: Помогите, пожалуйста..... #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <math.h>
C++ Ввести строку символов, если ее длина кратна 2, посчитать количество цифр в этой строке. http://www.cyberforum.ru/cpp-beginners/thread324967.html
Помогите,пожалуйста, решить прогу....Ввести строку символов, если ее длина кратна 2, посчитать количество цифр в этой строке. Решить задачу в VC++.
C++ gotoxy() Я работаю в Qt creator и чтобы пользоваться gotoxy() я вставил вот такую функцию void gotoxy(int xpos, int ypos) { COORD scrn; HANDLE hOuput = GetStdHandle(STD_OUTPUT_HANDLE); scrn.X = xpos; scrn.Y = ypos; подробнее

Показать сообщение отдельно
voral
345 / 325 / 46
Регистрация: 16.03.2008
Сообщений: 1,692
29.06.2011, 01:08     исправить двусвязный список?
я чтоб попробовать закоментил лишнее (уж сам откроешь что нужно), вот как то так. Вводить надо всегда по три оценки через запятую. Можно переделать и под любое колическтов (будет красивее)
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
//#include "stdafx.h"
//#include "conio.h"
#include <stdio.h>
#include <locale.h>
//#include "string.h" // для strcmp();
//#include <ctype.h>
//#include <stdlib.h>
struct student
{
        char name[20];
        int group;
        int ocenki[3];
        struct student *prior; //Указатель на предыдущий элемент:
        struct student *next;  //Указатель на следущий элемент:
 
};
struct student *h, *last;
 
void pop(student* b)
{
    student* tmp=NULL;
    while(h!=NULL)
    {
        tmp=h->next;
        delete h;
        h=tmp;
    }
}
void input()
{
        struct student *ptr;
        ptr=new(student);
        printf("Введите имя студента: ");
        scanf("%s", &ptr->name);
        printf("Введите его группу: ") ;
        scanf("%d", &ptr->group);
        printf("Введите его оценки (3 оценки через запятую): ");
        scanf("%d,%d,%d", &ptr->ocenki[0], &ptr->ocenki[1], &ptr->ocenki[2]);
        //заполняем полученые данные
        if (h==NULL)
            h=ptr;
        else
        {
            ptr->prior=last;
            last->next=ptr;
        };
        last=ptr;
}
void print(int flag)
{
    student* tmp=h;
    if (h==NULL) printf("База пуста");
    else
    {
        printf( "____________________________________________\n"
                "| № |   cтудент  |   группа    |  оценки   |\n"
                "--------------------------------------------\n");
        int j;
        for (tmp=(flag) ? last: h,j=1;tmp!=NULL;tmp=(flag) ? tmp->prior : tmp->next,j++)
        {
            printf("| %d |  %20s |  %d | %2d |\n",j,tmp->name,tmp->group,tmp->ocenki[0]);
            printf("|                                  %2d |\n",tmp->ocenki[1]);
            printf("|                                  %2d |\n",tmp->ocenki[2]);
        }
    }
}
int main(int argc, char** argv)
{
    int a;//номер работы из меню
    setlocale(LC_ALL, "Russian");
//Вывод меню на экран
    do {
//        system("clear");
        printf("            \"заявки\"        \n"
                "                МЕНЮ                  \n"
                "1. Ввод сведений о новом студенте.\n"
                "2. Просмотр всех студентов\n"
                "3. Окончание работы.\n");
//Ввод и обработка номера пункта меню
        printf("\n\nВведите номер пункта меню: ");
        scanf("%d", &a);
//        system("clear");
        switch(a)
        {
            case 1:
                input();  //1. Ввод сведений о новом студенте.
                break;
            case 2:
                print(0);  //3. Просмотр содержимого базы данных.
                print(1);  //3. Просмотр содержимого базы данных.
//                getch();
                break;
            case 3:
                break;
            default:
                printf("\nНеверно указан номер пункта меню!\n");
//                getch();
        }
    } while (a!=3);
    pop(h);
}
Добавлено через 1 минуту
print(0) в прямом порядке print(1) в обратном, но номера строки всегда о возрастанию
 
Текущее время: 04:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru