voin Posted November 13, 2009 Report Share Posted November 13, 2009 Подскажите как выполнить такую задачу на "Borland C++ for DOS" Извините что много, но сам никак не могу и помочь некому! 1. нахождения корня уравнения методом половинного деления 2x2-5x+3 = 0. 2. Составить программу, в которой - организовать ввод матрицы размера nxn из целых чисел; - вычислить минимальный элемент побочной диагонали; - поменять местами элементы второго столбца и побочной диагонали; - организовать вывод матрицы в виде отдельной функции исходная матрица 2 1 2 -1 5 6 1 3 4 -2 3 1 6 9 8 -2 результат 2 -1 2 1 5 1 6 3 4 -2 3 1 9 6 8 -2 3.Составить программу, в которой: организовать ввод строки текста; определить количество букв "d" в тексте; подсчитать количество слов "the" в тексте. Link to comment Share on other sites More sharing options...
Тролль Posted November 13, 2009 Report Share Posted November 13, 2009 (edited) voin: Ну ведь объясняли уже: не надо заводить новую тему, если можно присоединиться к старой. И тема "Помогите с C++" есть, и "Заказы "Сделайте все за меня"". Надо не создавать новую тему с тем же названием, а дописать свои вопросы в конец старой... Ну, ладно, займемся нашими баранами :) . 1. нахождения корня уравнения методом половинного деления 2x2-5x+3 = 0 #include <iostream.h>const double e=1e-6;double f(double x){return 2*x*x-5*x+3;}main(){double a,b,c; cout<<"a b ? "; cin>>a; cin>>b;while(b-a>e){c=(a+b)/2; if(f(b)*f©<0)a=c; else b=c;}cout<<c<<endl; getchar(); getchar();} Вообще-то уравнение квадратное, решается в уме, корни 1 и 1,5. Для метода половинного деления надо вводить границы интервала, в котором лежит корень, тогда метод сможет его уточнить. Тут два корня. Поэтому для одного надо вводить в качестве начального интервала для поиска корня, к примеру, 0 и 1.2, для второго - 1.2 и 2. 2. Составить программу, в которой- организовать ввод матрицы размера nxn из целых чисел; - вычислить минимальный элемент побочной диагонали; - поменять местами элементы второго столбца и побочной диагонали; - организовать вывод матрицы в виде отдельной функции #include <iostream.h>int a[20][20]; void outm(int n) {for(int i=0;i<n;i++){cout<<endl; for(int j=0;j<n;j++){cout.width(8);cout<<a[i][j];}}}main(){int i,j,m,k,n;cout<<endl<<"N? "; cin>>n; for(i=0;i<n;i++)for(j=0;j<n;j++)cin>>a[i][j];outm(n); cout<<endl<<endl;m=a[0][n-1]; for(i=0;i<n;i++)if(a[i][n-i-1]<m)m=a[i][n-i-1]; for(i=0;i<n;i++){k=a[i][n-i-1]; a[i][n-i-1]=a[i][1]; a[i][1]=k;}cout<<"min in the antidiagonal ="<<m<<endl;if(n>1)outm(n); cout<<endl; getchar(); getchar(); } Насколько я понял, пример в задаче только тестовый. При вводе матрицы удобнее всего вводить в каждой строке ввода через пробелы числа очередной строки матрицы. 3.Составить программу, в которой:организовать ввод строки текста; определить количество букв "d" в тексте; подсчитать количество слов "the" в тексте. #include <iostream.h>main(){char s[200]; int k=0,m=0;cout<<endl<<"String? "; cin.getline(s,200); for(int i=0;s[i];i++)k+=s[i]=='d'; for(int i=2;s[i];i++) m+=(i!=2?s[i-3]<'@':true)&&s[i-2]=='t'&&s[i-1]=='h'&&s[i]=='e'&&s[i+1]<'@';cout<<k<<endl<<m<<endl; getchar(); } В программе учитывается, что the должны быть словами, а не просто последовательностями символов, поэтому вхождения the в другие слова как их часть не считаются. Edited November 13, 2009 by Тролль Link to comment Share on other sites More sharing options...
Архимаг Posted November 13, 2009 Report Share Posted November 13, 2009 Не наказыйте парня, это я ему в ЛС посоветовал написать в тему "Помогите с С++", но не думал что он создаст новую :) Тролль, вот мое решение задачи про матрицу, правда заполняю я ее случайными числами. Что скажешь по реализации ? #include <cstdlib>#include <iostream>using namespace std;void write_matrix(int ** matrix, int n){for(int i=0;i<n;i++)for(int j=0;j<n;j++)matrix[i][j]=rand()%201-100;}void print_matrix(int ** matrix, int n){for(int i=0;i<n;i++) {for(int j=0;j<n;j++) {cout<<matrix[i][j]<<"\t"; }cout << endl; }}int min_el(int **matrix, int n){ int min=matrix[0][n-1]; for(int i=0; i<n; i++) if(min>matrix[i++][n-i-1]) min=matrix[i++][n-i-1]; return min;} void change(int **matrix, int n){int *diag=new int [n];for(int i=0; i<n; i++) { diag[i]=matrix[i][n-1-i]; matrix[i][n-1-i]=matrix[i][1]; matrix[i][1]=diag[i]; }delete[]diag;}int main(){srand(time(NULL));int n;cout << "Enter n: "; cin >> n;int **matrix = new int *[n];for(int i=0; i<n; i++)matrix[i]=new int[n];write_matrix(matrix,n);print_matrix(matrix,n);int min;min=min_el(matrix,n);cout << endl << min << endl;change(matrix,n);print_matrix(matrix,n);system("PAUSE");return EXIT_SUCCESS;} Link to comment Share on other sites More sharing options...
voin Posted November 13, 2009 Author Report Share Posted November 13, 2009 voin: Ну ведь объясняли уже: не надо заводить новую тему, если можно присоединиться к старой. И тема "Помогите с C++" есть, и "Заказы "Сделайте все за меня"". Надо не создавать новую тему с тем же названием, а дописать свои вопросы в конец старой... Ну, ладно, займемся нашими баранами :) . #include <iostream.h>const double e=1e-6;double f(double x){return 2*x*x-5*x+3;}main(){double a,b,c; cout<<"a b ? "; cin>>a; cin>>b;while(b-a>e){c=(a+b)/2; if(f(b)*f©<0)a=c; else b=c;}cout<<c<<endl; getchar(); getchar();} Вообще-то уравнение квадратное, решается в уме, корни 1 и 1,5. Для метода половинного деления надо вводить границы интервала, в котором лежит корень, тогда метод сможет его уточнить. Тут два корня. Поэтому для одного надо вводить в качестве начального интервала для поиска корня, к примеру, 0 и 1.2, для второго - 1.2 и 2. #include <iostream.h>int a[20][20]; void outm(int n) {for(int i=0;i<n;i++){cout<<endl; for(int j=0;j<n;j++){cout.width(8);cout<<a[i][j];}}}main(){int i,j,m,k,n;cout<<endl<<"N? "; cin>>n; for(i=0;i<n;i++)for(j=0;j<n;j++)cin>>a[i][j];outm(n); cout<<endl<<endl;m=a[0][n-1]; for(i=0;i<n;i++)if(a[i][n-i-1]<m)m=a[i][n-i-1]; for(i=0;i<n;i++){k=a[i][n-i-1]; a[i][n-i-1]=a[i][1]; a[i][1]=k;}cout<<"min in the antidiagonal ="<<m<<endl;if(n>1)outm(n); cout<<endl; getchar(); getchar(); } Насколько я понял, пример в задаче только тестовый. При вводе матрицы удобнее всего вводить в каждой строке ввода через пробелы числа очередной строки матрицы. #include <iostream.h>main(){char s[200]; int k=0,m=0;cout<<endl<<"String? "; cin.getline(s,200); for(int i=0;s[i];i++)k+=s[i]=='d'; for(int i=2;s[i];i++) m+=(i!=2?s[i-3]<'@':true)&&s[i-2]=='t'&&s[i-1]=='h'&&s[i]=='e'&&s[i+1]<'@';cout<<k<<endl<<m<<endl; getchar(); } В программе учитывается, что the должны быть словами, а не просто последовательностями символов, поэтому вхождения the в другие слова как их часть не считаются. Спасибо, что откликнулись и спасибо за помощь! Это действительно мой первый форум, может я и сейчас не так что-то делаю, но подсказать было некому. Link to comment Share on other sites More sharing options...
Тролль Posted November 14, 2009 Report Share Posted November 14, 2009 Архимаг: Что скажешь по реализации ?Все нормально. Только в функции сhange массив не нужен. В качестве diag вполне достаточно было бы простой переменной без индексов. Ну и выравнивать числа с помощью табуляции не очень хорошо - числа полагается выравнивать по правой границе, поэтому лучше использовать не знак табуляции, а width. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now