Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Помогите с C++


Рекомендуемые сообщения

Подскажите как выполнить такую задачу на "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" в тексте.

Ссылка на комментарий
Поделиться на другие сайты

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 в другие слова как их часть не считаются.

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Не наказыйте парня, это я ему в ЛС посоветовал написать в тему "Помогите с С++", но не думал что он создаст новую :)

Тролль, вот мое решение задачи про матрицу, правда заполняю я ее случайными числами. Что скажешь по реализации ?

#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:

Ну ведь объясняли уже: не надо заводить новую тему, если можно присоединиться к старой. И тема "Помогите с 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 в другие слова как их часть не считаются.

Спасибо, что откликнулись и спасибо за помощь!

Это действительно мой первый форум, может я и сейчас не так что-то делаю,

но подсказать было некому.

Ссылка на комментарий
Поделиться на другие сайты

Архимаг:

Что скажешь по реализации ?
Все нормально. Только в функции сhange массив не нужен. В качестве diag вполне достаточно было бы простой переменной без индексов. Ну и выравнивать числа с помощью табуляции не очень хорошо - числа полагается выравнивать по правой границе, поэтому лучше использовать не знак табуляции, а width.
Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...