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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
punser
3 / 3 / 1
Регистрация: 18.03.2010
Сообщений: 32
#1

Не могу найти ошибку в массиве - C++

21.05.2011, 09:01. Просмотров 1228. Ответов 31
Метки нет (Все метки)

Подскажите, что делаю не так.
Задача:
Определить номер и значение первого отрицательного элемента в массиве mas(n). Предусмотреть в программе вывод сообщения, если таковой отсутствует
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<stdio.h>
#include<iostream.h>
#include<constrea.h>
void main()
{
int i,a;
const n=5;
float mas[n];
for(i=0; i<n; i++)
cin>>mas[i];
do
{
if (mas[i]<0)
mas[i]=a;
else
cout<<"Otricatelnyh elementov net";
i++;
}
while(i<n);
cout<<a;
getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2011, 09:01     Не могу найти ошибку в массиве
Посмотрите здесь:

Не могу найти ошибку в массиве - C++
Добрый вечер. Никак не могу найти ошибку. Спасибо за помощь # include &lt;iostream&gt; # include &lt;math.h&gt; # include &lt;conio.h&gt; #...

Не могу найти ошибку - C++
Помогите найти ошибку: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;fstream&gt; using namespace std; ...

Не могу найти ошибку - C++
Компилятор выдает такую ошибку: fatal error C1075: конец файла обнаружен ранее, чем левая фигурная скобка &quot;{&quot; в...

Не могу найти ошибку! - C++
Пробую что-то вычудить..... не могу найти ошибку (просто интересно) #include &lt;iostream&gt; using namespace std; ...

Не могу найти ошибку - C++
#include &quot;stdafx.h&quot; #include &lt;conio.h&gt; class Sum { public: int sum1 (int x1, int x2) { return x1 + x2; ...

Не могу найти ошибку - C++
Уважаемые форумчане! Скорее всего моя ошибка опять глупая, но я просто не могу её понять. Самое странное что он даже просто ввести строку...

Не могу найти ошибку - C++
Условие задачи: Написать функцию решения квадратного уравнения. Помогите найти ошибку: #include &lt;iostream.h&gt; int sqvare (int a)...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rexer
163 / 162 / 20
Регистрация: 10.10.2010
Сообщений: 724
21.05.2011, 09:06     Не могу найти ошибку в массиве #2
C++
1
2
for(i=0; i<n; i++)
cin>>mas[i];
Чему равно i после этого?
Перед входом в do{}while(); обнулите i.
Вы присваиваете в 15 строчке элементу массива какое-то значение a,которое компилятор может взять из памяти,но это мусор,а не ваш отрицательный элемент.
Попробуйте так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<stdio.h>
#include<iostream.h>
#include<constrea.h>
void main()
{
int i,a;
const n=5;
float mas[n];
for(i=0; i<n; i++)
cin>>mas[i];
i = 0;//обнуляем i для счетчика
do
{
if (mas[i]<0);
a = mas[i]; // операции присваивания справа налево идут!у вас было наоборот.
else
cout<<"Otricatelnyh elementov net";
i++;
}
while(i<n);
cout<<a;
getch();
}
punser
3 / 3 / 1
Регистрация: 18.03.2010
Сообщений: 32
21.05.2011, 09:24  [ТС]     Не могу найти ошибку в массиве #3
Спасибо. Значение отрицательного элемента находит, но последнего введенного, а как сделать чтобы выдавала первого и номер элемента в массива в котором это значение хранится?
lamed
297 / 297 / 71
Регистрация: 07.05.2011
Сообщений: 592
21.05.2011, 09:26     Не могу найти ошибку в массиве #4
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
#include<iostream>
//#include<constrea.h>
using namespace std;
 
int main()
{
    int i;
    const int n=5;
    float mas[n];
    for(i=0; i<n; i++)
        cin>>mas[i];
 
    i=-1;
    do
    {
        i++;
    }
    while(i<n && mas[i]>=0);
 
    if (i==n)
        cout<<"Otricatelnyh elementov net" << endl;
    else
        cout << i << ' ' << mas[i] << endl;
 
//    getch();
    return 0;
}
punser
3 / 3 / 1
Регистрация: 18.03.2010
Сообщений: 32
21.05.2011, 12:51  [ТС]     Не могу найти ошибку в массиве #5
lamed, спасибо, буду разбираться

Добавлено через 3 часа 20 минут
Цитата Сообщение от lamed Посмотреть сообщение
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
#include<iostream>
//#include<constrea.h>
using namespace std;
 
int main()
{
    int i;
    const int n=5;
    float mas[n];
    for(i=0; i<n; i++)
        cin>>mas[i];
 
    i=-1;
    do
    {
        i++;
    }
    while(i<n && mas[i]>=0);
 
    if (i==n)
        cout<<"Otricatelnyh elementov net" << endl;
    else
        cout << i << ' ' << mas[i] << endl;
 
//    getch();
    return 0;
}
А как из этого сделать, чтобы находил не первый отрицательный элемент, а первый положительный?
From_Tula
40 / 40 / 2
Регистрация: 22.05.2009
Сообщений: 482
21.05.2011, 13:30     Не могу найти ошибку в массиве #6
C++
1
2
3
4
5
6
7
8
9
10
do
    {
        i++;
    }
    while(i<n && mas[i]<0);
 
    if (i==n)
        cout<<"Poloshitelnyh elementov net" << endl;
    else
        cout << i << ' ' << mas[i] << endl;
lamed
297 / 297 / 71
Регистрация: 07.05.2011
Сообщений: 592
21.05.2011, 13:44     Не могу найти ошибку в массиве #7
C++
1
2
3
4
5
6
/.....
while(i<n && mas[i]<=0);
 
    if (i==n)
        cout<<"Pologitelnyh elementov net" << endl;
//.......
punser
3 / 3 / 1
Регистрация: 18.03.2010
Сообщений: 32
21.05.2011, 13:51  [ТС]     Не могу найти ошибку в массиве #8
From_Tula, Спасибо!!! Я наверное с этими массивами никогда не разберусь
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
21.05.2011, 15:33     Не могу найти ошибку в массиве #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <algorithm>
 
int main()
{
   const size_t n=5;
   float mas[n] = {1, -5, 4, -6};
   float *f = std::find_if(mas, mas+n, 
      [](float a)
      {
         return a < 0;
      }
   );
   if(f==mas+n)
      std::cout<<"negative values not found"<<std::endl;
   else
      std::cout<<"value = "<<*f<<"; index = "<< f - mas + 1<<std::endl; 
}
Добавлено через 5 минут
либо так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <algorithm>
#include <boost/lambda/lambda.hpp>
 
int main()
{
   const size_t n=5;
   float mas[n] = {1, -5, 4, -6};
   float *f = std::find_if(mas, mas+n, boost::lambda::_1 < 0 );
   if(f==mas+n)
      std::cout<<"negative values not found"<<std::endl;
   else
      std::cout<<"value = "<<*f<<"; index = "<< f - mas + 1<<std::endl; 
}
Добавлено через 4 минуты
либо так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <algorithm>
#include <functional>
 
int main()
{
   const size_t n=5;
   float mas[n] = {1, -5, 4, -6};
   float *f = std::find_if(mas, mas+n, std::bind2nd(std::less<float>(), 0) );
   if(f==mas+n)
      std::cout<<"negative values not found"<<std::endl;
   else
      std::cout<<"value = "<<*f<<"; index = "<< f - mas + 1<<std::endl; 
}
punser
3 / 3 / 1
Регистрация: 18.03.2010
Сообщений: 32
23.05.2011, 08:21  [ТС]     Не могу найти ошибку в массиве #10
Народ, а не поможете сделать программку, которая находила бы сумму элементов массива, с четными индексами?
Rexer
163 / 162 / 20
Регистрация: 10.10.2010
Сообщений: 724
23.05.2011, 18:32     Не могу найти ошибку в массиве #11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<stdio.h>
#include<iostream.h>
#include<constrea.h>
void main()
{
int i;
const n=5;
float sum,mas[n];
for(i=0; i<n; i++)
cin>>mas[i];
i = -1;
sum = 0;
do
{
i++;
if(i % 2 == 0)
sum +=mas[i];
}while(i < n);
getch();
}
На вскидку)Попробуйте,если не получится,то по этому алгоритму просто доработать программу)
STGE
770 / 576 / 91
Регистрация: 17.06.2009
Сообщений: 1,188
23.05.2011, 18:45     Не могу найти ошибку в массиве #12
Цитата Сообщение от punser Посмотреть сообщение
сделать программку, которая находила бы сумму элементов массива, с четными индексами
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<iostream>
using namespace std;
int main()
{
    const int n(10);
    int mas[n]={3,12,5,10,21,32,49,9,4,35},i,sum;
    cout<<"ishodnii massiv:"<<endl;
    for(i=0;i<=n-1;i++)
        cout<<"mas["<<i+1<<"]="<<mas[i]<<endl;
    for(i=0;i<=n-1;i++)
        if(i%2) sum+=mas[i];
        cout<<"summa elementov massiva s chetnimi indeksami = "<<sum;
    return 0;
}

punser
3 / 3 / 1
Регистрация: 18.03.2010
Сообщений: 32
23.05.2011, 19:52  [ТС]     Не могу найти ошибку в массиве #13
Спасибо

Добавлено через 12 минут
Блин рано радовался . Ни одна не работает

Добавлено через 41 минуту
Цитата Сообщение от Rexer Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<stdio.h>
#include<iostream.h>
#include<constrea.h>
void main()
{
int i;
const n=5;
float sum,mas[n];
for(i=0; i<n; i++)
cin>>mas[i];
i = -1;
sum = 0;
do
{
i++;
if(i % 2 == 0)
sum +=mas[i];
}while(i < n);
getch();
}
На вскидку)Попробуйте,если не получится,то по этому алгоритму просто доработать программу)
Блин считает нечетные элементы, а как замутить четные?
STGE
770 / 576 / 91
Регистрация: 17.06.2009
Сообщений: 1,188
23.05.2011, 20:08     Не могу найти ошибку в массиве #14
punser, мой вариант вам тоже не помог?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2011, 20:48     Не могу найти ошибку в массиве
Еще ссылки по теме:

Не могу найти ошибку - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;iomanip&gt; using namespace std; int _tmain() { ...

Не могу найти ошибку - C++
Задача: вывести элементы массива, которые повторяются ровно 2 раза #include &lt;cstdlib&gt; #include &lt;iostream&gt; using namespace std; ...

Не могу найти ошибку - C++
Осуществить циклический сдвиг квадратной матрицы размерности NxN вправо на N элементов таким образом: элементы 1-й строки сдвигаются в...

Не могу найти ошибку - C++
Кусок программы. Нужно найти в файле необходимую услугу и записать её номер. У строки searching уже есть значение. Пример строки: Cвязь...

Не могу найти ошибку - C++
Как правильно сделать через рекурсию?


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

Или воспользуйтесь поиском по форуму:
punser
3 / 3 / 1
Регистрация: 18.03.2010
Сообщений: 32
23.05.2011, 20:48  [ТС]     Не могу найти ошибку в массиве #15
Цитата Сообщение от STGE Посмотреть сообщение
punser, мой вариант вам тоже не помог?
Ваш вообще запускаться не захотел

Добавлено через 35 минут
Цитата Сообщение от punser Посмотреть сообщение
if(i % 2 == 0)
sum +=mas[i];
Нифига не понимаю . Ведь данные 2 строки показывают, что если остаток от деления равен нулю, то складываем элементы. Тогда почему он складывает нечетные, ведь при делении нечетного числа на 2 остаток никогда не будет ноль?
Yandex
Объявления
23.05.2011, 20:48     Не могу найти ошибку в массиве
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru