Войти

Показать полную графическую версию : [решено] Помогите решить задачу по С++


Страниц : 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 15 16

Andir
01-11-2010, 12:48
Найти символ в строке help me

lxa85
01-11-2010, 13:11
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;
}

вот как бы написал програмку, но она почему-то не компилируется, в чем проблема, что не так составил?

Hector
02-11-2010, 01:21
а компилятор что говорит?

Profi_Boss
02-11-2010, 08:30
ничего, просто высвечивает мою надпись "ввести число k", я ввожу , он отображает это мое число, и все!

lxa85
02-11-2010, 08:44
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, но всеравно не хочет компилировать чего-то.

lxa85
02-11-2010, 09:23
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 так и без, думал он вводит бесконечный цикл, но нет, проблема в чем-то другом.

Drongo
02-11-2010, 12:43
не выходит, ввожу число какое-то, а оно мне выбивает бесконечно цифры "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.

belk94
03-11-2010, 01:33
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 версии и мне выбивает ошибки. В чём у меня проблема?

Drongo
03-11-2010, 13:09
static_cast<double>(1) -- что это значит конкретно, что мы сделали? »Операция приведения к типу double. 1 -- целое число, но само выражение "1 / ( n+1)" -- дробное же!? »Ну и что? Число-то целое.
зачем все время выводить? почему не удобней как я написал выводить "y" только тогда, когда он достигнет макс. значения при < k. »Ну, это я на момент тестирования сделал, а вы уж сделайте как вам удобнее. :)

Drongo
03-11-2010, 13:18
#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) в заданном пользователем диапазоне с заданным шагом.

как-то так, какие соображения у кого есть?

lxa85
05-11-2010, 12:16
какие соображения у кого есть? »
Соображение одно, отправить тебя учить тригонометрию. Прости уж за прямоту и откровенность.

Любезный
05-11-2010, 21:34
А что сложного? Запрашивай у пользователя начальное и конечное значение, шаг, а затем считай значения и выводи их.




© OSzone.net 2001-2012