Rika23 Опубликовано 18 ноября, 2012 Жалоба Поделиться Опубликовано 18 ноября, 2012 (изменено) Помогите, пожалуйста. Никак не получается рекурсия на С++. Задача такая: Оформить в виде рекурсивной функции получение возрастающей последовательности путем удаления, начиная со второго, ненужных элементов. Массив вводится с консоли. Изменено 18 ноября, 2012 пользователем Rika23 Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 18 ноября, 2012 Жалоба Поделиться Опубликовано 18 ноября, 2012 (изменено) Rika23 #include<iostream>using namespace std;void del(int &n,int *a,int k=1){if(k<n){if(a[k]<=a[k-1]){for(int i=k+1;i<n;i++)a[i-1]=a[i];a[--n]=0;} else k++; del(n,a,k);}else return;}int main(){int n,*a; cout<<"length of array? "; cin>>n; a=new int[n];cout<<"elements of array? "; for(int i=0;i<n;i++)cin>>a[i];for(int i=0;i<n;i++)cout<<a[i]<<' '; cout<<endl; del(n,a);for(int i=0;i<n;i++)cout<<a[i]<<' '; cout<<endl; delete []a; cin.get();} P.S. Вообще-то else return; тут носит декоративный характер, можно просто выкинуть и программа будет работать по-прежнему, но для лучшей читаемости кода пусть остается... Изменено 18 ноября, 2012 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
Rika23 Опубликовано 19 ноября, 2012 Жалоба Поделиться Опубликовано 19 ноября, 2012 Большое спасибо, очень помогли :smile: Ссылка на комментарий Поделиться на другие сайты Поделиться
Атин Опубликовано 20 ноября, 2012 Жалоба Поделиться Опубликовано 20 ноября, 2012 Помогите пожалуйста, написать программу на паскале abc. Даны натуральное число n, символы s1,..., sn. Известно, что среди данных символов есть хотя бы один, отличный от пробела. Требуется преобразовать последовательность s1,..., sn следующим образом. Удалить группы пробелов, которыми начинается и которыми заканчивается последовательность, а так же заменить каждую внутреннюю группу пробелов одним пробелом. Если указанных групп нет в данной последовательности, то оставить последовательность без изменения. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 20 ноября, 2012 Жалоба Поделиться Опубликовано 20 ноября, 2012 Атин var s:string;beginwrite('string? '); readln(s); s:=' '+s+' ';while pos(' ',s)>0 do delete(s,pos(' ',s),1);delete(s,1,1); delete(s,length(s),1);write(s); readlnend. Ссылка на комментарий Поделиться на другие сайты Поделиться
Атин Опубликовано 20 ноября, 2012 Жалоба Поделиться Опубликовано 20 ноября, 2012 Спасибо! Все прекрасно работает :clap: Ссылка на комментарий Поделиться на другие сайты Поделиться
Wind327 Опубликовано 28 ноября, 2012 Жалоба Поделиться Опубликовано 28 ноября, 2012 Здравствуйте, помогите пожалуйста написать программу на си или с++. Задания для выполнения на ЭВМ имеют различные приоритеты, задаваемые цифрами от 1 до 5 (5-высший приоритет). Для каждого приоритета образуется отдельная очередь. Приоритет задания может меняться. При повышении приоритета задание помещается в конец другой очереди, а при понижении - в начало. Составить программу, обеспечивающую: 1) выдачу общей очереди; 2) выдачу очереди заданного приоритета; 3) перестройку очередей при изменении приоритета. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 28 ноября, 2012 Жалоба Поделиться Опубликовано 28 ноября, 2012 (изменено) Wind327 #include<iostream>#include<deque>using namespace std;int main(){deque<int> q[5]; deque<int>::iterator it; int p,n,m,k,ib,ie; bool b=true;do{ cout<<"0 - exit, 1 - input, 2 - output: "; cin>>k; switch(k){ case 1: cout<<"priority(1..5): "; cin>>p; cout<<"jobnumber : "; cin>>n; if(p<1||p>5)break; p--; cout<<endl; m=-1; for(int i=0;i<5;i++)for(it=q[i].begin();it!=q[i].end();++it) if(n==*it){q[i].erase(it); m=i; break;} if(p<m)q[p].push_front(n); else q[p].push_back(n); break; case 2:cout<<"priority(1..5 or 0 for all): "; cin>>p; if(p<0||p>5)break; p--; ib=0; ie=4; if(p!=-1)ib=ie=p; for(int i=ib;i<=ie;i++)for(it=q[i].begin();it!=q[i].end();++it)cout<<i+1<<' '<<*it<<endl; cout<<endl; break; default: b=false;} }while(b);} P.S. Пожалуй, есть смысл пояснить, что для изменения приоритета задания номер задания просто вводится снова с другим приоритетом. Изменено 28 ноября, 2012 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
Riki_Tiki_Tavi Опубликовано 28 ноября, 2012 Жалоба Поделиться Опубликовано 28 ноября, 2012 Напишите пожалуйста программу на любом языке(желательно Си или Delphi) К каждому слову в файле добавить через пробел слово перевод (через запрос к пользователю). Выходные данные: текстовый файл Taskname.txt каждая строка которого содержит только одно слово упорядоченное по алфавиту. Исходные данные: текстовый файл Taskname.txt содержит данные согласно заданию. Ссылка на комментарий Поделиться на другие сайты Поделиться
Wind327 Опубликовано 29 ноября, 2012 Жалоба Поделиться Опубликовано 29 ноября, 2012 Спасибо огромное, очень выручили! Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 29 ноября, 2012 Жалоба Поделиться Опубликовано 29 ноября, 2012 (изменено) Riki_Tiki_Tavi #include<stdio.h>#include<string.h>int main(){FILE *f; unsigned i=0,j,k,m;char fin[20]="Taskname.txt",fon[20]="Taskname.txt",s[1000][2][20],t[20];if(!(f=fopen(fin,"r"))){printf("\nThe program can not find the file \n"); return 1;}while(fscanf(f,"%s",s[i][0])!=EOF){printf("%s ? ",s[i][0]);scanf("%s",s[i][1]);i++;} fclose(f);for(j=1;j<i;j++)for(k=1;k<=i-j;k++)if(strcmp(s[k][0],s[k-1][0])<0)for(m=0;m<2;m++) {strcpy(t,s[k-1][m]); strcpy(s[k-1][m],s[k][m]); strcpy(s[k][m],t);}f=fopen(fon,"w"); for(j=0;j<i;j++)fprintf(f,"%s %s\n",s[j][0],s[j][1]); fclose(f); return 0;} Изменено 29 ноября, 2012 пользователем Тролль 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Riki_Tiki_Tavi Опубликовано 30 ноября, 2012 Жалоба Поделиться Опубликовано 30 ноября, 2012 Riki_Tiki_Tavi #include<stdio.h>#include<string.h>int main(){FILE *f; unsigned i=0,j,k,m;char fin[20]="Taskname.txt",fon[20]="Taskname.txt",s[1000][2][20],t[20];if(!(f=fopen(fin,"r"))){printf("\nThe program can not find the file \n"); return 1;}while(fscanf(f,"%s",s[i][0])!=EOF){printf("%s ? ",s[i][0]);scanf("%s",s[i][1]);i++;} fclose(f);for(j=1;j<i;j++)for(k=1;k<=i-j;k++)if(strcmp(s[k][0],s[k-1][0])<0)for(m=0;m<2;m++) {strcpy(t,s[k-1][m]); strcpy(s[k-1][m],s[k][m]); strcpy(s[k][m],t);}f=fopen(fon,"w"); for(j=0;j<i;j++)fprintf(f,"%s %s\n",s[j][0],s[j][1]); fclose(f); return 0;} За код огромное спасибо, но есть небольшая проблемка, с русским языком получаются иероглифы. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 30 ноября, 2012 Жалоба Поделиться Опубликовано 30 ноября, 2012 (изменено) Тогда попробуй с таким изменением: #include<stdio.h>#include<string.h>#include<locale.h>#include<windows.h>int main(){FILE *f; unsigned i=0,j,k,m;char fin[20]="Taskname.txt",fon[20]="Taskname.txt",s[1000][2][20],t[20];setlocale(LC_ALL,"Russian");if(!(f=fopen(fin,"r"))){printf("\nThe program can not find the file \n"); return 1;}while(fscanf(f,"%s",s[i][0])!=EOF){printf("%s ? ",s[i][0]);scanf("%s",s[i][1]);i++;} fclose(f);for(j=1;j<i;j++)for(k=1;k<=i-j;k++)if(strcmp(s[k][0],s[k-1][0])<0)for(m=0;m<2;m++) {strcpy(t,s[k-1][m]); strcpy(s[k-1][m],s[k][m]); strcpy(s[k][m],t);}f=fopen(fon,"w"); for(j=0;j<i;j++){OemToAnsi(s[j][1],s[j][1]); fprintf(f,"%s %s\n",s[j][0],s[j][1]);}fclose(f); return 0;} Изменено 30 ноября, 2012 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
Shadow TH Опубликовано 2 декабря, 2012 Жалоба Поделиться Опубликовано 2 декабря, 2012 (изменено) Недавно наткнулся в интернете на интересную задачу на C/C++: int i=8, a1, a2;for (a1=a2=1; i>2; a1=(a2+=a1)-a1) i--; Ответ в a2. Тот, кто выложил, сказал, что в универе она съела мозг ихнему преподу :) Изменено 2 декабря, 2012 пользователем Shadow TH Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 2 декабря, 2012 Жалоба Поделиться Опубликовано 2 декабря, 2012 C++ еще и не такое позволяет написать ;) Тут вычисление выражения в конце заголовка цикла будет сделано 6 раз, пока i не станет равным 2. Каждый раз при этом выполняется a1=(a2+=a1)-a1, то есть а2 увеличивается на а1, а а1 становится равным прежнему а2. Иначе говоря, из единицы делается 6 шагов последовательности Фибоначчи: 1 2 3 5 8 13 21. Получается 21. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Rika23 Опубликовано 2 декабря, 2012 Жалоба Поделиться Опубликовано 2 декабря, 2012 Здравствуйте. Не получается написать программу на С++ про бинарные файлы. Если можно, помогите пожалуйста. Вот условие: бинарные файлы.rtf бинарные файлы.rtf Ссылка на комментарий Поделиться на другие сайты Поделиться
Атин Опубликовано 3 декабря, 2012 Жалоба Поделиться Опубликовано 3 декабря, 2012 Помогите пожалуйста, написать программу на паскале abc. Дана действительная квадратная матрица порядка 10. в строках с отрицательным элементом на главной диагонали найти - наибольший из всех элементов. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 3 декабря, 2012 Жалоба Поделиться Опубликовано 3 декабря, 2012 (изменено) Атин const n=10;var a:array[1..n,1..n]of real; m:real; i,j:integer;beginfor i:=1 to n do begin writeLn('Введите ',n,' элементов ',i,'-й строки, разделяя их пробелами'); for j:=1 to n do read(a[i,j]); end;writeln;for i:=1 to n do begin for j:=1 to n do write(a[i,j]:7:1); writeln end;m:=-maxreal;for i:=1 to n do if a[i,i]<0 then for j:=1 to n do if a[i,j]>m then m:=a[i,j];writeln; writeln(m:0:1); readlnend. P.S. Для опробования лучше заменить значение n, скажем, на 3 вместо 10, чтобы не вводить сто значений. Изменено 3 декабря, 2012 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
Атин Опубликовано 4 декабря, 2012 Жалоба Поделиться Опубликовано 4 декабря, 2012 Спасибо! Все прекрасно работает ) Ссылка на комментарий Поделиться на другие сайты Поделиться
ka89 Опубликовано 8 декабря, 2012 Жалоба Поделиться Опубликовано 8 декабря, 2012 Доброго времени суток! Помогите пожалуйста с макросом для powerpoint на VBS. Сам вообще не разбираюсь в этом, на форуме тоже не нашел нужный мне вопрос. На слайде имеется около 10 квадратов с закругленными краями. Хотелось бы, чтобы после нажатия на квадрат происходил переход на заранее выбранный слайд, а сам квадрат исчезал, оставляя остальные квадраты в целости и сохранности, Для первой задачи планирую просто добавить гиперссылку, а вот второй - активировать через макрос. Офис 2010. Заранее благодарю за ответ. Ссылка на комментарий Поделиться на другие сайты Поделиться
Aнютка Опубликовано 9 декабря, 2012 Жалоба Поделиться Опубликовано 9 декабря, 2012 Всем приветик, помогите пожалуйста с задачкой, на паскале: Задачка.bmp Задачка.bmp Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 9 декабря, 2012 Жалоба Поделиться Опубликовано 9 декабря, 2012 (изменено) Анютка На плоскости задано n точек. Точки попарно соединены отрезками. Найти длину наибольшего отрезка. const nmax=100;var i,j,n:integer; b,d:real; a:array[1..2,1..nmax]of real;beginwrite('n? '); readln(n);for i:=1 to n do begin write('x',i,' y',i,' ? '); readln(a[1,i],a[2,i]) end;d:=0; for i:=1 to n-1 do for j:=i+1 to n do begin b:=sqr(a[1,i]-a[1,j])+sqr(a[2,i]-a[2,j]); if b>d then d:=b end;writeln(sqrt(d):0:4); readlnend. Изменено 9 декабря, 2012 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
Aнютка Опубликовано 11 декабря, 2012 Жалоба Поделиться Опубликовано 11 декабря, 2012 Большое СПА-СИ-БО!!! ) Ссылка на комментарий Поделиться на другие сайты Поделиться
Riki_Tiki_Tavi Опубликовано 13 декабря, 2012 Жалоба Поделиться Опубликовано 13 декабря, 2012 Напишите пожалуйста на С++: Создать текстовый файл, состоящий из одной строки и содержит слова, разделенные символом пропуска, знаки препинания не применять. Написать программу для подсчета количества слов в таком текстовом файле. Ссылка на комментарий Поделиться на другие сайты Поделиться
Riki_Tiki_Tavi Опубликовано 13 декабря, 2012 Жалоба Поделиться Опубликовано 13 декабря, 2012 Всем привет! Если у кого то есть, скиньте пожалуйста курсовую на тему "Игра Сапер". (Желательно С, С++ или Delphi). Заранее очень благодарен. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти