Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2008, 23:57   #11
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
Подмигивание

Тогда придется написать класс для работы с такими числами...
В этом классе они будут представлена в виде массива символов char*!
Ну и соответственно нужно будет написать нужные функции - сложение и умножение!!!
StarWorm вне форума Ответить с цитированием
Старый 22.11.2008, 03:42   #12
pupor
 
Регистрация: 21.11.2008
Сообщений: 6
По умолчанию

если n не влезет в int, то сумма не влезет никуда.
поэтому n можно смело объявлять как char.
pupor вне форума Ответить с цитированием
Старый 22.11.2008, 11:45   #13
Ламер_001
Ну и что? :)
Форумчанин
 
Регистрация: 20.10.2008
Сообщений: 129
По умолчанию

думаю тогда уж проще будет длинночисленную арифметику применять. но это уже задачи повышенной сложности) думаю для университетских лабораторных хватит и int (даже unsigned можно написать явно указывая что сумма положительная)
Учиться, учиться и еще раз учиться
Ламер_001 вне форума Ответить с цитированием
Старый 22.11.2008, 19:46   #14
Xeon332
Скоро сессия...
Форумчанин
 
Регистрация: 03.01.2008
Сообщений: 224
По умолчанию

вобщем определился с типом long, чтобы не заморачиваться!

вот такая вот задачка про числа Фибоначи:

Дано натуральное число n. Определить n-ое число Фибоначчи. Числа Фибоначчи определяются
формулами f1 = f2 = 1; fn = fn-1 + fn-2 при n = 3, 4, …, то есть два первых члена равны единице, а
каждый следующий член является суммой двух предыдущих.


не врублюсь как это условие запрограммировать....
рекурсивный метод в Pascale работает вот так:
Код:
uses crt;
Var
  n : integer;
  a : integer;
function fib(n: integer): integer;
 begin
       if n in [1..2] then fib:=1
      else
       fib:=fib(n-1)+fib(n-1)+fib(n-2);
    end;
begin
clrscr;
writeln('Vvedite chislo');
readln(n);
a:=fib(n);
writeln(a);
readkey;
end.
для C++ не получается его подкорректировать...
Xeon332 вне форума Ответить с цитированием
Старый 22.11.2008, 20:39   #15
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
Подмигивание

Вот тебе код... В нем две функции!!! Выбери ту, которая тебе привычнее!
Код:
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <iostream>

using std::cout;
using std::cin;

int fibana4i(int n)
{
	if(n<3)
		return 1;
	else
		return fibana4i(n-1)+fibana4i(n-2);
}

int fibana4i2(int n)
{
	return (n<3 ? 1 : fibana4i(n-1)+fibana4i(n-2));
}

int main()
{
	int n=7;
	int result;
	result = fibana4i(n);
	cout<<"Result of first function: "<<result<<"\n";
	result = fibana4i2(n);
	cout<<"Result of second function: "<<result<<"\n";
	
	getch();
	return 0;
}
Рекурсию главное понять!!!
StarWorm вне форума Ответить с цитированием
Старый 23.11.2008, 08:45   #16
Xeon332
Скоро сессия...
Форумчанин
 
Регистрация: 03.01.2008
Сообщений: 224
По умолчанию

Рекурсия сложная тема... Спасибо большое за код! всё таки Pascal и C++ работают по разному!)))
Xeon332 вне форума Ответить с цитированием
Старый 23.11.2008, 12:32   #17
Ламер_001
Ну и что? :)
Форумчанин
 
Регистрация: 20.10.2008
Сообщений: 129
По умолчанию

как код напишешь так и будут работать)
Учиться, учиться и еще раз учиться
Ламер_001 вне форума Ответить с цитированием
Старый 23.11.2008, 13:03   #18
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Я думаю вот такой код будет немного понятнее (взято из книги братьев Дейтелов "Как программировать на С++")
Код:
#iinclude <iostream>

using std::cout;
using std::cin;
using std::endl;

unsigned long fibonacci(unsigned long);

int main()
{
	unsigned long result, number;
	cout<<"Enter an integer\n";
	cin>>number;
	
	result=fibonacci(number);
	
	cout<<"Fibonacci number("<<number<<") = "<<result<<endl;
	return 0;
}

unsigned long fibonacci(unsigned long n)
{
	if(n==0 || n==1)
		return n;
	else
		return fibonacci(n-1)+fibonacci(n-2);
}
MaTBeu вне форума Ответить с цитированием
Старый 23.11.2008, 15:16   #19
Xeon332
Скоро сессия...
Форумчанин
 
Регистрация: 03.01.2008
Сообщений: 224
По умолчанию

для Pascal уже давно помню писал программу на вот такое задание:

Задав двумерный массив вещественных данных (матрицу А), реализовать его обработку, как указано в варианте. В программе должны быть предусмотрены процедуры ввода-вывода элементов массива А и его
обработки.
Найти характеристику каждой ее строки (сумму положительных четных элементов в каждой
строке).


код в Паскале вот так выглядел:

Код:
program matrica;
uses crt;
type matr=array[1..50,1..50] of integer;
var
  n,x,y: integer;
  a:matr;
  sum:integer;
Procedure summa (mas:matr;n:byte;var rez:integer);
begin
for x:=1 to n do
  begin
    rez:=0;
    for y:=1 to n do
      if (mas[x,y]>0) and (mas[x,y] mod 2=0) then
        begin
         rez:=rez+mas[x,y];
        end;
    writeln('sum v str',x,' = ',rez);
  end;
end;
begin
clrscr;
write('n=');
readln(n);
for x:=1 to n do
  begin
    for y:=1 to n do
      begin
        a[x,y]:=random(10)-2;
        write(a[x,y]:4);
      end;
    writeln;
  end;
summa(a,n,sum);
readkey;
end.
не могу отвыкнуть от паскаля, всё время думаю что изменяя обозначения и подстраивая их под C++ всё будет работать... а не так...(( подскажите как в C++ этот код переделать...
Xeon332 вне форума Ответить с цитированием
Старый 23.11.2008, 17:45   #20
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
По умолчанию

Хех... Вот:
Код:
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <time.h>

using std::cout;
using std::cin;

void fillArr(int** arr,int n)
{
	for(int i=0;i<n;i++)
		for(int j=0;j<n;j++)
			arr[i][j]=rand()%20-10;
}

void printArr(int** arr,int n)
{
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			cout.width(3);
			cout<<arr[i][j];
		}
		cout<<"\n";
	}
}

void sumStr(int** arr,int n)
{
	int summa=0;
	for(int i=0;i<n;i++)
	{
		summa=0;
		for(int j=0;j<n;j++)
			if(arr[i][j]>0 && arr[i][j]%2==0)
				summa+=arr[i][j];
		cout<<"\nSum of str #"<<i+1<<" = "<<summa;
	}
}

int main()
{
	srand(time(NULL));
	int n;
	cout<<"Enter dimension of array: ";
	cin>>n;
	int** arr=new int*[n];
	for(int i=0;i<n;i++)
		arr[i]=new int[n];
	fillArr(arr,n);
	printArr(arr,n);
	cout<<"\n\n";
	sumStr(arr,n);	
	
	for(int i=0;i<n;i++)
		delete [] arr[i];
	delete [] arr;
	
	getch();
	return 0;
}
StarWorm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с графикой на ассемблере под DOS AsmBeginer Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 31 11.12.2015 23:19
borland C++под DOS Xeon332 Помощь студентам 9 20.09.2008 20:50
DOS. .*bat файлы. их функции Xeon332 Помощь студентам 2 08.05.2008 14:46
Проблемы с русским шрифтом в TurboC++ 3.0 под DOS Project Общие вопросы C/C++ 1 27.03.2008 17:41