voin Опубликовано 13 ноября, 2009 Жалоба Поделиться Опубликовано 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" в тексте. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 13 ноября, 2009 Жалоба Поделиться Опубликовано 13 ноября, 2009 (изменено) 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 в другие слова как их часть не считаются. Изменено 13 ноября, 2009 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
Архимаг Опубликовано 13 ноября, 2009 Жалоба Поделиться Опубликовано 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;} Ссылка на комментарий Поделиться на другие сайты Поделиться
voin Опубликовано 13 ноября, 2009 Автор Жалоба Поделиться Опубликовано 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 в другие слова как их часть не считаются. Спасибо, что откликнулись и спасибо за помощь! Это действительно мой первый форум, может я и сейчас не так что-то делаю, но подсказать было некому. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 14 ноября, 2009 Жалоба Поделиться Опубликовано 14 ноября, 2009 Архимаг: Что скажешь по реализации ?Все нормально. Только в функции сhange массив не нужен. В качестве diag вполне достаточно было бы простой переменной без индексов. Ну и выравнивать числа с помощью табуляции не очень хорошо - числа полагается выравнивать по правой границе, поэтому лучше использовать не знак табуляции, а width. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти