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

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

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

Keti
Сообщения: 5
Зарегистрирован: 15 ноя 2004, 19:13
Откуда: Surgut

21 дек 2004, 14:49

Пожалуйста,помогите мне решить задачки на 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:
Kolinus
Сообщения: 449
Зарегистрирован: 23 авг 2004, 14:02
Откуда: Минск

22 дек 2004, 17:58

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 вчера встречал НГ...
В SAD - все в SAD.
Keti
Сообщения: 5
Зарегистрирован: 15 ноя 2004, 19:13
Откуда: Surgut

23 дек 2004, 15:07

Kolinus, спасибо ты настоящий друг.Надо бы другме решать...
Lakomka
Сообщения: 14
Зарегистрирован: 06 окт 2005, 11:05

07 окт 2005, 22:39

Мне тоже такую задачку решить надо, но почему-то этот код не срабатывает :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 
} 
} 
Kolinus
Сообщения: 449
Зарегистрирован: 23 авг 2004, 14:02
Откуда: Минск

10 окт 2005, 16:49

стрлен выисляет длину строки а чар - енто тип данных что на что ты поменяла я не понял посему помочь не могу
а если ругается на стрлен то скорее всего не указана библиотека
В SAD - все в SAD.
Lakomka
Сообщения: 14
Зарегистрирован: 06 окт 2005, 11:05

10 окт 2005, 21:41

Вот полностью код... библиотеку подключаю, а все равно не работает :( может я в другом месте где-нить напортачила :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;

} } }
Kolinus
Сообщения: 449
Зарегистрирован: 23 авг 2004, 14:02
Откуда: Минск

11 окт 2005, 13:20

конечно напортачила :)
внимательно читаем написанное
b- введенное число
m - введенная цифра
и то и другое читаешь как строку (символ)
ключевая строчка про строку :)
ты же читаешь как числа - то есть тебе надо дополнительно перегонять прочитанное число в строку, либо перобъяви b m
В SAD - все в SAD.
Lakomka
Сообщения: 14
Зарегистрирован: 06 окт 2005, 11:05

11 окт 2005, 15:23

т.е. m и b объявить как char ? тогда == принимать компилятор не будет.. че-то я не понимаю :(
а с библиотеками у меня все нормально? а то strlen не признает тоже.
Kolinus
Сообщения: 449
Зарегистрирован: 23 авг 2004, 14:02
Откуда: Минск

11 окт 2005, 18:00

принимать будет.
какой средой \ версией компилятора пользуешься ?
char b[100], m;
В SAD - все в SAD.
Lakomka
Сообщения: 14
Зарегистрирован: 06 окт 2005, 11:05

11 окт 2005, 21:29

у меня visual c++ 6.0
Ответить