Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2010, 20:13   #1
Leshiy1
Форумчанин
 
Аватар для Leshiy1
 
Регистрация: 24.09.2009
Сообщений: 104
По умолчанию МассивТТТ

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

for (i=0; i<10; ++i)
if (i%2==1) s=s+i;
printf(" %d",+s);

что не так с кодом?
Leshiy1 вне форума Ответить с цитированием
Старый 06.04.2010, 20:18   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а где массив?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 06.04.2010, 20:28   #3
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Вместо
Код:
if (i%2==1) s=s+i;
printf(" %d",+s);
вот так лучше.
Код:
if (a[i]%2!=0)s++;
printf(" %d",s);

Последний раз редактировалось profi; 06.04.2010 в 20:52.
profi вне форума Ответить с цитированием
Старый 06.04.2010, 20:29   #4
Leshiy1
Форумчанин
 
Аватар для Leshiy1
 
Регистрация: 24.09.2009
Сообщений: 104
По умолчанию

Массив такой
46 30 32 40 6 17 45 15 48 26
после подчета
выходит 20
Leshiy1 вне форума Ответить с цитированием
Старый 06.04.2010, 20:34   #5
Leshiy1
Форумчанин
 
Аватар для Leshiy1
 
Регистрация: 24.09.2009
Сообщений: 104
По умолчанию

Теперь после такого кода
if (i%2!=0)s++;
printf(" %d",s);
получается 5
Leshiy1 вне форума Ответить с цитированием
Старый 06.04.2010, 20:42   #6
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

А переменную s инициализировал 0 перед циклом?
profi вне форума Ответить с цитированием
Старый 06.04.2010, 20:48   #7
Leshiy1
Форумчанин
 
Аватар для Leshiy1
 
Регистрация: 24.09.2009
Сообщений: 104
По умолчанию

Да. Вот весь код программы

#include<stdlib.h>
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
void main()
{
int s,i,c,nwhite,nother;
printf(" MASSIV"); printf("\n"); printf("\n");
textcolor(13);
s=0;
for(i=0; i<10; ++i)
printf(" %d", rand()%50); printf("\n"); printf("\n");
s=0;
for(i=0; i<10; ++i)
if (i%2!=1)s++;
printf(" %d",s);
getchar();
clrscr();
}

после запуска получается

MASSIV

46 30 32 40 6 17 45 15 48 26

5
Leshiy1 вне форума Ответить с цитированием
Старый 06.04.2010, 20:53   #8
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Код:
int a[10];
.......................
s=0;
for(i=0; i<10; ++i)
if (a[i]%2!=1)s++;
printf(" %d",s);
profi вне форума Ответить с цитированием
Старый 06.04.2010, 21:02   #9
Leshiy1
Форумчанин
 
Аватар для Leshiy1
 
Регистрация: 24.09.2009
Сообщений: 104
По умолчанию

#include<stdlib.h>
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
void main()
{
int s,i,c,nwhite,nother; int a[10];
printf(" MASSIV"); printf("\n"); printf("\n");
textcolor(13);
s=0;
for(i=0; i<10; ++i)
printf(" %d", a[i]); printf("\n"); printf("\n");
s=0;
for(i=0; i<10; ++i)
if (a[i]%2!=1)s++;
printf(" %d",s);
getchar();
clrscr();
}

получается
12290 4608 3360 64 12291 3360 64 3092 -29236 12803

8

опять не то
Leshiy1 вне форума Ответить с цитированием
Старый 06.04.2010, 21:03   #10
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Капец полный. И как ты массив заполняешь? Ты в курсе, что ты его вообще не заполняешь?

Код:
#include<stdio.h>

int main()
{
	int a[10], s = 0;

	for(int i = 0; i < 10; i++)
	{
		a[i] = i+10;
		printf("%d ", a[i]);
	}

	for(int j = 0; j < 10; j++)
		if(a[j]%2 != 0)
			s++;

	printf("\n\nS=%d\n",s);

	return 0;
}

Последний раз редактировалось profi; 06.04.2010 в 21:14.
profi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск