Задачи на с++

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
Alex2008
Сообщения: 4
Зарегистрирован: 16 янв 2007, 19:56

Помогите мне пожалуйста решить 2 задачи:
1) Во введенном вещественном числе найти сумму первой, третьей и пятой цифры после запятой.
2)http://k.foto.radikal.ru/0701/ac15e3d079c4.jpg
Мы только начали проходить его, поэтому нельзя использовать функции. Можно только основы языка.
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

1. Взять целую часть, от нее взять остаток от деления на 10. Записать куда-нибудь
2. Умножить число на 100, повторить п.1.
3. Повторить п.2
4. Сложить числа, полученные в пп. 1-3
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Alex2008
Сообщения: 4
Зарегистрирован: 16 янв 2007, 19:56

#include <stdio.h>
#include <conio.h>
#include <math.h>

void main()
{
long a,b,s,c;
double n,g;

clrscr();
printf("Vvedute n: ");
scanf("%lf",&n);
s=n;
n=n-s;
a=(long)(n*10)%10;
b=(long)(n*1000)%10;

c=(long)(n*100000)%10;
printf("1 Cifpa = %ld\n3 Cifpa = %ld\n5 Cifpa = %ld",a,b,c);
s=a+b+c;
printf( "\n%ld",s);
getch();
}


Ну вот, как я делаю, почти всегда правильно считает. Но при вводе , допустим числа 0.876543, вместо пятой цифры - 4, он выводит 3. Кто знает как тут исправить???
Vibon
Сообщения: 3
Зарегистрирован: 17 янв 2007, 16:21

Я написал вот это, работает отлично:

#include <iostream>

using namespace std;

void main()
{
double a;
int s = 0;
cin>>a;
int b;
for(int i=100000; i>=10; i/=100)
{
b = (int)(a * i);
s += b - ((int)(b/10))*10;
}
cout<<s<<"\n";
}
Vibon
Сообщения: 3
Зарегистрирован: 17 янв 2007, 16:21

Вторя задача как мне кажется решается так:

#include <iostream>
#include <math.h>

using namespace std;

void main()
{
const double precision = 0.0005;
double y1=0, y2=0, y3=0, y1_prev=0;
int f = 0;

do
{
y1_prev = y1;
y3 = sqrt(23+2*y1);
y2 = sqrt(23+2*y3);
y1 = sqrt(23-2*y2);
}while(abs(y1_prev - y1) > precision);

cout<<y1<<"\n\n";
}
Alex2008
Сообщения: 4
Зарегистрирован: 16 янв 2007, 19:56

А можно как-нибудь более простым языком, мне просто даже не зачтут такую задачу. Я даже еще понятия не имею, что означают: using namespace std; #include <iostream> cout cin.
Vibon
Сообщения: 3
Зарегистрирован: 17 янв 2007, 16:21

#include "stdio.h"
#include "conio.h"


void main()
{
double a=0;
int s = 0;
//cin>>a; аналогично
scanf("%lg", &a);
int b;
for(int i=100000; i>=10; i/=100)
{
b = (int)(a * i);
s += b - ((int)(b/10))*10;
}
//cout<<s<<"\n"; аналогично
printf("%i", s);
}

using namespace std --- необходим (хотя и работает без него в данной прге) если прога пишется в Microsoft Visual Studio 2005 в остальных можно не писать.
Что касается #include <iostream> это библиотьека для работы cout и cin
Ответить