Тролль Опубликовано 6 декабря, 2009 Жалоба Поделиться Опубликовано 6 декабря, 2009 (изменено) volchok91: Используя алгоритм упорядочивания матрицы, разработан¬ный в лабораторной работе №1, разработать и протестировать две перегруженные функции, одна из которых обрабатывает це¬лочисленную матрицу, другая матрицу, элементы которой строки. #include<iostream.h>#include<iomanip.h>#include<string.h>using namespace std;int m,n; int a[100][50]; string b[100][50];void srt(int n, int m, int c[][50]){int t; for(int i=0;i<n;i++)for(int k=0;k<m-1;k++)for(int j=0;j<m-k-1;j++)if(c[i][j]>c[i][j+1]){t=c[i][j];c[i][j]=c[i][j+1];c[i][j+1]=t;}}void srt(int n, int m, string c[][50]){string t; for(int i=0;i<n;i++)for(int k=0;k<m-1;k++)for(int j=0;j<m-k-1;j++)if(c[i][j]>c[i][j+1]){t=c[i][j];c[i][j]=c[i][j+1];c[i][j+1]=t;}}main(){int i,j;cout<<"Dimensions ? "; cin>>n; cin>>m;cout<<"integers:"<<endl;for(i=0;i<n;i++){cout<<"Line "<<i+1<<" : "; for(j=0;j<m;j++)cin>>a[i][j];}srt(n,m,a);for(i=0;i<n;i++){cout<<endl; for(j=0;j<m;j++)cout<<setw(8)<<a[i][j];}cout<<endl<<endl;cout<<"strings (bis 8 symbols):"<<endl;for(i=0;i<n;i++){cout<<"Line "<<i+1<<" : "; for(j=0;j<m;j++)cin>>b[i][j];}srt(n,m,b);for(i=0;i<n;i++){cout<<endl; for(j=0;j<m;j++)cout<<left<<setw(8)<<b[i][j];}cout<<endl; getchar(); getchar();} Создать шаблон функции, выполняющей сортировку или поиск элементов массива. Протестировать шаблон для массивов с элементами различных типов, int, float и char. Сортировка простой (линейной) вставкой) #include <iostream.h> template <typename T>void sort(T* a, int s){ for(int j=1,i;j<s;++j) {T t=a[j]; for(i=j-1;i>=0&&a[i]>t;--i)a[i+1]=a[i];a[i+1]=t;}}main(){int ai[]={7,1,5,3,8,4}; int si=sizeof(ai)/sizeof(int); for(int i=0;i<si;++i)cout<<ai[i]<<' '; cout<<endl; sort(ai,si); for(int i=0;i<si;++i)cout<<ai[i]<<' '; cout<<endl<<endl;float af[]={7.7,1.1,5.5,3.3,8.8,4.4}; int sf=sizeof(af)/sizeof(float); for(int i=0;i<sf;++i)cout<<af[i]<<' '; cout<<endl; sort(af,sf); for(int i=0;i<sf;++i)cout<<af[i]<<' '; cout<<endl<<endl;char ac[]={'r','e','b','k','m','u'}; int sc=sizeof(ac)/sizeof(char); for(int i=0;i<sc;++i)cout<<ac[i]<<' '; cout<<endl; sort(ac,sc); for(int i=0;i<sc;++i)cout<<ac[i]<<' '; cout<<endl<<endl;getchar();} Изменено 6 декабря, 2009 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
volchok91 Опубликовано 7 декабря, 2009 Жалоба Поделиться Опубликовано 7 декабря, 2009 СПАСИБО!!! Ссылка на комментарий Поделиться на другие сайты Поделиться
Nikolai 45 Опубликовано 7 декабря, 2009 Жалоба Поделиться Опубликовано 7 декабря, 2009 СПАСИБО! Ссылка на комментарий Поделиться на другие сайты Поделиться
Bastr91 Опубликовано 7 декабря, 2009 Жалоба Поделиться Опубликовано 7 декабря, 2009 Здравствуйте помогите пожалуйста пожалуйста с лабораторными работами.За ранее огромное спасибо :sm(100): 1. Разработать программу, которая вводит целочисленную матрицу из n строк и m столбцов (1 <n<= 100, 1<m<=50) и упорядочивает элементы матрицы. Правило упорядочивания определяется вариантом. Вариант: Переместить в каждой строке все отрицательные элементы в начало строки, а неотрицательные - в конец. 2. Выполнить сортировку целочисленного массива (поиск в массиве) из n элементов. Алгоритм сортировки (поиска) оформить в виде функции Сортировка слиянием (метод фон Неймана). Ссылка на комментарий Поделиться на другие сайты Поделиться
Bastr91 Опубликовано 7 декабря, 2009 Жалоба Поделиться Опубликовано 7 декабря, 2009 Создать шаблон функции, выполняющей сортировку или поиск элементов массива. Протестировать шаблон для массивов с элементами различных типов- int, float и char Сортировка слиянием (метод фон Неймана). Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 7 декабря, 2009 Жалоба Поделиться Опубликовано 7 декабря, 2009 (изменено) Bastr91: Разработать программу, которая вводит целочисленную матрицу из n строк и m столбцов (1 <n<= 100, 1<m<=50) и упорядочивает элементы матрицы. Переместить в каждой строке все отрицательные элементы в начало строки, а неотрицательные - в конец. #include<iostream.h>#include<iomanip.h>main(){int i,j,k,m,n,t,a[100][50]; cout<<"Dimensions ? "; cin>>n>>m; for(i=0;i<n;i++){cout<<"Line "<<i+1<<" : "; for(j=0;j<m;j++)cin>>a[i][j];}for(k=0;k<n;k++)for(i=j=0;i<m;i++)if(a[k][i]<0){t=a[k][i];a[k][i]=a[k][j];a[k][j]=t;j++;}for(i=0;i<n;i++){cout<<endl; for(j=0;j<m;j++)cout<<setw(8)<<a[i][j];}cout<<endl; getchar(); getchar();} Выполнить сортировку целочисленного массива (поиск в массиве) из n элементов. Алгоритм сортировки (поиска) оформить в виде функции Сортировка слиянием (метод фон Неймана). #include<iostream.h>#include<iomanip.h>void merge(int *n, int *t, int l, int m, int r){ int i, le=m-1, ne=r-l+1, tp=l; while(l<=le&&m<=r)if(n[l]<=n[m])t[tp++]=n[l++]; else t[tp++]=n[m++]; while(l<=le)t[tp++]=n[l++]; while(m<=r)t[tp++]=n[m++]; for(i=0;i<=ne;i++)n[r--]=t[r];}void msort(int *n, int *t, int l, int r){ if(r>l){int m=(r+l)/2; msort(n,t,l,m); msort(n,t,m+1,r); merge(n,t,l,m+1,r);}}main(){int i,j,n,a[100],b[100]; cout<<"n ? "; cin>>n; cout<<"a ? "; for(i=0;i<n;i++)cin>>a[i];for(i=0;i<n;i++)cout<<setw(8)<<a[i]; cout<<endl; msort(a,b,0,n-1);for(i=0;i<n;i++)cout<<setw(8)<<a[i]; cout<<endl; getchar();getchar();} Создать шаблон функции, выполняющей сортировку или поиск элементов массива. Протестировать шаблон для массивов с элементами различных типов- int, float и char Сортировка слиянием (метод фон Неймана). #include <iostream.h> template<typename T>void merge(T *n, T *t, int l, int m, int r){ int i, le=m-1, ne=r-l+1, tp=l; while(l<=le&&m<=r)if(n[l]<=n[m])t[tp++]=n[l++]; else t[tp++]=n[m++]; while(l<=le)t[tp++]=n[l++]; while(m<=r)t[tp++]=n[m++]; for(i=0;i<=ne;i++)n[r--]=t[r];}template<typename T>void msort(T *n, T *t, int l, int r){ if(r>l){int m=(r+l)/2; msort(n,t,l,m); msort(n,t,m+1,r); merge(n,t,l,m+1,r);}}template<typename T>void out(T* a, int s){for(int i=0;i<s;++i)cout<<a[i]<<' '; cout<<endl<<endl;} main(){int ai[]={7,1,5,3,8,4},bi[sizeof(ai)/sizeof(int)]; int si=sizeof(ai)/sizeof(int); out(ai,si); msort(ai,bi,0,si-1); out(ai,si);float af[]={7.7,1.1,5.5,3.3,8.8,4.4},bf[sizeof(af)/sizeof(float)]; int sf=sizeof(af)/sizeof(float); out(af,sf); msort(af,bf,0,sf-1); out(af,sf); char ac[]={'r','e','b','k','m','u'},bc[sizeof(ac)/sizeof(char)]; int sc=sizeof(ac)/sizeof(char); out(ac,sc); msort(ac,bc,0,sc-1); out(ac,sc); getchar();} Изменено 7 декабря, 2009 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
B1GBEN Опубликовано 7 декабря, 2009 Жалоба Поделиться Опубликовано 7 декабря, 2009 Всем здрасти.Помогите с лабами пожалуйста. 1)Разработать программу, которая вводит целочисленную матрицу из n строк и m столбцов (1 <n<= 100, 1<m<=50) и упорядочивает элементы матрицы. Правило упорядочивания определяется вариантом. Правило упорядочивания матрицы: Упорядочить строки по возрастанию последних элементов строк 2)Выполнить сортировку целочисленного массива (поиск в массиве) из n элементов. Алгоритм сортировки (поиска) оформить в виде функции. Варианты заданий приведены в таблице Метод сортировки (поиска): Бинарный поиск 3)Используя алгоритм упорядочивания матрицы, разработанный в лабораторной работе №1(первый номер), разработать и протестировать две перегруженные функции, одна из которых обрабатывает целочисленную матрицу, другая матрицу, элементы которой строки 4)Создать шаблон функции, выполняющей сортировку или поиск элементов массива. Протестировать шаблон для массивов с элементами различных типов - int, short и char. ----------------------------------------------------------- заранее огромное спасибо. :sm(100): Ссылка на комментарий Поделиться на другие сайты Поделиться
Bastr91 Опубликовано 7 декабря, 2009 Жалоба Поделиться Опубликовано 7 декабря, 2009 Спасибо огромное!!!! Ссылка на комментарий Поделиться на другие сайты Поделиться
kir717 Опубликовано 7 декабря, 2009 Жалоба Поделиться Опубликовано 7 декабря, 2009 Привет всем, очень сильно нужна помощь с лабами, заранее огромедно пасибо! :) 1. Разработать программу, которая вводит целочисленную матрицу из n строк и m столбцов (1 <n<= 100, 1<m<=50) и упорядочивает элементы матрицы. Разместить все положительные элементы в верхней левой области матрицы (заполняя ими матрицу по строкам слева направо), а неположительные - в нижней правой области. 2. Выполнить сортировку целочисленного массива (поиск в массиве) из n элементов. Алгоритм сортировки (поиска) оформить в виде функции. Сортировка методом бинарной вставки без использования рабочего массива. 3. Создать шаблон функции, выполняющей сортировку или поиск элементов массива. Протестировать шаблон для массивов с элементами различных типов - int, float и char. Сортировка методом бинарной вставки без использования рабочего массива. 4. Используя алгоритм упорядочивания матрицы, разработанный в лабе №1, разработать и протестировать две перегруженные функции, одна из которых обрабатывает целочисленную матрицу, другая - вещественную матрицу. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 7 декабря, 2009 Жалоба Поделиться Опубликовано 7 декабря, 2009 (изменено) Ребята, а вам не кажется, что однотипные задания для всей группы делать как-то скучно? Для двоих сделано, вполне может служить, как говорят, болванками, тем более что все задания очень похожи. Теперь по образу и подобию сами давайте :). Изменено 7 декабря, 2009 пользователем Тролль 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Cameroon Опубликовано 8 декабря, 2009 Жалоба Поделиться Опубликовано 8 декабря, 2009 в программировании я совсем неумный. нужно подредактировать 2 программы на ТурбоПаскале (PascalABC): - в этой нужно задать последовательность автоматом (через randomize, на сколько я понял), вывести ее в строчку, а потом вывести отсортированную строку с нулями вначале и единицами в конце. program onemass23; {Последовательность состоит из нулей и единиц. Поставить вначало этой последовательности нули, а затем единицы.}uses crt;const n=6;var mas:array[byte] of real; i:byte; b:boolean; a:real;begin clrscr; for i:=1 to n do begin write('mas[',i,']='); readln(mas[i]) end; repeat b:=false; for i:=1 to n-1 do if mas[i]>mas[i+1] then begin b:=true; a:=mas[i]; mas[i]:=mas[i+1]; mas[i+1]:=a end until not(b); for i:=1 to n do write(mas[i]:4:0, ' '); readlnend. - эта программа работает неправильно, нужно ее исправить. program onemass17; {Пригодность детали оценивается по размеру В, который долженсоответствовать интервалу (А-дельта, А+дельта). Определить, имеются ли в партиииз N деталей бракованные. Если да, то подсчитать их количество, иначе выдатьотрицательный ответ.}const eps=0.01; {погрешность}var B:array[byte]of real; i,n,s:integer; a:real; p:boolean;begin p:=false; s:=0; write('Ввод колличества деталей: '); read(n); write('Ввод стандартного размера: '); read(a); for i:=1 to N do begin write('Ввод размера детали №',i,' = '); readln(B[i]); if (b[i]>(a-eps)) or (b[i]<(a+eps)) then begin p:=true; s:=s+1; end end; if p then writeln('Колличество бракованных деталей ',s) else writeln('Все детали без брака')end. Ссылка на комментарий Поделиться на другие сайты Поделиться
Mandarin91 Опубликовано 8 декабря, 2009 Жалоба Поделиться Опубликовано 8 декабря, 2009 буду весьма признателен, если сделаете следующее задание : Выполнить сортировку целочисленного массива (поиск в массиве) из n элементов. Алгоритм сортировки (поиска) оформить в виде функции. Сортировка простой (линейной) вставкой. :) заранее спасибо Ссылка на комментарий Поделиться на другие сайты Поделиться
SinSmile Опубликовано 8 декабря, 2009 Жалоба Поделиться Опубликовано 8 декабря, 2009 Здравствуйте, абсолютно не понимаю ничего в перегрузке функций, поэтому и обращаюсь, с++ знаю оч. плохо) , задание такое : "Используя алгоритм упорядочивания матрицы, разработанный в лабораторной работе №1, разработать и протестировать две перегруженные функции, одна из которых обрабатывает целочисленную матрицу, другая - вещественную матрицу " в первой лабе было все легко) код написал : #include<iostream.h>#include<stdio.h>#include<stdlib.h>int main(){int i,j,;int ar[3][2]; for (j = 0; j <= 1; j++){ for (i = 0; i <= 2; i++) { printf("Vvedite element ar[%d][%d]", i, j); cin>>ar[i][j]; }}printf("\n");for (i = 0; i <= 2; i++){ printf("\n"); for (j = 0; j <= 1; j++) printf("ar[%d][%d]=%d\t", i, j, ar[i][j]);}printf("\n");for (j = 0; j <= 1; j++) //собственно алгаритм тут { for (i = 0; i <= 2; i++) { if(ar[i][j] > ar[i+1][j]) { b = ar[i+1][j]; ar[i+1][j] = ar[i][j]; ar[i][j]=b; } } for (i = 0; i <= 2; i++) { printf("\n"); for (j = 0; j <= 1; j++) printf("ar[%d][%d]=%d\t", i, j, ar[i][j]); } system("PAUSE"); return 0; }} вот, сам сделать перегрузку не могу, прошу помочь) буду оч. благодарен) надеюсь это не трудно) Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 8 декабря, 2009 Жалоба Поделиться Опубликовано 8 декабря, 2009 (изменено) Cameroon: Печаль тут не в программировании, печаль в том, чтобы понять, чего от тебя хотят. в этой нужно задать последовательность автоматом (через randomize, на сколько я понял), вывести ее в строчку Ну и зачем тогда в первой програме что-то вводить с клавиатуры, кроме разве что длины последовательности? А сортировать ее, раз там только нули и единицы, и вовсе не надо - проще всего подсчитать количество нулей и единиц и заново заполнить ее сначала нулями, сколько их там было, а остаток - единицами. Да и хранить единицы и нули в виде вещественных чисел ни к чему - на каждый хватило бы и бита. Но задача учебная, будем для простоты хранить каждое число в отдельном байте и используем стандартный алгоритм сортировки - наверное, хотят так... :)program onemass23;var i,j,n:integer; a:array[1..1000]of byte; t:byte; beginwrite('How many? '); readln(n);randomize; for i:=1 to n do a[i]:=random(2);for i:=1 to n do write(a[i]:2); writeln;for i:=1 to n-1 do for j:=1 to n-i do if a[j]=1 then begin t:=a[j];a[j]:=a[j+1];a[j+1]:=t end;for i:=1 to n do write(a[i]:2); writeln; readlnend. Второй программе массив нужен, как первой сортировка рыбке зонтик, размер детали можно проверять сразу же после ввода и кроме счетчика дефектных деталей нам ничего не нужно, но опять же, вроде бы хотят, чтобы мы использовали массив, судя по названию программы... сделаем с массивом program onemass17; var a:array[1..1000]of real; s,d:real; i,m,n:integer;beginwrite('number: '); readln(n); write('size: '); readln(s); write('delta: '); readln(d);for i:=1 to n do begin write('s[',i,'] = '); readln(a[i]) end;m:=0; for i:=1 to n do if(a[i]<s-d)or(a[i]>s+d)then inc(m);if m<>0 then writeln('number of defects: ',m) else writeln('no defects'); readlnend. Подсказки при вводе и выводе на русский сам, если нужно, заменишь, мой Turbo Pascal, на котором опробовал, с русским языком не в ладах... Изменено 8 декабря, 2009 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 8 декабря, 2009 Жалоба Поделиться Опубликовано 8 декабря, 2009 Mandarin91: Посмотри, пожалуйста, посты 1270 и 1271 в этой теме. Пост 1285 тоже, возможно, окажется не лишним. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 8 декабря, 2009 Жалоба Поделиться Опубликовано 8 декабря, 2009 (изменено) SinSmile: Н-да, сам делал? C++ - один из самых сложных языков программирования, неясно, зачем вас ему учат. В первой задаче у тебя не совсем доделанная пузырьковая сортировка каждого столбца в матрице - если в задании действительно было упорядочить элементы каждого столбца матрицы (почти - потому что, во-первых, i не должно добираться до конца столбца, иначе элемент с индексом i+1 выйдет за его пределы, во-вторых, проход по каждому столбцу надо делать не один раз, как у тебя, а n-1 раз, то есть нужен еще один, "охватывающий" внутренний, цикл, иначе пузырек не всегда успеет всплыть). То есть эта часть for (i = 0; i <= 2; i++) { if(ar[i][j] > ar[i+1][j]) { b = ar[i+1][j]; ar[i+1][j] = ar[i][j]; ar[i][j]=b; } } должна выглядеть, например, так for(int k=0;k<2;k++) for(i=0;i<2;i++) if(ar[i][j]>ar[i+1][j]){b=ar[i+1][j]; ar[i+1][j]=ar[i][j]; ar[i][j]=b;} Можно было бы слегка ускорить тут алгоритм, но без усовершенствований он яснее. А коль сортировка сделана, сделать из нее две ничего не стоит. Перегруженные функуии - это функции, отличающиеся типами в списке аргументов или (и) его длиной. То есть ты пишешь две функции в одинаковыми названиями, только в одной однирм из аргументов является целочисленная матрица, а во второй вещественная, а для проверки заготавливаешь две матрицы - целую и вещественную и для каждой вызываешь эту функцию. И компилятор сам разберется, смотря по типу аргумента-матрицы, какой из двух вариантов функции вызывать - это и есть смысл использования перегруженных функций. А расписано это на примере в посте 1276 :) Изменено 8 декабря, 2009 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
SinSmile Опубликовано 8 декабря, 2009 Жалоба Поделиться Опубликовано 8 декабря, 2009 ну считай сам, алгоритм узнал на занятии, у парня похожий был. Ща воткну в оптимизацию которую ты предложил и к пятнице доделать попытаюсь) спасиба ) если че , еще отпишусь) Ссылка на комментарий Поделиться на другие сайты Поделиться
B1GBEN Опубликовано 9 декабря, 2009 Жалоба Поделиться Опубликовано 9 декабря, 2009 Троль,ну пожалуйста помоги завал в инсте.. не успеваю.. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 10 декабря, 2009 Жалоба Поделиться Опубликовано 10 декабря, 2009 (изменено) B1GBEN: Троль,ну пожалуйста помогизавал в инсте.. не успеваю.. У японцев есть поговорка "Дел и после смерти остается на три дня". 1)Разработать программу, которая вводит целочисленную матрицу из n строк и m столбцов (1 <n<= 100, 1<m<=50) и упорядочивает элементы матрицы. Правило упорядочивания определяется вариантом.Правило упорядочивания матрицы: Упорядочить строки по возрастанию последних элементов строк #include<iostream.h>#include<iomanip.h>main(){int i,j,k,m,n,t,a[100][50],b[50]; cout<<"Dimensions ? "; cin>>n>>m; for(i=0;i<n;i++){cout<<"Line "<<i+1<<" : "; for(j=0;j<m;j++)cin>>a[i][j];}for(i=0;i<n-1;i++)for(j=0;j<n-i-1;j++) if(a[j][m-1]>a[j+1][m-1])for(k=0;k<m;k++){t=a[j][k];a[j][k]=a[j+1][k];a[j+1][k]=t;}for(i=0;i<n;i++){cout<<endl; for(j=0;j<m;j++)cout<<setw(8)<<a[i][j];}cout<<endl; getchar(); getchar();} 2)Выполнить сортировку целочисленного массива (поиск в массиве) из n элементов. Алгоритм сортировки (поиска) оформить в виде функции. Варианты заданий приведены в таблицеМетод сортировки (поиска): Бинарный поиск #include<iostream.h>int binsearch(int s, int n,int *c){int h=0,f=0,m=0; while(n>0){h=n/2; m=f+h; if(s<c[m])n=h; else{f=m+1; n=n-h-1;}}return f;}main(){int n,s; cout<<"Size: "; cin>>n; cout<<"Search: "; cin>>s;int *c=new int[n]; for(int i=0;i<n;++i)c[i]=i; cout<<"Found index: "<<binsearch(s,n,c); cin.get(); cin.get();} 3)Используя алгоритм упорядочивания матрицы, разработанный в лабораторной работе №1(первый номер), разработать и протестировать две перегруженные функции, одна из которых обрабатывает целочисленную матрицу, другая матрицу, элементы которой строки #include<iostream.h>#include<iomanip.h>#include<string.h>using namespace std;int m,n; int a[100][50]; string b[100][50];void srt(int n, int m, int c[][50]){int t; for(int i=0;i<n-1;i++)for(int j=0;j<n-i-1;j++) if(c[j][m-1]>c[j+1][m-1])for(int k=0;k<m;k++){t=c[j][k];c[j][k]=c[j+1][k];c[j+1][k]=t;}}void srt(int n, int m, string c[][50]){string t; for(int i=0;i<n-1;i++)for(int j=0;j<n-i-1;j++) if(c[j][m-1]>c[j+1][m-1])for(int k=0;k<m;k++){t=c[j][k];c[j][k]=c[j+1][k];c[j+1][k]=t;}}main(){int i,j;cout<<"Dimensions ? "; cin>>n; cin>>m;cout<<"integers:"<<endl;for(i=0;i<n;i++){cout<<"Line "<<i+1<<" : "; for(j=0;j<m;j++)cin>>a[i][j];}srt(n,m,a);for(i=0;i<n;i++){cout<<endl; for(j=0;j<m;j++)cout<<setw(8)<<a[i][j];}cout<<endl<<endl;cout<<"strings (bis 8 symbols):"<<endl;for(i=0;i<n;i++){cout<<"Line "<<i+1<<" : "; for(j=0;j<m;j++)cin>>b[i][j];}srt(n,m,b);for(i=0;i<n;i++){cout<<endl; for(j=0;j<m;j++)cout<<left<<setw(8)<<b[i][j];}cout<<endl; getchar(); getchar();} 4)Создать шаблон функции, выполняющей сортировку или поиск элементов массива. Протестировать шаблон для массивов с элементами различных типов - int, short и char. #include<iostream.h> template<typename T>T binsearch(T s, int n, T *c){T h=0,f=0,m=0; while(n>0){h=n/2; m=f+h; if(s<c[m])n=h; else{f=m+1; n=n-h-1;}}return f;}main(){int n,i; int si; cout<<"Size: "; cin>>n; cout<<"Search: "; cin>>si; int *ci=new int[n]; for(i=0;i<n;++i)ci[i]=i; for(i=0;i<n;++i)cout<<ci[i]<<' '; cout<<endl; cout<<"Found index: "<<binsearch(si,n,ci); cout<<endl<<endl;short ss; cout<<"Size: "; cin>>n; cout<<"Search: "; cin>>ss; short *cs=new short[n]; for(i=0;i<n;++i)cs[i]=i; for(i=0;i<n;++i)cout<<cs[i]<<' '; cout<<endl; cout<<"Found index: "<<binsearch(ss,n,cs); cout<<endl<<endl;char sc; cout<<"Size: "; cin>>n; cout<<"Search: "; cin>>i; sc=i; char *cc=new char[n]; for(i=0;i<n;++i)cc[i]=i; for(i=0;i<n;++i)cout<<(int)cc[i]<<' '; cout<<endl; cout<<"Found index: "<<(int)binsearch(sc,n,cc); cout<<endl<<endl;cin.get(); cin.get();} Изменено 10 декабря, 2009 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
Nikolai 45 Опубликовано 10 декабря, 2009 Жалоба Поделиться Опубликовано 10 декабря, 2009 Помогите пожалуйсто написать программу на С++ Задание: Создать квадратную матрицу целых чисел размером 9х9. Заполнить матрицу ЛП, от левого верхнего угла по диагонали: влево - вниз. #include <stdio.h> #define S 9 int Ar; /* матрица */ int main(void) { short l, r; /* текущие индексы */ short r1,r2; /* граничные номера столбцов */ short dd; /* модификатор граничных номеров */ short k; /* текущий член ЛП */ /* начальные значения переменных */ r1=1; r2=S-2; dd=1; k=1; for (l=0; l<S; l++) { /* перебор строк */ for (r=0; r<S; r++) /* перебор столбцов */ Ar[l][r]=k++; /* конец перебора строк */ /* модификация границ */ r1+=dd; r2-=dd; /* уловие перехода в нижнюю часть */ if (r1>r2) dd=-dd; } /* конец перебора столбцов */ /* вывод матрицы */ for (l=0; l<S; l++) { for (r=0; r<S; r++) { printf("%3d",Ar[l][r]); } printf("\n"); } return 0; } Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 10 декабря, 2009 Жалоба Поделиться Опубликовано 10 декабря, 2009 Nikolai 45: Условие неясно. ЛП - это линейная последовательность? И что значит заполнить матрицу по диагонали - заполнить главную диагональ числами последовательности, а остальные элементы нулями? И для чего приведена программа? Ссылка на комментарий Поделиться на другие сайты Поделиться
core_st Опубликовано 10 декабря, 2009 Жалоба Поделиться Опубликовано 10 декабря, 2009 вопрос скорее с области математики. Как можно представить в с++ натуральньій логарифм? При использовании функции log результат - log:Domain Error Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 10 декабря, 2009 Жалоба Поделиться Опубликовано 10 декабря, 2009 core_st: Что-то с подключением математической библиотекм, вероятно. Программа #include<iostream.h>#include<math.h>main() {float a; cin>>a; cout<<log(a); getchar(); getchar();} работает без проблем. Ссылка на комментарий Поделиться на другие сайты Поделиться
core_st Опубликовано 10 декабря, 2009 Жалоба Поделиться Опубликовано 10 декабря, 2009 Попробую еще раз. Я понимаю что что-то с подключением библиотеки. Именно потому задаю вопрос: Как можно представить в с++ натуральньій логарифм? Без функции log в документации пишет что такая ошибка только при x=0. Но мои значения точно не нули :bye1: Ссылка на комментарий Поделиться на другие сайты Поделиться
}{0TTa6bI4 Опубликовано 10 декабря, 2009 Жалоба Поделиться Опубликовано 10 декабря, 2009 Здравствуйте, помогите пожалуйста с задачей, мне не под силу. Заранее спасибо. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти