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

Список: Ошибка вывода членов списка при дублировании ключей - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Запись и извлечение данных в несколько запусков программы http://www.cyberforum.ru/cpp-beginners/thread930619.html
Всем добрый вечер! Предоставляю исходник программы EMPL_IO стр.574 с книги Лаффорте ООП в С++. Пытаясь улучшить программу наткнулся на ошибку возникающую при попытке вывести данные на экран после прочтения их из файла. Суть в том что при 1 запуске я записал эти данные, а при 2-м повторном запуске хочу их извлечь и вывести на экран. Компилятор указывает на строку switch(arrap->get_type()) в...
C++ Неточность в понимании условия задачи "Жук" (acmp) Жук (Время: 1 сек. Память: 16 Мб Сложность: 30%) Петя нашел в Интернете по адресу http://buglab.ru игру-головоломку "Жук", в которой от участников требуется построить для жука лабиринт таким образом, чтобы жук как можно дольше искал выход. Жук всегда начинает свое движение с левого верхнего угла, а выход всегда находится в правом нижнем. Жук движется не оптимально, а следующим образом:... http://www.cyberforum.ru/cpp-beginners/thread930617.html
C++ Логика switch
Программа должна расчитывать количество проданного товара, суть проблемы, кода вместо численных значений в вариантах case я использую буквенные значения названий товара, то все идет по логике программы, когда я использую проверку с целыми значениями у меня работает случай default разьясните мне пожалуйста в чем проблема? #include<iostream> using namespace std; int main() { int count =...
Мини-брутфорс C++
Задан паттерн XXyyX, где Х может принимать следующие значения: D,J,K,L,L,X,Z, а Y - f,n,s. Необходимо найти все возможные комбинации, при этом символы не должны повторяться, кроме L, так как он встречается два раза. Одна из этих комбинаций валидна и ссылка вида http://www.steamgifts.com/giveaway/+Валидная_комбинация должна привести на существующую страницу, если комбинация невалидна, то...
C++ Структуры. Объединения. Битовые поля http://www.cyberforum.ru/cpp-beginners/thread930567.html
Помогите с двумя простенькими программами. Требования: - не использовать шаблоны; - интерфейс должен разработан для неопытного пользователя; - размерность массива - неопределенная; - не использовать списки; - для реализации массива произвольного размера использовать функции прямого доступа и кучи (memcpy, memmove, malloc, resize и др.)
C++ Си: Выдать слова текста и их длины, Сформировать новую строку по правилу Задание: Задан некоторый текст, состоящий из слов. Словом считать последовательность символов, не содержащую пробел или другие знаки препинания. Предложения заканчиваются точкой. Длина текста не больше 200 символов, могут быть использованы любые символы. Задание для выполнения: 1) Считать текст из файла; 2) Выдать слова текста и их длины; 3) Сформировать новую строку из слов, состоящих... подробнее

Показать сообщение отдельно
Fintt
 Аватар для Fintt
10 / 10 / 0
Регистрация: 13.02.2012
Сообщений: 94
29.07.2013, 23:01     Список: Ошибка вывода членов списка при дублировании ключей
Есть список с числами от 0 до 9. Всё выводит по заданию, но... Ввожу я число например 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
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
struct List
      {
       int data;
       List *next;
      };
typedef List *ListPtr;
    ListPtr Head;
void show(ListPtr h);
void insHead(ListPtr &h,int a);
int Poisk(int n,ListPtr h, int &L);
void Del(ListPtr &h);
/////////////////////////////////////////////////////////////////////////////
void main()
    {
     clrscr();
     randomize();
     Head=NULL;
     int i,g;
     for (i=0;i<15;i++)
    {
     g=random(10);
     insHead(Head,g);
    }
     cout<<"            Spisok"<<'\n'<<endl;
     show(Head);
     cout<<endl<<"          Bez 0\n"<<endl;
     for (i=0;i<15;i++)
        Del(Head);
     show(Head);
      int L=1;
      cout<<"\nVvedite chislo=";
      cin>>g;
      int n=Poisk(g,Head,L);                     //А вот здесь используется поиск
      while (n==1)
        {
        cout<<endl<<"Poryadkovii nomer="<<L<<endl;
        Head=Head->next;
        n=Poisk(g,Head,L);
        }
      if
    (n==0) cout<<"No";
     getch();
    }
/////////////////////////////////////////////////////////////////////////////
void show(ListPtr h)
    {
     ListPtr max=Head, min=Head;
     ListPtr tmp=h;
     while(tmp)
      {
       cout<<tmp->data<<' '<<' '<<' ';
       if (max->data<tmp->data) max=tmp;
       if (min->data>tmp->data) min=tmp;
       tmp=tmp->next;
      }
    cout<<endl<<endl<<"Max="<<max->data<<endl<<endl<<"Min="<<min->data<<endl;
 
    }
/////////////////////////////////////////////////////////////////////////////
void Del (ListPtr &h)
    {
     ListPtr r=h, p=NULL;
     while (r->data!=0)
      {
       p=r; r=r->next;
      }
     p->next=r->next;
     delete r;
    }
/////////////////////////////////////////////////////////////////////////////
void insHead(ListPtr &h,int a)
    {
     ListPtr tmp=new List;
     tmp->data=a;
     tmp->next=h;
     h=tmp;
    }
     int p=0;
     int Poisk(int n, ListPtr h, int &L )      // Вот функция поиска где ищет искомое число и выводит порядковый номер
    {
     ListPtr tmp=h;
     while(tmp && tmp->data!=n)
     { L++; tmp=tmp->next; }
    if (tmp==NULL) p=0;
    else p=1;
     return p;
    }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 09:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru