Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
3 / 3 / 1
Регистрация: 08.10.2011
Сообщений: 73

написать программу подсчета нечетных чисел последовательности

08.10.2011, 19:49. Показов 3523. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
нужно написать программу подсчета нечетных чисел последовательности, вводимой с клавиатуры, причем НЕ используя массив, а используя оператор sscanf

буду очень благодарна

 Комментарий модератора 
3.3 Запрещено создавать темы с бессмысленными названиями вроде "Помогите!", "Вопрос" и т.п.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.10.2011, 19:49
Ответы с готовыми решениями:

Написать программу, которая предлагает пользователю ввести 10 чисел, вычисляет процент четных и нечетных чисел и выводит результат в консоль
Написать программу, которая предлагает пользователю ввести 10 чисел, вычисляет процент четных и нечетных чисел и выводит результат в...

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

Написать программу для вычисления суммы факториалов всех нечетных чисел от 1 до 9.
Помогите, пожалуйста, решить задачу в С++. Написать программу для вычисления суммы факториалов всех нечетных чисел от 1 до 9.

17
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
08.10.2011, 20:28
нужно написать
А вы пытались?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
08.10.2011, 20:31
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
int main(void){
    int num, cnt = 0;
    
    while ( printf("> ") > 0 && scanf("%d", &num) == 1 )
        cnt += ( num & 1 );
    
    printf("%d odd numbers.\n", cnt);
    
    return 0;
}
1
 Аватар для KeyGen
388 / 295 / 21
Регистрация: 07.08.2011
Сообщений: 790
Записей в блоге: 1
08.10.2011, 23:06
Вот такая, но без sscanf(я так подозреваю это cin)
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
#include <iostream>
using namespace std;
    
int main()
{
    setlocale(LC_ALL, "rus");
    cout << "Ââîäèòå ÷èñëà через ïðîáåë(äëÿ çàâåøåíèÿ ââåäèòå #):\n";
    
    int i=0;
    int num=0;
    
    while (cin>>num){ //Ïîêà ââîä âåðåí
          if(num%2)   //Öåëî ÷èñëåííîå äеëåíèå 1 åñëè íå ÷åò
          i++;
          }
          
          if(num>0)   //Åñëè åñòü ââîä öèôðû
          cout << "\nÍå ÷åòíûõ ÷èñåë: " << i;
          else        //Ââåäèíà # ñðàçó(íå îáÿçàòåëüíî # ëþáîé äðóãîé çíàê)
          cout << "\nGoodbye";
    
    cout << "\n\n\n";
    system("PAUSE");
    return 0;
}
Миниатюры
написать программу подсчета нечетных чисел последовательности  
1
3 / 3 / 1
Регистрация: 08.10.2011
Сообщений: 73
09.10.2011, 22:10  [ТС]
Цитата Сообщение от easybudda Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
int main(void){
    int num, cnt = 0;
    
    while ( printf("> ") > 0 && scanf("%d", &num) == 1 )
        cnt += ( num & 1 );
    
    printf("%d odd numbers.\n", cnt);
    
    return 0;
}
нужно использовать оператор SSCANF....

Добавлено через 1 минуту
забыла написать что нужно на Си

Добавлено через 1 минуту
Цитата Сообщение от soon Посмотреть сообщение
А вы пытались?
я пыталась, но дело в том, что я плохо понимаю чем отличается sscanf от scanf, и как его нужно использовать
0
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.10.2011, 22:17
nadyush-princes, вам easybudda написал что вы просили. Про sscanf вы, наверное, погорячились, такая функция есть, но она читает данные из строки. Берите алгоритм из поста 3 и радуйтесь жизни. P.S. Чтобы ввод чисел прекратить, можете на очередной запрос символ, например, ввести
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
09.10.2011, 22:38
C
1
2
3
4
5
6
7
8
#include <stdio.h>
int main() {
 char a[64];
 int n,c=0;
 while(printf("> ")&&gets(a)&&sscanf(a,"%d",&n)==1)c+=n&1;
 printf("%d odd numbers.\n",c);
 return 0;
}
0
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.10.2011, 22:43
lazybiz, а если понадобится sprintf, то сначала в строку запишем, а потом строку выведем на экран
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
09.10.2011, 22:56
Thinker, ты читал(а) условия задания?
0
3 / 3 / 1
Регистрация: 08.10.2011
Сообщений: 73
11.10.2011, 00:39  [ТС]
[QUOTE=Thinker;2055601]nadyush-princes, Про sscanf вы, наверное, погорячились,


скорее погорячился мой препод, а не я))))))
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
11.10.2011, 05:57
Цитата Сообщение от nadyush-princes
нужно написать программу подсчета нечетных чисел последовательности, вводимой с клавиатуры, причем НЕ используя массив, а используя оператор sscanf
Цитата Сообщение от nadyush-princes
нужно использовать оператор SSCANF....
для sscanf() обязательно нужен массив

Цитата Сообщение от nadyush-princes
я плохо понимаю чем отличается sscanf от scanf
они ничем не отличаются, просто берут данные из разных источников
(у sscanf() есть ограничение на перекрытие)
0
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
11.10.2011, 09:29
Цитата Сообщение от lazybiz Посмотреть сообщение
Thinker, ты читал(а) условия задания?

Не по теме:

А пытался(пыталась) понять абсурдность задания?:)

0
0 / 0 / 0
Регистрация: 31.08.2011
Сообщений: 3
05.11.2011, 14:19
Ну вот кстати я бы не сказал, что это абсурдно, но только тут нужно дополнительно знать в каком формате вводятся числа(например ели каждое число состоит железно из 2/3/4/../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
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
#define MaxLen 1025
 
int OddSum(char s[]);
 
int main()
{
    char s[MaxLen];
    gets(s);
    long sum = OddSum(s);
    printf("%d",sum);
    return 0;
}
 
int OddSum(char str[])
{
    char s[MaxLen], buf[8];
    strcpy(s, str);
    int a = 0, buflen = 0, i = 0, j = 0;
    long sum = 0;
    int slen = strlen(s);
    while(i < slen)
    {
        sscanf(s, "%s", &buf);
        a = atoi(buf);
        sum += (a & 1) ? a : 0;
        for (j = i; j < strlen(buf) + i; ++j) s[j] = ' ';
        i = ++j;
    }
    return sum;
}
Собственно та еще бредятина))) с дичайшими издержками по времени исполнения и использованию памяти мне в универе преподы за такое голову бы снесли =) но зато со sscanf' ами)

Добавлено через 6 минут
А, стоп, там же не сумму а их число, ну тогда можно так:
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
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
#define MaxLen 1025
 
int OddNum(char s[]);
 
int main()
{
    char s[MaxLen];
    gets(s);
    long num = OddNum(s);
    printf("%d",num);
    return 0;
}
 
int OddNum(char str[])
{
    char s[MaxLen], buf[8];
    strcpy(s, str);
    int a = 0, buflen = 0, i = 0, j = 0;
    long num = 0;
    int slen = strlen(s);
    while(i < slen)
    {
        sscanf(s, "%s", &buf);
        a = atoi(buf);
        if (a & 1) ++num;
        for (j = i; j < strlen(buf) + i; ++j) s[j] = ' ';
        i = ++j;
    }
    return num;
}
только это выглядит еще абсурднее.
Кстати, Надя, а у тебя есть ася или хотя бы e-mail, с тобой можно познакомиться?

Добавлено через 29 минут
Цитата Сообщение от accept Посмотреть сообщение
для sscanf() обязательно нужен массив


они ничем не отличаются, просто берут данные из разных источников
(у sscanf() есть ограничение на перекрытие)
Я так думаю, что про массив имелось в виду, что нельзя парсить строку в массив стандартными срествами scanf/sscanf там кстати такое тоже есть. P.S. кому не нравится [] могут объявлять через указатель и работать с адресной арифметикой.
0
3 / 3 / 1
Регистрация: 08.10.2011
Сообщений: 73
05.11.2011, 14:26  [ТС]
Tpyn_CTpayca,
Tpyn_CTpayca, 555422511 5nadya_evd5@mail.ru
1
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
05.11.2011, 17:15
Цитата Сообщение от Tpyn_CTpayca
Я так думаю, что про массив имелось в виду, что нельзя парсить строку в массив стандартными срествами scanf/sscanf там кстати такое тоже есть.
Цитата Сообщение от nadyush-princes
нужно написать программу подсчета нечетных чисел последовательности, вводимой с клавиатуры, причем НЕ используя массив
скорее всего, ограничение относится к последовательности
чтобы её не сохраняли перед обработкой
0
0 / 0 / 0
Регистрация: 31.08.2011
Сообщений: 3
05.11.2011, 21:17
Как-то странно это все. Либо препод на кануне что-то не то курил, либо мы тут все поголовно обдолбанные, ну или как 3й вариант - эффект "испорченного телефона". Я просто не знаю ни одного рационального решения где тут можно прикрутит sscanf и "не использовать массив". Вообще я в таких случаях, если дана строка, всегда просто бегал по ней индексатором и выделял то, что требуется (кстати в данном случае я бы даже стал делать это задом наперед, чтобы не выполнять лишних операций над данными, которые под условие не попадают). P.S. а в каком универе так хорошо нынче учат, что студенты по таким пустякам на форум бегут?

Добавлено через 1 час 41 минуту
Полазал в интернетах, подумал, и мне кажется, что правильнее всего это делается так:
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>
#include <conio.h>
#include <stdlib.h>
#include <clocale>
 
int main()
{
    setlocale(LC_CTYPE, "Russian");
    int n = 0, c = 0, b = 0, f = 1;
    c = getche();
    while(c != 13)
    {
        if (c == 32) if (b & 1) ++n;
        b = c;
        c = getche();
    }
    if (b & 1) ++n;
    printf("Количество нечетных членов: %d\n", n);
    system("pause");
    return 0;
}
но тут нет ни scanf ни sscanf тем более =)))
то же самое можно реализовать с помощью ассемблера(великого

Не по теме:

и ужасного

), но там тоже нету сканэфов... Еще пытался сделать с помощью Си, запихивая символы строки обратно в буфер клавиатуры(ф-ия есть такая ungetch(), чтобы потом читать их scanf(!!! его же просят)) ))) но как выяснилось, что так scanf не обмануть. Вероятно подмену можно сделать тем же самым упомянутым ассемблером(но в системах до NT, тк в более поздних нельзя открыто писать в порты, хотя можно использовать WDF и написать свой dll, делающий это), такие дела. Вероятно нет других способов сделать требуемое с использованием одних лишь scanf, без массивов(!!!) и завершающего символа для числовой последовательности.

Добавлено через 14 минут
В 3м посте модератор предложил хороший вариант решения, но он с многострочным вводом через enter - это неинтересно.
0
3 / 3 / 1
Регистрация: 08.10.2011
Сообщений: 73
06.11.2011, 10:31  [ТС]
люди я уже давным давно написала))))))))))))
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
int main (int argc, char* argr[])
{
    int i,s,a;
    for (i=1; i<argc; i++)
    {
        sscanf (argr[i], "%d",&a);
        s+=a*(a%2);
    }
    printf ("Сумма нечетных чисел числовой последовательности равна %d\n",s);
    scanf("%d");
    return 0;
}
Вот это как должно выглядеть.... если я неправильно написала задание - простите)
0
0 / 0 / 0
Регистрация: 31.08.2011
Сообщений: 3
07.11.2011, 12:17
Ах вот оно что =)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.11.2011, 12:17
Помогаю со студенческими работами здесь

написать программу с функцией для вычисления суммы нечетных натуральных чисел
написать программу с функцией(!!!) для вычисления суммы нечетных натуральных чисел

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

Макрос для подсчета четных и нечетных чисел
Помогите с решением задачи: &quot;Создайте макрос для подсчёта количества чётных и нечётных чисел в целочисленном одномерном...

Написать программу, которая выводит таблицу квадратов n первых целых положительных нечетных чисел
Написать программу, которая выводит таблицу квадратов n первых целых положительных НЕЧЕТНЫХ чисел

Написать программу, которая находит сумму всех целых нечетных чисел в заданном диапазоне
Написать программу, которая находит сумму всех целых нечетных чисел в диапазоне, указанном пользователе. #include &lt;iostream&gt; ...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru