Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
3 / 4 / 0
Регистрация: 18.11.2010
Сообщений: 126
1

Задан массив С из 8 вещественных элементов. Подсчитать в нем количество положительных, отрицательных чисел и нулей.

27.09.2011, 00:55. Просмотров 1507. Ответов 18
Метки нет (Все метки)


Есть такая задача:

Задан массив С из 8 вещественных элементов. Подсчитать в нем количество положительных, отрицательных чисел и нулей.

Я написал код:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
  float otrec, poloj;
   int A[8],i;
  otrec=0;
  poloj=0;
    for(int i=0;i<8;i++)
   {
      if(mas[i]<0)otrec++;
       else if(mas[i]>0)poloj++;
   }
   printf("\n");
       getch();
}
сильно не ругайте) я только учу С что не так? пишет ошибка в
C
1
    for(int i=0;i<8;i++)
 Комментарий модератора 
Именуйте темы осмысленно. Название темы должно максимально полно отражать ее содержимое.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.09.2011, 00:55
Ответы с готовыми решениями:

Задан массив, состоящий из целых положительных и отрицательных чисел. Создать новый массив из положительных элементов старого
Задача: Задан массив, состоящий из целых положительных и отрицательных чисел. Создать новый массив...

Подсчитать, сколько в нем отрицательных, положительных и нулевых элементов
Дан массив действительных чисел размерностью N . Подсчитать, сколько в нем отрицательных,...

Определить количество отрицательных, положительных и количество нулей среди введеных чисел
С клавиатуры вводятся n чисел (в цикле). Необходимо написать программу, которая определяет кол-во...

Дан массив вещественных чисел. Выяснить верно ли, что количество положительных элементов не превышает 5
Здравствуйте. Помогите пожалуйста решить задачку. Дан массив вещественных чисел. Выяснить верно...

18
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
27.09.2011, 01:01 2
Вы не создали массив. Для использования функции getch(); подключите #include <conio.h>
Есть еще одна ошибка, но она не синтаксическая. Вы два раза создали переменную i. Это разрешается, если они созданы в разных блоках, но, если вы обращаетесь к переменной i в одном блоке, то будет обращение к i, созданной именно в этом блоке, а не в другом, т.е. в вашей программе вы обращаетесь к i, которая создана в блоке for, а не к той, которая создана в main. Данная программа работает правильно, однако в других программах это возможно будет логической ошибкой, если вы захотите обратиться к i, которая создана во внешнем блоке, поэтому не создавайте переменных с одним именем.
0
3 / 4 / 0
Регистрация: 18.11.2010
Сообщений: 126
27.09.2011, 01:07  [ТС] 3
Chelioss,
Цитата Сообщение от Chelioss Посмотреть сообщение
подключите #include <conio.h>
да вроде ничего подключать не нужно и так всегда отлично работало...


Цитата Сообщение от Chelioss Посмотреть сообщение
Вы не создали массив.
А можно по подробней??
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
27.09.2011, 01:08 4
Цитата Сообщение от Licwin Посмотреть сообщение
А можно по подробней??
У вас массив называется A, а вы пишите mas.
0
3 / 4 / 0
Регистрация: 18.11.2010
Сообщений: 126
27.09.2011, 01:15  [ТС] 5
Chelioss,

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
  float otrec, poloj;
   int A[8],i=0;
 
        for(i=0;i<8;i++)
   {
         printf("Vvedite element",i);
    scanf ("%lf", A[i]);
          if(A[i]<0)otrec++;
           else if(A[i]>0)poloj++;
   }
   printf("otrec=%d\n poloj=%d", otrec, poloj);
           getch();
}
блин, так чтоли будет? чевот у меня совсем не получается)
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
27.09.2011, 01:18 6
Цитата Сообщение от Licwin Посмотреть сообщение
scanf ("%lf", A[i]);
Надо так:
C++
1
scanf ("%lf", &A[i]);
0
3 / 4 / 0
Регистрация: 18.11.2010
Сообщений: 126
27.09.2011, 01:21  [ТС] 7
Chelioss,
чевот у меня не выводит результат(
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
27.09.2011, 01:23 8
Вы забыли переменные otrec, poloj инициализировать нулем.
0
3 / 4 / 0
Регистрация: 18.11.2010
Сообщений: 126
27.09.2011, 01:26  [ТС] 9
Chelioss,
Цитата Сообщение от Chelioss Посмотреть сообщение
otrec, poloj инициализировать нулем.
а как их инициализировать с нулем?)
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
27.09.2011, 01:30 10
А вы посмотрите свое первое сообщение в этом топике. Странные вопросы, конечно. Вам бы почитать нормальную книгу.
0
3 / 4 / 0
Регистрация: 18.11.2010
Сообщений: 126
27.09.2011, 01:39  [ТС] 11
Chelioss, точно)
а можно так?
C
1
float otrec, poloj,zero=0;
но что-то все равно не так((
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
27.09.2011, 01:40 12
При создании сразу устанавливайте значения этих переменных в нуль.
C++
1
float otrec = 0, poloj = 0;
Добавлено через 50 секунд
Цитата Сообщение от Licwin Посмотреть сообщение
а можно так?
Вы добавили еще одну переменную и инициализировали ее нулем, но первые две переменные вы не трогали.
0
0 / 0 / 0
Регистрация: 18.07.2011
Сообщений: 8
27.09.2011, 02:53 13
если числа надо вводить с клавиатуры, то как то так..
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 <stdlib.h>
 
int main()
{
    float m[8];
    int i,zer=0,pol=0,otr=0;
    for(i=0;i<8;i++)
    {
        printf("vvedi chislo\n");
        scanf("%f",&m[i]);
        if(m[i]>0)
        pol++;
        if(m[i]<0)
        otr++;
        if(m[i]==0)
        zer++;
    }
    printf("Polojitel'nih: %d\nOtricatel'nih: %d\nNylei: %d",pol,otr,zer);
}
0
В вечном поиске...
275 / 235 / 30
Регистрация: 05.04.2011
Сообщений: 645
27.09.2011, 09:36 14
Цитата Сообщение от Chelioss Посмотреть сообщение
Надо так:
C
1
1scanf ("%lf", &A[i]);
Да ну? Массив то целочисленный.

Добавлено через 7 минут
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
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <time.h>
 
int main()
{
  int otrec, poloj;
  int A[8],i;
  srand(time(NULL));
  printf("Massiv: ");
  for(int i=0;i<8;i++)
   {
     A[i] = rand()%20-10;
     printf(" %i",A[i]);
   }
  otrec=0;
  poloj=0;
        for(int i=0;i<8;i++)
   {
          if(A[i]<0) otrec++;
           else if(A[i]>0) poloj++;
   }
   printf("\nOtrec = %i, Poloj = %i",otrec,poloj);
           getch();
}
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
27.09.2011, 18:27 15
Цитата Сообщение от Nursik77 Посмотреть сообщение
Да ну? Массив то целочисленный.
Я про scanf говорил, а не про printf!
0
В вечном поиске...
275 / 235 / 30
Регистрация: 05.04.2011
Сообщений: 645
27.09.2011, 18:38 16
ЭЭЭ, а я про что?
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
27.09.2011, 19:04 17
Дык scanf получается указатель на переменную, то надо взять адрес от элемента массива &A[i], иначе вы в качестве адреса передадите данные элемента. http://www.cplusplus.com/refer... dio/scanf/
Я так и не понял причем тут целочисленный массив.

Добавлено через 3 минуты
Точнее это не синтаксическая ошибка, а ошибка времени выполнения, т.к. все таки число преобразуется в адрес.

Я так понимаю, вот почему в С++ советуют не использовать сишные функции вводы и вывода, ибо они не безопасны по типу. Пример выше.
0
В вечном поиске...
275 / 235 / 30
Регистрация: 05.04.2011
Сообщений: 645
27.09.2011, 19:16 18
Я про то, что lf - это число с удвоенной плавающей точкой, а массив у нас целочисленный.
0
0 / 0 / 0
Регистрация: 27.09.2011
Сообщений: 13
27.09.2011, 19:28 19
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <conio.h>
int cnt_p, cnt_o, cnt_z;
int i;
double a[10];
int main () {
cnt_o = 0; cnt_p = 0; cnt_z = 0;
for(i = 0; i < 8; i++) {
scanf("%lf", &a[i]);
}
for(i = 0; i < 8; i++) {
if(a[i] < 0) cnt_o ++;
if(a[i] == 0) cnt_z ++;
if(a[i] > 0) cnt_p++;
}
printf("Положительных - %d\nОтрицательных - %d\nНулей - %d\n", cnt_p, cnt_o, cnt_z);
getch();
return 0;
}
Как то так...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.09.2011, 19:28

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Последовательно вводя числа с клавиатуры, найдите количество отрицательных чисел, положительных чисел и нулей
Последовательно вводя числа с клавиатуры, найдите количество отрицательных чисел, положительных...

Дан массив вещественных случайных чисел. Подсчитать сумму положительных чисел
Дан массив вещественных случайных чисел (размер массива определяет пользователь, но в диапазоне )....

Подсчитать количество отрицательных и сумму положительных элементов
В массиве (Cn ) подсчитать количество отрицательных и сумму положительных элементов.

Подсчитать количество отрицательных и сумму положительных элементов массива
В массиве С(n) подсчитать количество отрицательных и сумму положительных элементов.


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

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

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