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

Проблемы с циклом!!! - C++

Восстановить пароль Регистрация
 
lp_4eva
Учусь...
 Аватар для lp_4eva
59 / 2 / 1
Регистрация: 20.03.2010
Сообщений: 167
13.11.2011, 18:55     Проблемы с циклом!!! #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
131
132
133
134
135
136
137
138
139
140
141
142
143
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include<iomanip>
 
using namespace std;
typedef  struct
{
    float key;
    char symbol;
    int s;
}RECNODE;
 
const int k=8;
 
void bublesort(RECNODE *r, int n)
{
    int i, j;
    RECNODE temp1;
    char temp2;
    for(i = 0; i < n; i++)
      for(j = n - 2; j >= i; j--)
        if(r[j + 1].key >r[j].key) 
        {
            temp1 = r[j + 1]; 
            temp2 = r[j + 1].symbol;
            r[j + 1] = r[j]; 
            r[j + 1].symbol = r[j].symbol;
            r[j] = temp1;
            r[j].symbol = temp2;
        }
}
 
int qiuk(RECNODE *r, int n){
 
    int i, j;
    float N1, N2;
    float N[k];
    N1=0;
    N2=0;
    for(i=1;i<n;i++)
    {
        for(j=0;j<i;j++)
            N1=N1+r[j].key;
        for(j=i;j<n;j++)
            N2=N2+r[j].key;
        N[i]=N1-N2;
        if(N[i]<0)
            N[i]=-N[i];
        N1=0;
        N2=0;
    }
    i=1;
    for(j=2;j<n;j++)
    {
        if(N[i]>N[j])
            i=j;
    }
    if(n == 1)
        return i=0;
    else
        return i;
    
}
 
 
 
void main()
{
    char a[]={"ABCDEFGH"};
    RECNODE b[k];
    RECNODE c[k];
    RECNODE d[k];
    int i;
    int L;
    int t;
    int n;
    for(t=0;t<k;t++)
    {
        cout<<"Enter word:"<<a[t]<<"The probability of: ";
        cin>>b[t].key;
        b[t].symbol=a[t];
        cout<<endl;
    }
    bublesort(b,k);
    for(t=0;t<k;t++)
    {
        c[t].key=b[t].key;
        c[t].symbol=b[t].symbol;
    }
    
    for(t=0;t<k;t++)
        cout<<setw(5)<<b[t].symbol;
    cout<<endl;
 
    
    i=qiuk(b,k);
    
    while(i != 0)
    {
        if(i != 0)
        {
            L=i;
            if(L==1)
            {
                b[0].s=0;
                for(t=1;t<L;t++)
                    b[t].s=1;
                for(t=0;t<L;t++)
                    cout<<setw(5)<<b[t].s;
            }
            else 
            {
                for(t=0;t<L;t++)
                {
                    b[t].s=0;
                    c[t].key=b[t].key;
                }
                for(t=0;t<L;t++)
                    cout<<setw(5)<<b[t].s;
            
                for(t=L;t<k;t++)
                    b[t].s=1;
                for(t=L;t<k;t++)
                    cout<<setw(5)<<b[t].s;
                cout<<endl;
                for(n=0;n<k-i;n++)
                    d[n].key=b[n].key;
            }
            if(b[k-2].s == 0)
                i=0;    
        }
        else
            cout<<setw(5)<<" ";
        if(b[k-2].s == 0)
            i=0;
        else
        {
            i=qiuk(c,i);
            i=qiuk(d,n);
        }
    }   
}
Помогите пожалуйста найти ошибку в коде? То есть когда запсукаешь цикл идет непрерывно

Добавлено через 7 минут
Ну кто-нидь помогите!!!=(
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2011, 18:55     Проблемы с циклом!!!
Посмотрите здесь:

с циклом for C++
C++ Задача с циклом for
C++ Проблемы с циклом for
Задачка с циклом while C++
C++ Проблемы с циклом заполнения массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
13.11.2011, 19:08     Проблемы с циклом!!! #2
Цитата Сообщение от lp_4eva Посмотреть сообщение
То есть когда запсукаешь цикл идет непрерывно
какой цикл то

Цитата Сообщение от lp_4eva Посмотреть сообщение
while(i != 0)
ентот ????

Цитата Сообщение от lp_4eva Посмотреть сообщение
while(i != 0)
{
if(i != 0)
{
странная конструкция
сюда никогда не зайдем
Цитата Сообщение от lp_4eva Посмотреть сообщение
}
else
cout<<setw(5)<<" ";
если i ==0 то не зайдем в цикл
а если не равна то заедем в if
и else не исполнится
Цитата Сообщение от lp_4eva Посмотреть сообщение
if(b[k-2].s == 0)
i=0;
мониторь отладчиком это условие
lp_4eva
Учусь...
 Аватар для lp_4eva
59 / 2 / 1
Регистрация: 20.03.2010
Сообщений: 167
13.11.2011, 19:10  [ТС]     Проблемы с циклом!!! #3
Цитата Сообщение от ValeryS Посмотреть сообщение
если i ==0 то не зайдем в цикл
а если не равна то заедем в if
и else не исполнится
а как по другому написать???
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
13.11.2011, 19:12     Проблемы с циклом!!! #4
а ты словами объясни что хочешь сделать
lp_4eva
Учусь...
 Аватар для lp_4eva
59 / 2 / 1
Регистрация: 20.03.2010
Сообщений: 167
13.11.2011, 19:21  [ТС]     Проблемы с циклом!!! #5
я хотела создать алгоритм шеннона фано. это типа дерево, левая сторона и правая сторона, меняем нулями и единичками данное слово. В префиксном коде для первой части алфавита присваивается двоичная цифра «0», второй части — «1». То есть если i не равно нулю он так и остается а если равно единице то тогда заменяем нулями. а если же нет то 1ке.
Кажется я все запутала=(
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
13.11.2011, 19:29     Проблемы с циклом!!! #6
посмотри сюда
http://compression.ru/download/artic...nnon-fano.html
и сюда
http://ru.wikipedia.org/wiki/Алгоритм_Шеннона_—_Фано
в первой ссылке пример реализации
lp_4eva
Учусь...
 Аватар для lp_4eva
59 / 2 / 1
Регистрация: 20.03.2010
Сообщений: 167
13.11.2011, 19:35  [ТС]     Проблемы с циклом!!! #7
эххх....спасибо конечно но я прочитала это=)))
у меня ж с кодом не лад=(( всмысле он выводит правильный результат но вместо одного зашифрованного кода выходит бесконечный цикл единиц и нулей.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2011, 19:42     Проблемы с циклом!!!
Еще ссылки по теме:

Пытаюсь переписать код с циклом for, в код с циклом while, но не совсем получается C++
Проблемы с циклом while C++
Проблемы с циклом for. Вывести части стоимости килограмма конфет. C++

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
13.11.2011, 19:42     Проблемы с циклом!!! #8
по первой ссылке
внизу страницы ссылка "пример реализации"
при щелканьи открывается проект на VS по моему шестерка
посмотри как там реализован код
Yandex
Объявления
13.11.2011, 19:42     Проблемы с циклом!!!
Ответ Создать тему
Опции темы

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