Компьютерная Инженерия
Главная
Вход
Регистрация
Вторник, 2025-07-15, 11:43 PMПриветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Контрольная работа № 1 и № 2
Александр_МазурДата: Суббота, 2011-12-17, 0:37 AM | Сообщение # 16
Генерал-майор
Группа: Администраторы
Сообщений: 339
Репутация: 10
Статус: Offline
Code
#include <stdio.h>
unsigned sum(unsigned n) { return (n) ? n + sum(n-1) : 0;
}
int main (void){
unsigned n;

while ( printf ("number:"") && scanf ("%u", &n) ==1 )
printf ("Sum: %u\n", sum(n));

return 0;
}

Вроде так, но могу ошибаться..
 
Александр_ДабижаДата: Воскресенье, 2011-12-18, 0:19 AM | Сообщение # 17
Лейтенант
Группа: Администраторы
Сообщений: 79
Репутация: 1
Статус: Offline
Э-э-х.
Главное что бы не спросили как она работает smile .
Саша, спасибо.


http://www.solid-surface.com.ua/
 
Николай_ДанелюкДата: Воскресенье, 2011-12-18, 2:47 AM | Сообщение # 18
Майор
Группа: Администраторы
Сообщений: 86
Репутация: 6
Статус: Offline
Quote (Александр_Мазур)

Code
#include <stdio.h>
unsigned sum(unsigned n) { return (n) ? n + sum(n-1) : 0;
}
int main (void){
unsigned n;

while ( printf ("number:"") && scanf ("%u", &n) ==1 )
printf ("Sum: %u\n", sum(n));

return 0;
}



Саша я не вижу определения массива.
Никогда в С/С++ не определяется переменная ключевым словом unsigned. Это приставка к типу данных. конкретизация. Пример:
unsigned int n;
unsigned short n;

Конкретизация в данном случае - переменная может принимать только положительное значение. Читаем в документации по С/С++ основные типы данных =)
Александр_Дабижа, У меня вроде такое же задание, если не ошибаюсь, то 23. Завтра буду делать свой вариант и кидану сюда реализацию алгоритма.

И еще... определение массива в С/С++:

<тип> <имя>[<размерность>] = {размерность0, ..., размерность(N-1)};
где:

тип - тип данных в массиве;
имя - имя массива
размерность - количество элементов в массиве (N);
размерность0, ..., размерность(N-1) - первый, ..., последний элемент массива. Нумерация (адресация) массива в С/С++ начинается с нулевого индекса. Последний элемент индексируется как (размерность массива (кол-во элементов) - 1). Хочу заметить, что это статические массивы, размерность указывается на этапе компиляции, не во время выполнения программы.

в данном случае цикл перебора элементов массива для его заполнения выглядит так:

int N = <mass_size>;
int mass[N];

// Заполнение массива последовательными целыми числами: 1,2,3,4 и т.д.
for(int i = 0; i < N; i++)
{
mass[i] = i + 1;
}


_______________
ICQ: 387-883-476
 
Александр_МазурДата: Воскресенье, 2011-12-18, 1:27 PM | Сообщение # 19
Генерал-майор
Группа: Администраторы
Сообщений: 339
Репутация: 10
Статус: Offline
Quote
Вроде так, но могу ошибаться..

Еще не силен в си... но всему свое время=)
 
Николай_ДанелюкДата: Понедельник, 2011-12-19, 10:49 AM | Сообщение # 20
Майор
Группа: Администраторы
Сообщений: 86
Репутация: 6
Статус: Offline
#include <iostream>
#include <time.h>
#include <locale.h>

using namespace std;

// Прототип нашей функции:

int Summ(int *arr, int index);

int main()
{
srand(time(NULL));
setlocale(LC_ALL,"Russian");
int N;
cout << "Введите размерность массива (N). Только положительное число: ";
cin >> N;

// Инициализация динамического массива
int *mass = new int[N];
for(int i = 0; i < N; i++)
{
// Заполнение элементов массива псевдослучайными числами от 1 до 100:
mass[i] = 1 + rand()%100;
cout << "mass[" << i << "] = " << mass[i] <<endl;
}
// Первый вызов рекурсивной функции с параметрами 1 - массив (указатель на массив), 2 - индекс элемента массива (в данном случае индекс последнего)
cout << "Результат суммы элементов массива: " << Summ(mass, N - 1) << endl;
system("pause");
delete[] mass; // чистим за собой =)
return 0;
}
// Реализация нашей функции
int Summ(int *arr, int index)
{
if (index == 0)
{
return *arr;
}
else
return *(arr + index) + Summ(arr, index - 1);
}

Собственно функция складывает (суммирует) элементы массива между собой, начиная с последнего (arr[N-1]), заканчивая первым (arr[0]). В этом сорце используется динамический массив (куча), инициированный по указателю на него - размерность динамической памяти можно указать во время выполнения программы, а не на момент компиляции, как это происходит со статическими массивами


_______________
ICQ: 387-883-476
 
Александр_ДабижаДата: Среда, 2012-01-18, 10:10 AM | Сообщение # 21
Лейтенант
Группа: Администраторы
Сообщений: 79
Репутация: 1
Статус: Offline
Коля, спасибо!

http://www.solid-surface.com.ua/
 
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:


Copyright MyCorp © 2025Бесплатный конструктор сайтовuCoz