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

Несколько вопросов про массив - C++

Восстановить пароль Регистрация
 
Freizer
 Аватар для Freizer
0 / 0 / 0
Регистрация: 12.12.2009
Сообщений: 20
12.12.2009, 09:58     Несколько вопросов про массив #1
Добрый день, было задание написать программку, которая бы подсчитывала количество элементов в массиве, меньших значений C, которое вводится с клавиатуры.

Вот то что получилось, но при компиляции выдаются ошибки, пожалуйста подскажите что не так делаю.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <math.h>
void main()
{
    int a[10]={-4, -3, -2, -1, 0, 1, 2, 3, 4, 5};
    int c, i, m;
    printf ("c=");
    scanf ("%f", &c);
    for (i=0; i<10; i++)
    {
    if (a[i]<c) m++
    }
    printf ("m=%f", m);
}
Заранее благодарен.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Darky
Быдлокодер
 Аватар для Darky
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
12.12.2009, 10:06     Несколько вопросов про массив #2
Много мелких огрехов.
Во- первых, math.h тут совершенно ни к чему - убираем.
Во-вторых, %f заменить на %d
В-третьих, переменные нужно всегда обнулять.
В-четвертых, m++ тоже требует точки с запятой
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
void main()
{
        int a[10]={-4, -3, -2, -1, 0, 1, 2, 3, 4, 5};
        int c=0, i=0, m=0;
        printf ("c=");
        scanf ("%d", &c);
        for (i=0; i<10; i++)
          {
            if (a[i]<c)
                m++;
          }
        printf ("Kol-vo ravno:%d", m);
}
iomi
 Аватар для iomi
0 / 0 / 0
Регистрация: 12.12.2009
Сообщений: 7
12.12.2009, 11:22     Несколько вопросов про массив #3
Здравствуйте, решила не создавать новую тему, дабы не создавать лишний мусор.
почитала немного форум. понимаю что вопрос крайне глупый, но я только недавно изучаю С++ а в универе требуют очень много. прошу помощи..

1 Дан массив A размера N. Сформировать новый массив B того же размера по следующему правилу: элемент BK равен сумме элементов массива A с номерами от K до N.
2 Дан целочисленный массив размера N. Преобразовать массив, увеличив его последнюю серию наибольшей длины на один элемент (Назовем серией группу подряд идущих одинаковых элементов)..
3. Дан массив размера N. Найти номера тех элементов массива, которые больше своего левого соседа, и количество таких элементов. Найденные номера выводить в порядке их убывания.

самая большая проблема в том что я не умею выводить эл-ты масиива на экран. 3ю задачку то я в принципе могу сделать, но элементы вывести не могу...
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
12.12.2009, 11:40     Несколько вопросов про массив #4
iomi,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <algorithm>
#include <iterator>
 
template <typename T,size_t N> inline void output (const T (&arr)[N])
{
    std::copy(arr,arr+sizeof(arr)/sizeof(*arr),std::ostream_iterator<T>(std::cout," "));
    std::cout<<std::endl;
}
 
int main()
{
    int arr[] = {1,2,3};
    double arr2[] = {2.2,3.3};
    output<int>(arr);
    output<double>(arr2);
    system("pause");
    return 0;
}
Freizer
 Аватар для Freizer
0 / 0 / 0
Регистрация: 12.12.2009
Сообщений: 20
12.12.2009, 12:08  [ТС]     Несколько вопросов про массив #5
Darky, огромное спасибо за помощь. Если не сложно расскажи чем %f от %d отличается.

И ещё 2 вопрос - как сделать программку, которая бы вычисляла Сумму целых частей массива, расположенных до минимального элемента. Массив можно использовать тот же.
Darky
Быдлокодер
 Аватар для Darky
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
12.12.2009, 12:27     Несколько вопросов про массив #6
Freizer, Как я понимаю, %f - это char
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
int main(void)
{
const int N=6;
  int A[N];
  int i,min=0,sum=0,i_min=0;
  min=A[0];
  for (i=0;i<N;i++)
  {
    cout<<"Vvedite A["<<i<<"]: ";
    cin>>A[i];
      if (A[i]<min)
      {
        min=A[i];
        i_min=i;
      }
  }
  cout<<"\nMinumum= "<<min;
  for (i=0;i<i_min;i++)
    sum+=A[i];
  cout<<"\nSumma el. do minimyma ravna: "<<sum;
}
Freizer
 Аватар для Freizer
0 / 0 / 0
Регистрация: 12.12.2009
Сообщений: 20
12.12.2009, 12:38  [ТС]     Несколько вопросов про массив #7
Спасибо за пример, но при компиляции Microsoft Visual Studio выдаёт такие вот сообщение об ошибках:

Код
1>
------ Построение начато: проект: Elements C1, Конфигурация: Debug Win32 ------
1>Компиляция...
1>1.cpp
1>c:\users\sidorlutai\documents\visual studio 2008\projects\elements c1\elements c1\1.cpp(10) : error C2065: cout: необъявленный идентификатор
1>c:\users\sidorlutai\documents\visual studio 2008\projects\elements c1\elements c1\1.cpp(11) : error C2065: cin: необъявленный идентификатор
1>c:\users\sidorlutai\documents\visual studio 2008\projects\elements c1\elements c1\1.cpp(18) : error C2065: cout: необъявленный идентификатор
1>c:\users\sidorlutai\documents\visual studio 2008\projects\elements c1\elements c1\1.cpp(21) : error C2065: cout: необъявленный идентификатор
1>Журнал построения был сохранен в "file://c:\Users\SidorLutai\Documents\Visual Studio 2008\Projects\Elements C1\Elements C1\Debug\BuildLog.htm"
1>Elements C1 - ошибок 4, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Не подскажите из за чего это?

Более верно задание звучит так - В одномерном массиве, состоящим из n вещественных элементов, вычислить сумму целых частей элементов массива, расположенных до максимального элемента.
Darky
Быдлокодер
 Аватар для Darky
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
12.12.2009, 12:41     Несколько вопросов про массив #8
Подскажу.
Попробуйте так
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 <iostream>
using namespace std;
int main(void)
{
const int N=6;
  int A[N];
  int i,min=0,sum=0,i_min=0;
  min=A[0];
  for (i=0;i<N;i++)
  {
    cout<<"Vvedite A["<<i<<"]: ";
    cin>>A[i];
      if (A[i]<min)
      {
        min=A[i];
        i_min=i;
      }
  }
  cout<<"\nMinumum= "<<min;
  for (i=0;i<i_min;i++)
    sum+=A[i];
  cout<<"\nSumma el. do minimyma ravna: "<<sum;
}
Freizer
 Аватар для Freizer
0 / 0 / 0
Регистрация: 12.12.2009
Сообщений: 20
12.12.2009, 12:46  [ТС]     Несколько вопросов про массив #9
Я в своём посте не очень верно указал задание, глянь в предыдущем, там где отчёт об ошибке плиз...
Darky
Быдлокодер
 Аватар для Darky
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
12.12.2009, 14:10     Несколько вопросов про массив #10
Для элементов после последнего отрицательного

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>
using namespace std;
int main(void)
{
const int N=6;
  int A[N];
  int i,otr=-1,sum=0,j=-1;
  for (i=0;i<N;i++)
  {
    cout<<"Vvedite A["<<i<<"]: ";
    cin>>A[i];
      if (A[i]<0)
      {
        otr=A[i];
        j=i;
      }
  }
  cout<<"Last < 0: "<<otr;
  cout<<"\nEgo index: "<<j;
  sum-=otr;
  for (;j<N;j++)
  {
    sum+=A[j];
  }
 if (sum>0)
    cout<<"\nSumma el. posle poslednego < 0: "<<sum;
}
Freizer
 Аватар для Freizer
0 / 0 / 0
Регистрация: 12.12.2009
Сообщений: 20
12.12.2009, 15:45  [ТС]     Несколько вопросов про массив #11
Darky, ещё раз огромное спасибо за пример.

Я немного упростил для своих целей, и получилось то что нужно:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
void main()
{
  int A[10]={-4,-3,-2,-1,0,1,2,3,4,5};
  int i,otr=-1,sum=0,j=-1;
  for (i=0;i<10;i++)
  {
          if (A[i]<0)
      {
        otr=A[i];
        j=i;
      }
  }
    sum-=otr;
  for (;j<10;j++)
  {
    sum+=A[j];
  }
 if (sum>0)
    printf ("Summa el. posle poslednego:%d", sum);
}
Если не сложно расскажите как работает += или -= в C++.
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
12.12.2009, 15:53     Несколько вопросов про массив #12
Freizer, a+=1 == a=a+1
Freizer
 Аватар для Freizer
0 / 0 / 0
Регистрация: 12.12.2009
Сообщений: 20
12.12.2009, 15:58  [ТС]     Несколько вопросов про массив #13
То есть, если будет a+=5 == a=a+5, верно?
manfeese
 Аватар для manfeese
128 / 127 / 16
Регистрация: 04.01.2009
Сообщений: 415
12.12.2009, 16:09     Несколько вопросов про массив #14
Freizer, да верно!

Добавлено через 5 минут
Таким образом можно использовать не только сложение
Код
a+=5 эквивалентно a=a+5;
a-=5 эквивалентно a=a-5;
a*=5 эквивалентно a=a*5;
a/=5 эквивалентно a=a/5;
a%=5 эквивалентно a=a%5;
a|=5 эквивалентно a=a|5;
a^=5 эквивалентно a=a^5;
a&=5 эквивалентно a=a&5;
Freizer
 Аватар для Freizer
0 / 0 / 0
Регистрация: 12.12.2009
Сообщений: 20
12.12.2009, 16:14  [ТС]     Несколько вопросов про массив #15
Интересно, но возник вопрос по поводу
Цитата Сообщение от manfeese Посмотреть сообщение
a%=5 эквивалентно a=a%5;
a|=5 эквивалентно a=a|5;
a^=5 эквивалентно a=a^5;
a&=5 эквивалентно a=a&5;
что означает %, |, ^ и & ...
manfeese
 Аватар для manfeese
128 / 127 / 16
Регистрация: 04.01.2009
Сообщений: 415
12.12.2009, 16:21     Несколько вопросов про массив #16
% - остаток от деления (5%3=2)
|, ^ и & логические побитовые операции: ИЛИ (or), ИСКЛЮЧАЮЩЕЕ ИЛИ (xor), И (and) соответственно
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2009, 16:22     Несколько вопросов про массив
Еще ссылки по теме:

C++ Несколько вопросов по основам программирования
C++ Несколько вопросов по указателям.
C++ Несколько вопросов
Несколько вопросов C++
Несколько вопросов к программистам. C++

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

Или воспользуйтесь поиском по форуму:
Freizer
 Аватар для Freizer
0 / 0 / 0
Регистрация: 12.12.2009
Сообщений: 20
12.12.2009, 16:22  [ТС]     Несколько вопросов про массив #17
Ясно, всем огромное спасибо!
Yandex
Объявления
12.12.2009, 16:22     Несколько вопросов про массив
Ответ Создать тему
Опции темы

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