Показать полную графическую версию : [решено] Помогите решить задачу по С++
Страниц :
1
2
3
4
5
6
[
7]
8
9
10
11
12
13
14
15
16
Найти символ в строке help me
Andir, посимвольно сравнить элемент строки с заданным. В процессе прибавлять счетчик.
Ну или поискать процедуру делающую, по сути, тоже самое.
Profi_Boss
02-11-2010, 00:45
Найти наибольшую сумму чисел ряда 1;1/2;1/3;…1/n, не превышающую заданное число k.
#include "stdafx.h"
#include <iostream>
using namespace std;
int main () {
int y = 0;
int n = 0;
int k;
cout << " Vvedite chislo k "<< endl;
cin >> k;
do { int c = 1/( n+1);
y +=c;
n ++;
if ( y >= k) {
y -= c;
cout << y << endl;
}
}
while ( y < k);
system ("pause");
return 0;
}
вот как бы написал програмку, но она почему-то не компилируется, в чем проблема, что не так составил?
а компилятор что говорит?
Profi_Boss
02-11-2010, 08:30
ничего, просто высвечивает мою надпись "ввести число k", я ввожу , он отображает это мое число, и все!
Profi_Boss, а с дробными(вещественными) числами работать не пробовали?
Profi_Boss
02-11-2010, 09:13
аахх, точно...
int main () {
float y = 0;
int n = 0;
int k;
cout << " Vvedite chislo k "<< endl;
cin >> k;
do { float c = 1/( n+1);
y +=c;
n ++;
if ( y >= k) {
y -= c;
cout << y << endl;
}
}
while ( y < k);
system ("pause");
return 0;
}
ну изменил с типа int на float, но всеравно не хочет компилировать чего-то.
Profi_Boss, введи для проверки вывод y на каждой итерации цикла. И посмотри что будет. Может она все правильно считает? (честно говоря в математике еще не копался) Повводи разные значения k.
do { float c = 1/( n+1);
cout << y << endl;
y +=c;
n ++;
if ( y >= k) {
y -= c;
}
}
while ( y < k);
Profi_Boss
02-11-2010, 09:34
не выходит, ввожу число какое-то, а оно мне выбивает бесконечно цифры "1", причем любое число ввожу.
пробовал как с оператором if так и без, думал он вводит бесконечный цикл, но нет, проблема в чем-то другом.
не выходит, ввожу число какое-то, а оно мне выбивает бесконечно цифры "1", причем любое число ввожу.
пробовал как с оператором if так и без, думал он вводит бесконечный цикл, но нет, проблема в чем-то другом. »Хехе, верно. Проблема в другом. :)
У тебя единица является целым числом.
...
float c = 1 / ( n+1);
...»
...
double c = static_cast<double>(1) / ( n + 1);
...
#include <iostream>
using namespace std;
int main () {
double y = 0;
int n = 0;
int k;
cout << " Vvedite chislo k = ";
cin >> k;
do{
double c = static_cast<double>(1) / ( n + 1);
cout << "Y = " << y << endl; // Информативный вывод...
cout << "K = " << k << endl; // Информативный вывод...
cout << endl;
y += c;
n++;
if(y >= k){
y -= c;
}
}
while(y < k);
system ("pause");
return 0;
}Правда цикл никогда не завершается
Profi_Boss
03-11-2010, 00:10
непонятно:
double c = static_cast<double>(1) / ( n + 1);
static_cast<double>(1) -- что это значит конкретно, что мы сделали? 1 -- целое число, но само выражение "1 / ( n+1)" -- дробное же!? может просто взять его еще в одни скобки?
cout << "Y = " << y << endl; // Информативный вывод...
cout << "K = " << k << endl; // Информативный вывод... зачем все время выводить? почему не удобней как я написал выводить "y" только тогда, когда он достигнет макс. значения при < k.
if ( y >= k) {
y -= c;
cout << y << endl;
break; // наверно надо вставить его так, чтоб цикл всетаки завершился :)
}
вообщем так)
Mercenary13
03-11-2010, 00:59
Организовать цикл, который принимает целые числа с клавиатуры и суммирует каждое второе из них. Окончание цикла - ввод 0.
int a, sum=0;
do
{
scanf("%i",&a);
if(a!=0)
{
scanf("%i",&a);
sum+=a;
}
} while(a!=0)
Mercenary13
03-11-2010, 09:03
Большое спасибо, но на какой версии эта программа написана? Я пробую её проверить на 6 версии и мне выбивает ошибки. В чём у меня проблема?
static_cast<double>(1) -- что это значит конкретно, что мы сделали? »Операция приведения к типу double. 1 -- целое число, но само выражение "1 / ( n+1)" -- дробное же!? »Ну и что? Число-то целое.
зачем все время выводить? почему не удобней как я написал выводить "y" только тогда, когда он достигнет макс. значения при < k. »Ну, это я на момент тестирования сделал, а вы уж сделайте как вам удобнее. :)
#include <iostream>
using namespace std;
int main ()
{
int num, count = 0, summa = 0;
cout << " Enter Number, [Stop - '0'] = ";
cin >> num;
while(num != 0){
count++;
if(count % 2 == 0)
summa += num;
cout << " Enter Number, [Stop - '0'] = ";
cin >> num;
}
cout << "Result Summa = " << summa << endl;
cin >> num;
return 0;
}
Profi_Boss
03-11-2010, 18:10
Drongo
понял, доисправил,все работает)
Profi_Boss
05-11-2010, 00:22
Вывести ряд значений функции y = sin (x) в заданном пользователем диапазоне с заданным шагом.
как-то так, какие соображения у кого есть?
какие соображения у кого есть? »
Соображение одно, отправить тебя учить тригонометрию. Прости уж за прямоту и откровенность.
Любезный
05-11-2010, 21:34
А что сложного? Запрашивай у пользователя начальное и конечное значение, шаг, а затем считай значения и выводи их.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.