Страница 1 из 3

пожалуйста помогите с программами по С++

Добавлено: 21 дек 2004, 14:49
Keti
Пожалуйста,помогите мне решить задачки на C ++,нам задали 100 задачек,
надо решить за 7 дней,до 27-ого,времени вобрез.Эти задачи я не могу
решить:

1)Дано натуральное число N.Вычислить произведение N сомножителей:
1/2 * 7/8 * 13/14 * 19/20 * ...

2)Определить,встречается ли введенная цифра М среди первых трех
цифр дробной части заданного вещественного числа Р.

Среди N введенных чисел найти количество соседств положительных цифр.

3)Дана квадратная матрица размерности К<20.Найти сумму ее элементов,
находящихся на диагонали, "ортогональной" главной.

4)Дан вещественный массив A(N).Отсортировать его таким образом, чтобы
все положительные числа находились в начале,а отрицательные-в конце
массива и был сохранен исходный порядок следования элементов в обеих
группах.

Определить k-ю цифру последовательности 1234567891011121314...,в
которой выписаны подряд все натуральные числа.

6)Переформировать матрицу таким образом, чтобы ее столбцы распологались
по убыванию их поэлементных сумм.

Нати седловые точки матрицы (седловой точкой называется элемент,
являющийся минимальным в строке и максимальным в столбце).

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

7)Дан массив символьных строк. Если в командной строке не заданы аргументы,
распечатать все строки, а если задана опция -n- распечатать последние n строк.

Во введенном словеподсчитать количество различных пар букв. (Например,в слове
babacabacd 5 различных пар букв)

Зарание большое человеческое спасибо. :cry:

Добавлено: 22 дек 2004, 17:58
Kolinus
1)
double rez=1;
for(int i=0;i<n;i++)
{
rez*=(i*6+1)/(i*6+2);
}


2)
b- введенное число
m - введенная цифра
и то и другое читаешь как строку (символ)
int i;
for(i=0;i<strlen(b);i++)
{
if(b=='.')
break;
}
int lim= (strlen(b)-i > 3) ? i+3 : strlen(b);
for(;i<lim;i++)
{
if(b==m)
{
//prisutstvuet
}
}

4)
A - твой массив
n - его размерность
про 0 ничего не сказано - поэтому ниче не известно

double * pol,*otr;
int k=0,l=0;
pol= new double [n];
otr= new double [n];
for(int i=0;i<n;i++)
{
if(A>0)
pol[k++]=A;
else if(A<0)
pol[l++]=A;
}

for(int i=0;i<k;i++)
A=pol;
for(int i=k;i<k+l;i++)
A=otr[i-k];


PS вчера встречал НГ...

Добавлено: 23 дек 2004, 15:07
Keti
Kolinus, спасибо ты настоящий друг.Надо бы другме решать...

Добавлено: 07 окт 2005, 22:39
Lakomka
Мне тоже такую задачку решить надо, но почему-то этот код не срабатывает :cry: ругается на strlen, я его заменила на char, тогда прога стала ругаться на if(b==m)

Код: Выделить всё

2) 
b- введенное число 
m - введенная цифра 
и то и другое читаешь как строку (символ) 
int i; 
for(i=0;i<strlen(b);i++) 
{ 
if(b[i]=='.') 
break; 
} 
int lim= (strlen(b)-i > 3) ? i+3 : strlen(b); 
for(;i<lim;i++) 
{ 
if(b[i]==m) 
{ 
//prisutstvuet 
} 
} 

Добавлено: 10 окт 2005, 16:49
Kolinus
стрлен выисляет длину строки а чар - енто тип данных что на что ты поменяла я не понял посему помочь не могу
а если ругается на стрлен то скорее всего не указана библиотека

Добавлено: 10 окт 2005, 21:41
Lakomka
Вот полностью код... библиотеку подключаю, а все равно не работает :( может я в другом месте где-нить напортачила :roll:

Код: Выделить всё

#include <iostream>
using namespace std;
#include <stdio.h>
#include <windows.h>
#include <fstream.h>
#include <string.h>
#include <strstream.h>

void main ()
{
	
  char str[128];
  int m;
  float b;
  CharToOem("Введите значение b  ",str);cout<<str;cin>>b;
  CharToOem("Введите значение m  ",str);cout<<str;cin>>m;

int i; 
for(i=0;i<strlen(b);i++) 
{ 
if(b[i]=='.') 
break; 
} 
int lim= (strlen(b)-i > 3) ? i+3 : strlen(b); 
for(;i<lim;i++) 
{ 
if(b[i]==m) 
{ 
	cout << " m prisutstvuet " << m << endl;

} } }

Добавлено: 11 окт 2005, 13:20
Kolinus
конечно напортачила :)
внимательно читаем написанное
b- введенное число
m - введенная цифра
и то и другое читаешь как строку (символ)
ключевая строчка про строку :)
ты же читаешь как числа - то есть тебе надо дополнительно перегонять прочитанное число в строку, либо перобъяви b m

Добавлено: 11 окт 2005, 15:23
Lakomka
т.е. m и b объявить как char ? тогда == принимать компилятор не будет.. че-то я не понимаю :(
а с библиотеками у меня все нормально? а то strlen не признает тоже.

Добавлено: 11 окт 2005, 18:00
Kolinus
принимать будет.
какой средой \ версией компилятора пользуешься ?
char b[100], m;

Добавлено: 11 окт 2005, 21:29
Lakomka
у меня visual c++ 6.0