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

Списки. Не выводит первую вводимую строку - C++

Восстановить пароль Регистрация
 
DvogR
1 / 1 / 0
Регистрация: 28.10.2012
Сообщений: 30
20.01.2014, 18:39     Списки. Не выводит первую вводимую строку #1
Здравствуйте, проблема с списками, после ввода элементов в список, не выводит первый добавленный. вот код:
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
128
129
130
#include "stdafx.h"
#include <iostream>
using namespace std;
 
typedef struct list
{
    int id;
    char firma[10];
    int cena;
    struct list* prev;
    struct list* next;
}mylist;
 
mylist* init_list(mylist* H)
{
    H= (mylist*)malloc(sizeof(mylist));
    printf("Введите ID принтера: \n");
    cin>>(H->id);
    printf("Фирма-изготовитель: \n");
    cin>>(H->firma);
    printf("Стоимость: \n");
    cin>>(H->cena);
    H-> next = NULL;
    H-> prev = NULL;
    return H;
}
    mylist* add_item(mylist* H)
{
    mylist *temp;
    temp = (mylist*)malloc(sizeof(mylist));
    printf("Введите ID принтера: \n");
    cin>>(H->id);
    printf("Фирма-изготовитель: \n");
    cin>>(H->firma);
    printf("Стоимость: \n");
    cin>>(H->cena);
    H->next = temp;
    temp->prev = H;
    temp->next = NULL;
    return temp;
}
    void print_list(mylist *H)
    {
        mylist *temp=H;
        while (temp->prev!=NULL) temp=temp->prev;
        while (temp)
        {
         cout<< temp->id;
         cout<< temp->firma;
         cout<< temp->cena<<endl;
         temp=temp->next;
        }
    }
//void print_item(mylist *H)
//{
//cout<<H->id;
//cout<<H->firma;
//cout<<H->cena<<endl;
//}
    void print_item(mylist *H)
    {
        cout<< H->id;
         cout<< H->firma;
         cout<< H->cena<<endl;
    }
 
int empty(mylist *H)
{
if (H==NULL) return 1;
else return 0;
}
 
int find_item(mylist *H)
{
    char find[10];
    int t=0;
    mylist *temp=H;
    printf("Введите фирму принтера: \n");
    cin>>("%s",find);
    while (temp)
    {
         if (strcmp(temp->firma,find)==0)
         { print_item(temp);
          ++t;   }
         temp=temp->prev;
    }
    return t;
}
 
int _tmain(int argc, _TCHAR* argv[])
{  setlocale(LC_ALL,"Russian");
    mylist *point=NULL;
    int var=1;
 
    cout<<("1. Создать список\n");
    cout<<("2. Вывод элементов\n");
    cout<<("3. Вывести элемент\n");
    cout<<("4. Выход\n");
  
    while (var!=4)
    {
     cout<<("Выберите пункт: \n");
    cin>>var;
     switch(var)
     {
     case 1: 
         {
         if (empty(point))
              {point=init_list(point);break;}
         else {(point=add_item(point));break;}
         }
     case 2:
         {
             if (!empty(point))
                  {print_list(point);break;}
             else {cout<<("Лист пуст!\n");break;}
         }
     case 3:
         {
         if (find_item(point)==0)
         cout<<("Нет такого элемента!\n");
         break;
         }
 
     case 4: {printf("Выйти из программы\n");break;}
     default:printf("Ошибка!\n");
     }
    }
    return 0;
}
Заранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2014, 18:39     Списки. Не выводит первую вводимую строку
Посмотрите здесь:

C++ Считывает символьную строку с экрана, выводит в файл (.txt) данную строку, перевернув её(было 123, стало 321)
Написать программу, которая выводит на экран первую часть таблицы кодировки символов C++
Поменять местами первую строку и строку, в которой находится первый нулевой элемент. Принять, что массив просматривается слева направо и сверху вниз. C++
Проверить вводимую строку типа strint(не char) на совпадение с алфавитом C++
Матрицы: поменять местами первую строку и строку, содержащую максимальный элемент C++
Поменять местами первую строку и строку сумма элементов которой минимальна C++
C++ В матрице из целых чисел поменять местами первую строку и строку, содержащую самый большой по абсолютной величине элемент матрицы
C++ В матрице из действительных чисел поменять местами первую строку и строку, содержащую наименьший элемент матрицы

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5950 / 5555 / 1786
Регистрация: 18.12.2011
Сообщений: 14,195
Завершенные тесты: 1
20.01.2014, 18:54     Списки. Не выводит первую вводимую строку #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
   mylist* add_item(mylist* H)
{
    mylist *temp;
    temp = (mylist*)malloc(sizeof(mylist));
    H->next = temp;
    printf("Введите ID принтера: \n");
    cin>>(temp->id);
    printf("Фирма-изготовитель: \n");
    cin>>(temp->firma);
    printf("Стоимость: \n");
    cin>>(temp->cena);
    temp->prev = H;
    temp->next = NULL;
    return temp;
}
DvogR
1 / 1 / 0
Регистрация: 28.10.2012
Сообщений: 30
21.01.2014, 19:36  [ТС]     Списки. Не выводит первую вводимую строку #3
Большое спасибо
Yandex
Объявления
21.01.2014, 19:36     Списки. Не выводит первую вводимую строку
Ответ Создать тему
Опции темы

Текущее время: 23:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru