2 / 2 / 2
Регистрация: 01.08.2013
Сообщений: 106
1

Найти ошибку в программе

17.03.2014, 22:13. Показов 1364. Ответов 21
Метки нет (Все метки)

Помогите найти ошибку.
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
#include <iostream>
 
using namespace std;
 
int main()
{
    int a[15],kol=0,koll=0;
 
    for(int i=0;i<15;i=i+1)
    {
    cout << "[" << i+1 << "]:";
    cin >> a[i];
    }
     
    cout << "\n";
 
    for(int i=0;i<15;i=i+1)
    {
    cout << "Vasha matrica\n" << a[i] <<"\n";
    }
 
    for(int i=0;i<15;i=i+1)
    {
        if (a[i]%2=0)
            kol=kol+1;
 
        if ((a[i]%2!=0)&&(a[i]=>1)&&(a[i]<=11))
            koll=koll+1;
    }
 
    cout << "Kol chetnix chisel: " << kol;
    cout << "Kol nechetnix v kvadrate: " << koll*koll;
 
 
return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.03.2014, 22:13
Ответы с готовыми решениями:

Найти ошибку в программе: в visual studio выдает ошибку
#include &lt;math.h&gt; #include &lt;conio.h&gt; #include &lt;iostream&gt; using namespace std; int main() ...

Найти ошибку в программе
#include &lt;stdafx.h&gt; #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;fstream&gt; #include &lt;ctime&gt;...

Найти ошибку в программе
Найти к-е число Фибоначчи,такое,что x(k-1)&lt;a&lt;x(k). Числа Фибоначчи:x(1)=x(2)=1;x(k)=x(k-2)+x(k-1) ...

найти ошибку в программе
Сортировка вещественных чисел из файла методом пузырька #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt;...

21
zzzZZZ...
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
17.03.2014, 22:16 2
i++
Цитата Сообщение от tibeg Посмотреть сообщение
i=i+1)
1
2 / 2 / 2
Регистрация: 01.08.2013
Сообщений: 106
17.03.2014, 22:19  [ТС] 3
исправил, но по прожнему не работает.
0
320 / 225 / 74
Регистрация: 22.11.2013
Сообщений: 865
Записей в блоге: 1
17.03.2014, 22:22 4
dzrkot, это не ошибка, просто человек эти операции не освоил, то как он их записал абсолютно правильно (допустимо)
а вот здесь
C++
1
if ((a[i]%2!=0)&&(a[i]=>1)&&(a[i]<=11))
ошибка есть должно быть так:
C++
1
if ((a[i]%2!=0)&&(a[i]>=1)&&(a[i]<=11))
и здесь есть:
C++
1
if (a[i]%2=0)
должно быть так:
C++
1
if (a[i]%2==0)
1
2 / 2 / 2
Регистрация: 01.08.2013
Сообщений: 106
17.03.2014, 22:25  [ТС] 5
тоесть в тут
C++
1
if (a[i]%2=0)
я присвоил, а не равенство записал?

И еще один вопрос можно ли так возвести в квадрат
C++
1
pow(koll,2)
0
320 / 225 / 74
Регистрация: 22.11.2013
Сообщений: 865
Записей в блоге: 1
17.03.2014, 22:27 6
Цитата Сообщение от tibeg Посмотреть сообщение
я присвоил, а не равенство записал?
Точнее не скажешь, == это сравнение, = это присвоение. А первое это просто >= больше или равно, => нет такого оператора
1
2 / 2 / 2
Регистрация: 01.08.2013
Сообщений: 106
17.03.2014, 22:34  [ТС] 7
И еще один вопрос можно ли так возвести в квадрат
C++
1
pow(koll,2)
0
320 / 225 / 74
Регистрация: 22.11.2013
Сообщений: 865
Записей в блоге: 1
17.03.2014, 22:35 8
Лучший ответ Сообщение было отмечено tibeg как решение

Решение

Цитата Сообщение от tibeg Посмотреть сообщение
И еще один вопрос можно ли так возвести в квадрат
сложно ответить. Вот так можно:
C++
1
2
int i,kol=5;
i=pow(kol,2);
но это не совсем корректно и этот код вызовет warning, т.к. pow возвращает тип double, а пытаемся присвоить его типу int без явного преобразования. Правильнее так в этом случае:
C++
1
2
int i,kol=5;
i=(int)pow(kol,2);
А вот это код правильный абсолютно:
C++
1
2
3
int kol=5;
double i;
i=pow(kol,2);
1
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16842 / 6720 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
17.03.2014, 22:36 9
А попробовать? Можно, если koll типа double или float.. Хотя, вроде, и из int переведет без предупреждения, согласно новым стандартам.. Только непонятно, зачем вызывать функцию, когда проще просто умножить на себя же.
1
320 / 225 / 74
Регистрация: 22.11.2013
Сообщений: 865
Записей в блоге: 1
17.03.2014, 22:38 10
Цитата Сообщение от KOPOJI Посмотреть сообщение
новым стандартам
VS2012 выдает warning C4244
0
2 / 2 / 2
Регистрация: 01.08.2013
Сообщений: 106
17.03.2014, 22:38  [ТС] 11
Ну если вдруг понадобится возвести в 10 степень например)
0
KOPOJI
17.03.2014, 22:39
  #12

Не по теме:

Цитата Сообщение от mustimur Посмотреть сообщение
VS2012 выдает warning
не, я говорил не про присвоение, а про саму передачу в функцию. Про присвоение я пропустил :)

0
320 / 225 / 74
Регистрация: 22.11.2013
Сообщений: 865
Записей в блоге: 1
17.03.2014, 22:44 13
Тут не в целых степенях может быть проблема: 4^2.5 в роде нормально должно тоже проглатить, 5^2.5 компилятор вынужден на свой страх и риск округлять (вот и предупреждение о возможной потери данных)....

Добавлено через 2 минуты
Цитата Сообщение от KOPOJI Посмотреть сообщение
не, я говорил не про присвоение

Не по теме:

А я и подумать об этом не смог, преобразование int в double для меня естественно и по-умолчанию :)А наоборот нет

0
2 / 2 / 2
Регистрация: 01.08.2013
Сообщений: 106
17.03.2014, 22:48  [ТС] 14
Вот ща попробывал, как вы сказали, но не получается почему-то возвести в квадрат...
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
#include <iostream>
#include <cmath>
 
 
using namespace std;
 
int main()
{
    int a[15],kol=0,koll=0;
    double b;
 
    for(int i=0;i<15;i++)
    {
    cout << "[" << i+1 << "]:";
    cin >> a[i];
    }
     
    cout << "\nVasha matrica";
 
    for(int i=0;i<15;i++)
    {
    cout  << " " << a[i] << " ";
    }
 
    for(int i=0;i<15;i++)
    {
        if (a[i]%2==0)
            kol=kol+1;
 
        if 
            ((a[i]%2!=0)&&(a[i]>=1)&&(a[i]<=11))
            koll=koll+1;
        
    }
 
    cout << "Kol chetnix chisel:\n " << kol;
    cout << "Kol nechetnix v kvadrate:\n " << b=pow(koll,2);
 
 
return 0;
}
0
320 / 225 / 74
Регистрация: 22.11.2013
Сообщений: 865
Записей в блоге: 1
17.03.2014, 22:54 15
Лучший ответ Сообщение было отмечено tibeg как решение

Решение

либо так, я же не знал что Вы сразу ответ хотите выводить:
C++
1
cout << "Kol nechetnix v kvadrate:\n " << pow(koll,2);
либо так:
C++
1
2
b=pow(koll,2);
cout << "Kol nechetnix v kvadrate:\n " << b;
1
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16842 / 6720 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
17.03.2014, 22:54 16
C++
1
cout << "Kol nechetnix v kvadrate:\n " << (b=pow(koll,2));
C++
1
cout << "Kol nechetnix v kvadrate:\n " << (b = koll * koll);
C++
1
cout << "Kol nechetnix v kvadrate:\n " << pow(koll,2);
C++
1
cout << "Kol nechetnix v kvadrate:\n " << koll * koll;

Не по теме:

неужто ошибки в компиляторе выключены O_o

1
zzzZZZ...
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
17.03.2014, 22:55 17
да я что-то сглупил непростительно, прошу прощения
0
320 / 225 / 74
Регистрация: 22.11.2013
Сообщений: 865
Записей в блоге: 1
17.03.2014, 23:00 18
Цитата Сообщение от KOPOJI Посмотреть сообщение
неужто ошибки в компиляторе выключены

Не по теме:

А живые компиляторы на что?? ( Мы с Вами):D как же выключены, работаем и исправно


dzrkot, нормально все бывает)))
1
2 / 2 / 2
Регистрация: 01.08.2013
Сообщений: 106
17.03.2014, 23:34  [ТС] 19
Простите пожалуйста, но помогите еще раз)
Написал программу которая меняет в матрице размера m*n строки и столбцы местами.
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
#include <iostream>
 
using namespace std;
 
int main()
{
    int i,j,a[3][3], b[3][3];
 
    for(i=0;i<3;i++)
    {
        for (j=0;j<3;j++)
        {
            cout << "[" << i+1 << "]" << "[" << j+1 << "]:";
            cin >> a[i][j];
        }
    cout << "\n";
 
    }
 
    cout <<"\nVasha matrica: \n";
    
    for(i=0;i<3;i++)
    {
        for (j=0;j<3;j++)
        {
            
            cout << a[i][j];
        }
        cout <<"\n";
    }
 
    for(j=0;j<3;j++)
    {
        for(i=0;i<3;i++)
            b[j][i]=a[i][j];
    }
 
     cout <<"\n";
 
     for(j=0;j<3;j++)
      {
        for(i=0;i<3;i++)
        {
            cout << b[j][i];
        }
        cout << "\n";
      }
    
return 0;
}

А как сделать так, чтобы размер матрицы задавал пользователь вот попытался, но ничего не выходит

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
#include <iostream>
 
using namespace std;
 
int main()
{
        
    int i,j,a[3][3], b[3][3],a,b;
        
       cout << "Zadaite razmer matrici: ";
       cin >> a >>b;
 
    for(i=0;i<a;i++)
    {
        for (j=0;j<b;j++)
        {
            cout << "[" << i+1 << "]" << "[" << j+1 << "]:";
            cin >> a[i][j];
        }
    cout << "\n";
 
    }
 
    cout <<"\nVasha matrica: \n";
    
    for(i=0;i<a;i++)
    {
        for (j=0;j<b;j++)
        {
            
            cout << a[i][j];
        }
        cout <<"\n";
    }
 
    for(j=0;j<a;j++)
    {
        for(i=0;i<b;i++)
            b[j][i]=a[i][j];
    }
 
     cout <<"\n";
 
     for(j=0;j<a;j++)
      {
        for(i=0;b<3;i++)
        {
            cout << b[j][i];
        }
        cout << "\n";
      }
    
return 0;
}
0
320 / 225 / 74
Регистрация: 22.11.2013
Сообщений: 865
Записей в блоге: 1
18.03.2014, 10:12 20
Цитата Сообщение от tibeg Посмотреть сообщение
int i,j,a[3][3], b[3][3],a,b;
Ну во-первых вы объявляете a и b и как статический массив и как переменную типа int. Что уже не допустимо,а во вторых память под них должна выделяться динамически. Для двухмерных массивов память выделяется в 2 этапа: 1.Выделение памяти на массив указателей, 2.Выделение памяти на элементы. В обратной последовательности следует и освобождать. Существует несколько способов основными из которых являются конструкции типа: new/delete, malloc(calloc)/free. Существуют и другие способы (например отображение файлов в память), но они более специфичны и Вам пока туда не надо лезть. Конструкция malloc(calloc)/free перешла из Си, в то время как new/delete - это чистый С++. Основное отличие является то, что new/delete при создании и освобождении вызывает конструкторы/диструкторы объектов (если таковые есть. Malloc и calloc просто выделяют память на объект (calloc еще присваивает 0 объектам), поэтому их нельзя путать (new/delete и malloc(calloc)/free).
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
#include <iostream>
 
using namespace std;
 
int main()
{
        
    int i,j,**a, **b,a_с,b_с;
        
       cout << "Zadaite razmer matrici: ";
       cin >> a_с >>b_с;
       a=new int*[a_c];
       b=new int*[a_c];
    for(i=0;i<a_с;i++)
    {
     a[i]=new int[b_c];
     b[i]=new int[b_c];
    }
    for(i=0;i<a_с;i++)
    {
        for (j=0;j<b_с;j++)
        {
            cout << "[" << i+1 << "]" << "[" << j+1 << "]:";
            cin >> a[i][j];
        }
    cout << "\n";
 
    }
 
    cout <<"\nVasha matrica: \n";
    
    for(i=0;i<a_с;i++)
    {
        for (j=0;j<b_с;j++)
        {
            
            cout << a[i][j];
        }
        cout <<"\n";
    }
 
    for(j=0;j<a_с;j++)
    {
        for(i=0;i<b_с;i++)
            b[j][i]=a[i][j];
    }
 
     cout <<"\n";
 
     for(j=0;j<a_с;j++)
      {
        for(i=0;i<b_c;i++)
        {
            cout << b[j][i];
        }
        cout << "\n";
      }
    for(i=0;i<a_с;i++)
    {
     delete [] a[i];
     delete [] b[i];
    }
     delete [] a;
     delete [] b;
return 0;
}
второй вариант:
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
#include <iostream>
 
using namespace std;
 
int main()
{
        
    int i,j,**a, **b,a_с,b_с;
        
       cout << "Zadaite razmer matrici: ";
       cin >> a_с >>b_с;
       a=(int*) malloc(a_c*sizeof(int*));
       b=(int*) malloc(a_c*sizeof(int*));
    for(i=0;i<a_с;i++)
    {
     a[i]=(int) malloc(b_c*sizeof(int));
     b[i]=(int) malloc(b_c*sizeof(int));
    }
  
...........
 
    for(i=0;i<a_с;i++)
    {
     free (a[i]);
     free (b[i]);
    }
     free(a);
     free( b);
return 0;
}
Добавлено через 1 час 43 минуты
Во только в ваше случае правильнее так:
C++
1
2
3
4
5
6
7
8
9
10
11
       a=new int*[a_c];
       b=new int*[b_c];
    for(i=0;i<a_с;i++)   a[i]=new int[b_c];
     for(i=0;i<b_с;i++)  b[i]=new int[a_c];
....
for(i=0;i<a_с;i++)   delete [] a[i];
for(i=0;i<b_с;i++)  delete []b[i];
delete [] a;
delete [] b;
 
    }
Аналогично и с malloc, простите не посмотрел сразу внимательно что вы хотите. А те примеры допустимы только для квадратных матриц...
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.03.2014, 10:12
Помогаю со студенческими работами здесь

Найти ошибку в программе
Решаю задачу: Вот мой код: #include &lt;iostream&gt; #include &lt;windows.h&gt; using namespace std;...

найти ошибку в программе
Программа должна обеспечивать ввод с клавиатуры числа от 0 до 255 (типа unsight char), переводить...

Найти ошибку в программе
Найти ошибку в программе(связано с неправильным использованием указателя). Как можно исправить...

Найти ошибку в программе
Где ошибка в программе: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; #include...

Найти ошибку в программе
Программа должна используя Дерево выводить список игроков сначала всех играющих в основном составе...

Найти ошибку в программе
#include&lt;iostream&gt; #include&lt;stdio.h&gt; #include&lt;vector&gt; using namespace std; int main(){...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru