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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.73
Seriks
7 / 0 / 1
Регистрация: 08.10.2012
Сообщений: 124
#1

Определить окончание существительного в зависимости от введенного количества - C++

30.10.2012, 21:09. Просмотров 2273. Ответов 14
Метки нет (Все метки)

Доброго времени суток. Прошу небольшей помощи с вашей стороны. Вот в чем суть
Задача: Для натурального числа К напечатать фразу "мы нашли К грибов в лесу", согласовав окончание слова "гриб" с числом К.
Ну как я понял окончание зависит от последней цифры 0-9 (0,5,6,7,8,9 - "грибов", 1 - гриб, 2,3,4 - гриба)
Теперь по сути, как записать что бы печаталась фраза "мы нашли К грибов в лесу" что б на месте К была та цифра которая вводится с клавиатуры + верное окончание (т.е сканировалось не все число , а только его последняя цифра)
Надеюсь на вашу помощь)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2012, 21:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить окончание существительного в зависимости от введенного количества (C++):

В зависимости от введенного числа изменить окончание у слова - C++
Программировать начал только 2 недели назад, поэтому опыта очень мало. Может кто поможет. Нужно написать программу, которая в...

В зависимости от введенного числа определить его тип и провести дальнейшие действия с ним - C++
Не знаю, правильно или нет выразился.... В общем, нужно ввести переменную(число), в зависимости от введенного числа определить его тип...

Подобрать окончание слова в зависимости от числительного, его описывающего - C++
Для натурального числа k напечатать фразу "мы нашли k грибов в лесу", согласовав окончание слова "гриб" с числом k.

Вывести слово в зависимости от введенного - C++
Нужно следующее: если я ввожу текст "yes", то он на экран выводит "good", если ввожу "no", то выводит "bad". Никак не получается - что бы я...

решить уравнение в зависимости от введенного Х (if else) - C++
требуется помощь в решении задачи. дано три уравнения и в зависимости от введенного Х нужно решить определенное уравнение. но...

Вывести приветствие в зависимости от введенного времени - C++
Составьте программу, которая выводит на экран различные приветствия в зависимости от введенного времени. Договоримся, что утро длится с 8...

14
David Sylva
1288 / 950 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
30.10.2012, 21:16 #2
Используй switch, case.
0
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
30.10.2012, 21:17 #3
Последняя цифра числа: a%10, где a - число.
1
Seriks
7 / 0 / 1
Регистрация: 08.10.2012
Сообщений: 124
30.10.2012, 21:27  [ТС] #4
Я понимаю что конечно через свитч и кейс)

Добавлено через 26 секунд
а как записать это в case? что б оно выбирало вариант окончания?..
0
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
30.10.2012, 21:51 #5
Типа такого:
C++
1
2
3
4
5
6
7
8
9
10
11
...
 switch(k%10)
 {
  case 0: case 5: case 6: case 7: case 8: case 9: std::cout<<"ov";
  break;
  case 1: cout<<"b";
  break;
  case 2: case 3: case 4: cout<<"a";
  break;
 }
...
Но если ввести, например, 313, то выйдет-то "гриба".
1
Seriks
7 / 0 / 1
Регистрация: 08.10.2012
Сообщений: 124
30.10.2012, 22:09  [ТС] #6
Эмм.. спасибо, только вопрос. Фразу про грибы писать перед свитч? и как там правильно его сдлеать...
0
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
30.10.2012, 22:23 #7
Да, перед:
C++
1
std::cout<<"Мы нашли "<<k;
и после свитча:
C++
1
std::cout<<" в лесу";
1
Seriks
7 / 0 / 1
Регистрация: 08.10.2012
Сообщений: 124
30.10.2012, 23:04  [ТС] #8
Возникла небольшая проблема при выполнении задачи: Задача: Для натурального числа К напечатать фразу "мы нашли К грибов в лесу", согласовав окончание слова "гриб" с числом К.
При запуске возникает ошибка error C2065: 'cout' : undeclared identifier . Хотя я включил библиотеки.. даже 2 для каут.. Вот код
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 <conio.h>
#include <process.h>
#include <iostream>
 
int main()
{
  char k;
 std::cout<<"Мы нашли "<<k;
 switch(k%10)
 {
  case 0: case 5: case 6: case 7: case 8: case 9: std::cout<<"грибов";
  break;
  case 1: cout<<"гриб";
  break;
  case 2: case 3: case 4: cout<<"грибa";
  break;
 }
 std::cout<<" в лесу";
  _getch () ;
 return 0;   
}
0
Евгений89
99 / 99 / 9
Регистрация: 17.04.2011
Сообщений: 554
Завершенные тесты: 2
30.10.2012, 23:07 #9
C++
1
2
using namespace std; объяви до мейна 
тогда не надо будет каждый раз std::cout и т.д писать и гетч убери
1
David Sylva
1288 / 950 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
30.10.2012, 23:16 #10
в 14 строке std::cout
0
Евгений89
99 / 99 / 9
Регистрация: 17.04.2011
Сообщений: 554
Завершенные тесты: 2
30.10.2012, 23:16 #11
вот так

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>
 using namespace std;
int main()
{
    setlocale(LC_ALL,"rus");
  char k;
  cout<<"введите к: ";
  cin>>k;
   cout<<"Мы нашли "<<k;
 switch(k%10)
 {
  case 0: case 5: case 6: case 7: case 8: case 9: cout<<"грибов";
  break;
  case 1: cout<<"гриб";
  break;
  case 2: case 3: case 4: cout<<"грибa";
  break;
 }
 
 cout<<" в лесу";
 return 0;   
}
1
lopata
5 / 5 / 0
Регистрация: 09.12.2009
Сообщений: 42
31.10.2012, 02:41 #12
Можешь попробывать такой вариант.
Окончание определяется в цикле, делем его на 10 пока не получим остаток от деления меньше 10.
Дальше думаю понятно.

Добавлено через 17 минут
проверіла - работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
    int k, d, ost;
    string str;
    cin >>k;
    
     while (k >= 10)
    { k= k % 10;
    
    }
    d = k;
    
    switch (d)
{
case 0 :case 5:case 6:case 7:case 8:case 9: str = "gribov";break;
case 1: str = "grib";break;
case 2:case 3: case 4: str = "griba";break;
}
0
I.M.
565 / 548 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
31.10.2012, 03:37 #13
Цитата Сообщение от lopata Посмотреть сообщение
while (k >= 10)
* * { k= k % 10;
}
Достаточно d = k % 10;
Переменную k лучше не менять, ведь в конце ее нужно выводить на печать
0
CheshireCat
Эксперт С++
2893 / 1242 / 78
Регистрация: 27.05.2008
Сообщений: 3,389
31.10.2012, 10:29 #14
Нужно еще корректно обработать число грибов более 10, но менее 20. Иначе получится
12
My nashli 12 griba v lesu.
0
Байт
Эксперт C
16344 / 10620 / 1590
Регистрация: 24.12.2010
Сообщений: 20,258
31.10.2012, 11:30 #15
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 static char *nokm[]={"", "а","ов" };
 
sklon(long dd)  /* Определение склонения числа */
{  int n,r;
 
    r = 2;
    n = dd % 100;
    if (n>4 && n<20) return(r);
    n = n % 10;
    if      (n==1)       r=0;
    else if (n>1 && n<5) r=1;
    return(r);
}
/**********/
  r = sklon(Kol);
  printf("Мы нашли %d гриб%s", Kol, nokm[r]);
Может вам еще и Kol словами написать?
А какой максимум? Миллиарда хватит?
2
31.10.2012, 11:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2012, 11:30
Привет! Вот еще темы с ответами:

Вычислитк F(X) в зависимости от введенного X, с точностью 3 знака вдробной части числа - C++
вычислитк F(X) в зависимости от введенного X, с точностью 3 знака вдробной части числа, использовать полную форму ветвления и вложенные...

Вывести на экран максимальную скорость транспорта в зависимости от введенного признака - C++
Дан признак транспорта а-автомобиль, в-велосипед, с-самолет, п-поезд, м-мотоцикл. Вывести на экран максимальную скорость транспорта в...

оператор switch (в зависимости от введенного значения, сообщить номер декады) - C++
5.2 Оператор switch 3. Написать программу, которая требует ввода числа месяца и, в зависимости от введенного значения, сообщает номер...

Вывести на экран сообщение в зависимости от введенного значения оценки (по десятибалльной системе) - C++
Вывести на экран сообщение в зависимости от введенного значения оценки (по десятибалльной системе), например: оценки 1, 2 - плохо, 3,...


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

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

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