PDA

Просмотр полной версии : Задачи по C++ и Pascal


a1nt
15.12.2006, 16:35
Вот заметил, что уж очень много в ветке по кодингу появляется вопросов, связанных с решением задач.

И вот, покопавшись на винте, решил выложить решения, которые у меня уже были, надеюсь, пригодится!

Короче решил не мучить себя и вас и выложу все архивом. Бинарников в архиве нет. Но если нужны стучите.

_http://www.megaupload.com/ru/?d=HDHO4Q5K
Архив на меге

Содержание архива:
Графика
Инвертирование цветов
Конвертирование RGB->Grayscale
Фильтры: контур, размытие, резкость
Графы
Определение числа компонент связности
Поиск кратчайшего пути методом фронта волны
Путь минимального веса в нагруженном графе
Существование пути между 2 вершинами
Деревья
Модуль для работы
Массивы
Поиск: двоичный, линейный
Сортировка: от пузырька до шейкера
Матрицы
Модуль для работы
Строки
Алгоритм Бойера Мура
Алгоритм замены одной подстроки другой
Алгоритм последовательного поиска
Алгоритм Кнута Морриса и Пратта
Взятие подстроки
Структуры данных
Дек, Список, Стек

a1nt
15.12.2006, 17:13
Это приступы копипаста? Или ностальгии?
Все это у меня валялось давно. Часть этих исходников старше TP6 :)
Пора бы знать.
Если считаете нужным, у меня есть сайт (wiki), я туда выложу и исправляйте как считаете нужным, возможно, синтаксис и нужно изменить (я не вижу никаких ошибок :( ).

[Оффтоп]А можно в BBCode сделать так, чтобы тег [соdе] в итоге получался покороче, чтобы был маленький блок (по высоте) и его можно было прокручивать, а то топик читать неудобно[/Оффтоп]

a1nt
15.12.2006, 21:27
Решил все-таки выложить архивом

Metal
11.01.2007, 20:42
так кому там задачки по паскалю нужно зделать пишите !зделю задачу любой сложности с ассм вставками и прочим ГГ! :)

Oya
27.02.2007, 11:10
Вот заметил, что уж очень много в ветке по кодингу появляется вопросов, связанных с решением задач.

И вот, покопавшись на винте, решил выложить решения, которые у меня уже были, надеюсь, пригодится!

Короче решил не мучить себя и вас и выложу все архивом. Бинарников в архиве нет. Но если нужны стучите.

_http://www.megaupload.com/ru/?d=HDHO4Q5K
Архив на меге

Содержание архива:
Графика
Инвертирование цветов
Конвертирование RGB->Grayscale
Фильтры: контур, размытие, резкость
Графы
Определение числа компонент связности
Поиск кратчайшего пути методом фронта волны
Путь минимального веса в нагруженном графе
Существование пути между 2 вершинами
Деревья
Модуль для работы
Массивы
Поиск: двоичный, линейный
Сортировка: от пузырька до шейкера
Матрицы
Модуль для работы
Строки
Алгоритм Бойера Мура
Алгоритм замены одной подстроки другой
Алгоритм последовательного поиска
Алгоритм Кнута Морриса и Пратта
Взятие подстроки
Структуры данных
Дек, Список, Стек
А нельзя ли возобновить раздачу задач. Очень нужно, особенно про метод фронта волны.

BрxMSG
27.02.2007, 20:34
Кстати да, не помешало бы перезалить! Заранее спс

bxN5
28.02.2007, 03:55
Паскаль и делфи зло

MegaBits
14.03.2007, 23:53
Я вот тоже за С++ взялся, классный язык, до этого программировал на Паскале (точнее баловался писать сейчас программы на паскале это изврат).

ShadOS
15.03.2007, 00:12
Зачем вам это надо? Всё постоянно выкладывается на DVD журнала Xakep в раздел Шпаргалки. Вы хоть копирайты указывайте, охотники за репкой...

alextoun
15.03.2007, 00:13
1. Объявите переменные, необходимые для вычисления значения функции у = х2.
2. Объявите переменные, необходимые для пересчета веса из фунтов в килограммы.
3. Объявите переменные, необходимые для вычисления объема параллелепипеда.
4. Объявите переменные, необходимые для вычисления площади круга.
5. Объявите переменные, необходимые для вычисления площади кольца.
6. Объявите переменные, необходимые для вычисления объема и площади поверхности цилиндра.
7. Объявите переменные, необходимые для вычисления стоимости покупки, состоящей из нескольких тетрадей, карандашей и линейки.
8. Объявите переменные, необходимые для вычисления стоимости покупки, состоящей из нескольких тетрадей и такого же количества обложек.
9. Запишите инструкцию, которая присваивает переменной х значение —1,5.
10. Запишите инструкцию, которая присваивает переменной summa нулевое значение.
11. Запишите инструкцию, которая увеличивает на единицу значение переменной п.
12. Запишите инструкцию, которая уменьшает на два значение переменной counter.
13. Запишите инструкцию вычисления среднего арифметического переменных xi и х2.
16. Запишите в виде инструкции присваивания формулу пересчета веса из фунтов в килограммы (один фунт равен 409,5 г).
17. Запишите в виде инструкции присваивания формулу пересчета расстояния из километров в версты (одна верста равна 1066,8 м).
18. Запишите в виде инструкции присваивания формулу вычисления площади прямоугольника.

решения не для всех
Задача 1

х: real; { аргумент функции } у: real; { значение функции }

Задача 2

funt: real; { вес в фунтах }
kg: real; { вес в килограммах }


Задача 5

rl: real; { диаметр кольца } r2: real; { диаметр отверстия } s: real; { площадь кольца }

Задача 7

CenaTetr: real; {цена тетради }
KolTetr: integer; { количество тетрадей }
CenaKar: real; { цена карандаша }
KolKar: integer; { количество карандашей }
CenaLin: real; { цена линейки }
Suirana: real; { стоимость покупки }

Задача 11

п:=п+1;

Задача 14

у:=-2.7*х*х*х+0.23*х*х-1.4;

Задача 16

kg:=gunt*0.4095;
надыбал позже ещё кину

alextoun
15.03.2007, 00:17
По С++

1. Объявите переменные, необходимые для вычисления площади прямоугольника.
2. Объявите переменные, необходимые для пересчета веса из фунтов в килограммы.
3. Определите исходные данные и объявите переменные, необходимые для вычисления дохода по вкладу.
4. Объявите переменные, необходимые для вычисления площади круга.
5. Объявите переменные, необходимые для вычисления площади кольца.
6. Объявите переменные, необходимые для вычисления объема и площади поверхности цилиндра.
7. Объявите переменные, необходимые для вычисления стоимости покупки, состоящей из нескольких тетрадей, карандашей и линейки.
8. Объявите переменные, необходимые для вычисления стоимости покупки, состоящей из нескольких тетрадей и такого же количества обложек.
9. Запишите инструкцию, которая присваивает переменной х значение -1,5.
10. Запишите инструкцию, которая присваивает переменной summa нулевое значение.
11. Запишите инструкцию, которая увеличивает на единицу значение переменной п.
12. Запишите инструкцию, которая уменьшает на два значение переменной counter.
13. Запишите инструкцию вычисления среднего арифметического переменных x1 и х2.
14. Запишите в виде инструкции присваивания формулу вычисления значения функции у = -2,7х3+0,23х2-1,4.
15. Запишите инструкцию, которая увеличивает значение переменной х на величину, находящуюся в переменной dx.
16. Запишите в виде инструкции присваивания формулу пересчета веса из фунтов в килограммы (один фунт — это 405,9 грамма).
17. Запишите в виде инструкции присваивания формулу пересчета расстояния из километров в версты (одна верста — это 1066,8 м).
18. Запишите в виде инструкции присваивания формулу вычисления площади прямоугольника.

Решения

Задача 1

float a, b; // ширина и длина прямоугольника float s; // площадь прямоугольника

Задача 2

float funt; // вес в фунтах float kg; /7 вес в килограммах

Задача 3

float summa; // сумма вклада
int srok; // срок вклада (дней)
int stavka; // процентная ставка (годовых)
float dohod; // величина дохода

Задача 5

float rl, ri; // внешний радиус и радиус отверстия float s; // площадь коль ца

Задача 7

float CenaTetr; // цена тетради
int KolTetr; // количество тетрадей
float CenaKar; // цена карандаша
int KolKar; // количество карандашей
float CenaLin; //' цена линейки
float Summa; //' стоимость покупки

Задача 11

72 C/C++ в задачах и примерах

Задача 12

counter -= 2

Задача 14

у:=-2.7*х*х* х + 0.23*х*х - 1.4;

Задача 15

х += dx;

Задача 16

kg - funt*0. 4059;

какие то кривые учебники не все ответы

MegaBits
01.04.2007, 15:34
Может кто поможет или подскажет как реализовать на С++?

В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1) номер минимального элемента массива;
2) сумму элементов массива, расположенных между первым и вторым отрицательными элементами.
Преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 1, а потом — все остальные.

iv.
01.04.2007, 17:16
вот первую наструячил ;)
#include <stdio.h>
#include <conio.h>
#define N 6

void main(void)
{
float arr[N];
int i, min;

for (i = 0; i < N; i++)
{
printf("enter %d element: ", i);
scanf("%f", &arr[i]);
}
min = 0;
for (i = 0; i < (N - 1); i++)
if(arr[i+1] < arr[i]) min = i+1;
printf("min number: %d", min);
getch();
return;
}
ща если не лень будет остальные - помогу..

в общем далее некий псевдокод следует.
2) инициализация(так же)
циклом по массиву ищем отрицательные элементы, номера их запоминаем. далее цикл в пределах ранее запомненных номеров, в нем суммируем элементы.
3) тут вопрос, нужно ли сортировать? если нет, то элементарно, если да - почитай про сортировки.

а вообще задачи смешные =\ советую разобраться.

MegaBits
01.04.2007, 18:02
Нет сортировать не нужно, если не влом, напиши как с модулем разобраться. А с сортировкой у меня проблем нет.
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <iomanip>
#include <conio.h>
using namespace std;


int cmp(const void *a, const void *b) {
return *(int*)a - *(int*)b;
}
int main() {
int n, i;
int a[6]={2,-1,-7,3,5,6};
for(i = 0 ; i < 6; i++)
{
}
qsort(a, 6, sizeof(int), cmp );
for(i = 0 ; i < 6; i++)
{
cout << " " << a[i];
}
getch();
return 0;
}
С меня ++.

iv.
01.04.2007, 18:09
что именно не понятно?
вообще странный код..

fYt
01.04.2007, 18:14
[
#include <stdio.h>

int main()
{
int sum=0, i=0, j=0;
int MyArray[10]={ 12, -3, 23, 12, 6, 2, 34, -12, 3, 9};
int Num[2]={0,0};

for(;i<10;i++)
{
if(MyArray[i]<0)
{
Num[j]=i;
j++;
}
}

for(j=Num[0]+1;j<Num[1];j++)
{
sum+=MyArray[j];
printf("%d\n",MyArray[j]);
}

printf("%d",sum);

return 0;
}


Если правильно понял, то вот второй. Только тут ошибка целые числа...:) В третьем можно использовать функцию abs()(модуль числа вроде) в <math.h> и отсортировать потом пузырьковым методом.

sni4ok
01.04.2007, 19:02
Может кто поможет или подскажет как реализовать на С++?

В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1) номер минимального элемента массива;



#include <algorithm>
size_t GetIndexOfMinElement(const double* a, size_t n)
{
const double* min_elem = std::min_element(&a[0], &a[n]);
return min_elem - &a[0];
}



2) сумму элементов массива, расположенных между первым и вторым отрицательными элементами.



#include <algorithm>
#include <functional>
#include <numeric>

double GetSummFromFirstToSecondNeg(const double* a, size_t n)
{
const double* first_neg = std::find_if(&a[0], &a[n],
std::bind2nd(std::less<double>(), 0));

if(first_neg != &a[n]){
const double* second_neg = std::find_if(++first_neg, &a[n],
std::bind2nd(std::less<double>(), 0.0));
return std::accumulate(first_neg, second_neg, 0.0);
}
return 0.0;
}



Преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 1, а потом — все остальные.


#include <vector>
struct Choser : std::unary_function<double, bool>{
bool operator()(double a){
return a < -1.0 || a > 1.0;
}
};

void SpecialSort(double* a, size_t n)
{
std::vector<double> c;
std::remove_copy_if(&a[0],&a[n],std::back_inserter(c),Choser());
std::copy(&a[0], &a[n - c.size()], std::back_inserter(c));
std::copy(c.begin(),c.end(),&a[0]);
}

K1T
01.04.2007, 23:32
Может кто поможет или подскажет как реализовать на С++?

В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1) номер минимального элемента массива;
2) сумму элементов массива, расположенных между первым и вторым отрицательными элементами.
Преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 1, а потом — все остальные.

#include <stdio.h>
#include <math.h>
#include <alloc.h>
#include <conio.h>
int nomer(int N,int mas[]){ //funkciya naxogdeniya nomera minimalnogo
int min=mas[0],i;
int nomber=0;
for(i=0; i<N;i++)
if(min>mas[i]){min=mas[i]; nomber=i;}//tuta mi i naxodim minimum
return nomber;}
int summa(int N,int mas[]){ //funkciya naxogdeniya summa poebeni ))
int summa=0,i;
for(i=0; i<N;i++){ // tut ona i realizovana
if(mas[i]<0){
i++;
for(;i<N;i++){
// kak ona rabotaet dage ne sprashivai
if(mas[i]<0){break;} //va piwu pod pivom i granic moei fantazii net predelov...
summa+=mas[i];

}}}
return summa;}
void massiv(int N,int mas[]){ //eto funkciya toge 4e to delaet :)
int *mas2;
int b=0,i;
mas2=(int*)malloc(N*sizeof(int));

for(i=0; i<N;i++)
if(abs(mas[i])<=1){
mas2[b]=mas[i];
b++;}
for( i=0;i<N;i++)
if(abs(mas[i])>1){
mas2[b]=mas[i];
b++;
}
for(i=0;i<N;i++)
printf("mas[%d]=%d\t",i,mas2[i]);
}
void main(){
int N=0;
int *mas,i;

printf("vvedite kol-vo elementov v massive\n");
scanf("%d",&N);
mas=(int*)malloc(N*sizeof(int));
printf("vvedite elementi massiva\n");
for(i=0;i<N;i++)
scanf("%d",&mas[i]);
printf("Nomer minimalnogj=%d\n",nomer(N,mas));
printf("summa poebeni=%d\n", summa(N,mas));
massiv(N,mas);
getch();
}

MegaBits
02.04.2007, 00:07
Все всем спасибо!!!