Задачи по C++ и Pascal

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by a1nt, 15 Dec 2006.

  1. a1nt

    a1nt Elder - Старейшина

    Joined:
    16 Dec 2005
    Messages:
    131
    Likes Received:
    39
    Reputations:
    25
    Вот заметил, что уж очень много в ветке по кодингу появляется вопросов, связанных с решением задач.

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

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

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

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

    a1nt Elder - Старейшина

    Joined:
    16 Dec 2005
    Messages:
    131
    Likes Received:
    39
    Reputations:
    25
    Все это у меня валялось давно. Часть этих исходников старше TP6 :)
    Если считаете нужным, у меня есть сайт (wiki), я туда выложу и исправляйте как считаете нужным, возможно, синтаксис и нужно изменить (я не вижу никаких ошибок :( ).

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

    a1nt Elder - Старейшина

    Joined:
    16 Dec 2005
    Messages:
    131
    Likes Received:
    39
    Reputations:
    25
    Решил все-таки выложить архивом
     
  4. Metal

    Metal Banned

    Joined:
    6 Jan 2007
    Messages:
    14
    Likes Received:
    0
    Reputations:
    -4
    так кому там задачки по паскалю нужно зделать пишите !зделю задачу любой сложности с ассм вставками и прочим ГГ! :)
     
  5. Oya

    Oya New Member

    Joined:
    27 Feb 2007
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    А нельзя ли возобновить раздачу задач. Очень нужно, особенно про метод фронта волны.
     
  6. BрxMSG

    BрxMSG New Member

    Joined:
    19 Dec 2006
    Messages:
    5
    Likes Received:
    1
    Reputations:
    0
    Кстати да, не помешало бы перезалить! Заранее спс
     
  7. bxN5

    bxN5 Elder - Старейшина

    Joined:
    8 Jan 2006
    Messages:
    687
    Likes Received:
    138
    Reputations:
    32
    Паскаль и делфи зло
     
  8. MegaBits

    MegaBits Elder - Старейшина

    Joined:
    30 Aug 2006
    Messages:
    151
    Likes Received:
    24
    Reputations:
    10
    Я вот тоже за С++ взялся, классный язык, до этого программировал на Паскале (точнее баловался писать сейчас программы на паскале это изврат).
     
  9. ShadOS

    ShadOS ы

    Joined:
    11 Feb 2007
    Messages:
    667
    Likes Received:
    351
    Reputations:
    413
    Зачем вам это надо? Всё постоянно выкладывается на DVD журнала Xakep в раздел Шпаргалки. Вы хоть копирайты указывайте, охотники за репкой...
     
  10. alextoun

    alextoun Вылет с Трассы

    Joined:
    7 May 2006
    Messages:
    563
    Likes Received:
    216
    Reputations:
    96
    решения не для всех
    надыбал позже ещё кину
     
  11. alextoun

    alextoun Вылет с Трассы

    Joined:
    7 May 2006
    Messages:
    563
    Likes Received:
    216
    Reputations:
    96
    По С++

    Решения

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

    MegaBits Elder - Старейшина

    Joined:
    30 Aug 2006
    Messages:
    151
    Likes Received:
    24
    Reputations:
    10
    Может кто поможет или подскажет как реализовать на С++?

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

    iv. Elder - Старейшина

    Joined:
    21 Mar 2007
    Messages:
    1,183
    Likes Received:
    438
    Reputations:
    107
    вот первую наструячил ;)
    Code:
    #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) тут вопрос, нужно ли сортировать? если нет, то элементарно, если да - почитай про сортировки.

    а вообще задачи смешные =\ советую разобраться.
     
    #13 iv., 1 Apr 2007
    Last edited: 1 Apr 2007
    1 person likes this.
  14. MegaBits

    MegaBits Elder - Старейшина

    Joined:
    30 Aug 2006
    Messages:
    151
    Likes Received:
    24
    Reputations:
    10
    Нет сортировать не нужно, если не влом, напиши как с модулем разобраться. А с сортировкой у меня проблем нет.
    Code:
    #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;
    }
    С меня ++.
     
  15. iv.

    iv. Elder - Старейшина

    Joined:
    21 Mar 2007
    Messages:
    1,183
    Likes Received:
    438
    Reputations:
    107
    что именно не понятно?
    вообще странный код..
     
  16. fYt

    fYt Elder - Старейшина

    Joined:
    11 Jan 2007
    Messages:
    54
    Likes Received:
    36
    Reputations:
    7
    Code:
    [
    #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> и отсортировать потом пузырьковым методом.
     
    #16 fYt, 1 Apr 2007
    Last edited: 1 Apr 2007
    1 person likes this.
  17. sni4ok

    sni4ok Elder - Старейшина

    Joined:
    4 Nov 2006
    Messages:
    115
    Likes Received:
    37
    Reputations:
    12
    Code:
    #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];
    }
    
    Code:
    #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;
    }
    
    Code:
    #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]);
    }
    
    
     
    2 people like this.
  18. K1T

    K1T Elder - Старейшина

    Joined:
    15 Oct 2006
    Messages:
    30
    Likes Received:
    4
    Reputations:
    0
    #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){min=mas; 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<0){
    i++;
    for(;i<N;i++){
    // kak ona rabotaet dage ne sprashivai
    if(mas<0){break;} //va piwu pod pivom i granic moei fantazii net predelov...
    summa+=mas;

    }}}
    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)<=1){
    mas2=mas;
    b++;}
    for( i=0;i<N;i++)
    if(abs(mas)>1){
    mas2=mas;
    b++;
    }
    for(i=0;i<N;i++)
    printf("mas[%d]=%d\t",i,mas2);
    }
    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);
    printf("Nomer minimalnogj=%d\n",nomer(N,mas));
    printf("summa poebeni=%d\n", summa(N,mas));
    massiv(N,mas);
    getch();
    }
     
    #18 K1T, 1 Apr 2007
    Last edited: 2 Apr 2007
    1 person likes this.
  19. MegaBits

    MegaBits Elder - Старейшина

    Joined:
    30 Aug 2006
    Messages:
    151
    Likes Received:
    24
    Reputations:
    10
    Все всем спасибо!!!