Данный способ основан на использовании двух дополнительных матриц - одна хранит положительные значения из входного массива, а вторая отрицательные. При данном способе можно было бы обойтись и без входного массива, но в ТВОЕМ задании сказано... Короче вот: Code: # include <cstdio> # include <cstdlib> # include <iostream> using namespace std; int main(){ cout<<"Введите количество элементов в матрице: "; int n=1; //переменная хранящая количество элементов в марице cin>>n; double mas1[n];//главный массив double masOtr[n];//массив для хранения отрицательных значений double masPol[n];//массив для хранения положительных значений int pol=0,otr=0;//переменные для хранения количества положительных и отрицательных элементов for (int i=0;i<n;i++){//начало цикла заполняющего массивы cout<<"Вводится элемент №"<<i<<" "; cin>>mas1[i];//заполняем основной массив if (mas1[i]<0) {masOtr[otr]=mas1[i];otr++;} else {masPol[pol]=mas1[i];pol++;}; //выбираем положительные и отрицательные числа }; //конец цикла заполняющего массивы cout<<"\nСодержание матрицы до изменения\n"; for (int i=0;i<n;i++){ cout<<mas1[i]<<endl; //выводим содержание массива до сортировки } otr=0; for (int i=0;i<n;i++){//начало сортировки массива if (i<pol) {mas1[i]=masPol[i];} else {mas1[i]=masOtr[otr];otr++;}; //собственно сортировка массива //отрицательные числа сортируются после всех }//конец сортировки массива cout<<"\nСодержание матрицы после фильтрации\n"; for (int i=0;i<n;i++){ cout<<mas1[i]<<endl; //вывод содержания массива после сортировки } system ("pause");//пауза для того чтобы посмотреть результат return 0; } P.S. Обращаюсь к знающим античатовцам: мои познания в C++ весьма скудны и поэтому прошу тех кто знает посмотреть на данный код и оптимизировать его и/или предложить более рациональный способ (мне самому уже интересны варианты решения данной задачи).
Дорогие античатовцы, я учу С++ и мне задают лабораторки с задачами по задачнику, автор - С. А. Абраамов. Я бы не сказал что я непонимаю в програмировании, но в етих задачах очень трудно понять что от програмиста хотят Так вот ктонибудь сталкивался с етим задачником? Преподаватель молчит, говорит студент должен сам все находить и учить, вот например такая задача: "Даны натуральные числа k, m, n, символы s1,...,sk,t1,...,tm, u1...,un. Получить по одному разу те символы, которые входят одновременно во все три последовательности" И как такое решать ?
WALKMAN, у тебя три массива. Сравниваешь элементы этих массивов между собой, например: Code: if(s[1] == t[5] && s[1] == u[2]) printf("Bingo!"); з.ы. А препод хороший, правильные вещи говорит
Меня смущает сам вопрос: "получить по одному разу те символы, которые входят одновременно во все три последовательности." Сильно замысловатый, ну при этом я понял что есть три различных по длине символьных массива и требуеться сравнить между собою все их елементы, но что вывести в результате??? "получить по одному разу те символы, которые входят одновременно во все три последовательности."
Пример: abcdfega bndada aba Символ "a" входит во все 3 последовательности 2 раза, тебе нужно его вывести только один раз. Код: PHP: #include <iostream> #include <vector> #include <list> using namespace std; int main() { vector<int> s(3); vector<int> t(4); vector<int> u(5); list <int> res; for (int i = 0; i < s.size(); i++) for(int j = 0; j < t.size(); j++) for(int k = 0; k < u.size(); k++) if(s[i] == t[j] == u[k]) res.push_back(s[i]); res.unique(); for(list<int>::const_iterator it = res.begin(); it != res.end(); it++) cout << *it << "\n"; cin.get(); return 0; }
Выводишь номер элемента и его значение. Example: Code: for(i = 1; i < k; i++) { for(j = 1; j < m; j++) { for(o = 1; o < n; o++) { if(s[i] == t[j] && s[i] == u[o]) printf("s[%d] = t[%d] = u[%d] = %d\n", i, j, o, s[i]); } } }
С заданием справился, правда была проблемма с выводом самого символа: Code: printf("s[%d] = t[%d] = u[%d] = %d\n", i, j, o, s[i]); Символ выодился в "циферном" формате. Весь текст программы получился такой: Code: #include <stdio.h> #include <string.h> #include <iostream.h> int main () { char s[1000], t[1000], u[1000]; int i, j, o; printf ("Vvedite stroku s: \n"); gets(s); printf ("Vvedite stroku t: \n"); gets(t); printf ("Vvedite stroku u: \n"); gets(u); for(i = 0; i < strlen(s); i++) { for(j = 0; j < strlen(t); j++) { for(o = 0; o < strlen(u); o++) { if(s[i] == t[j] && s[i] == u[o]) {printf("s[%d] = t[%d] = u[%d] =", i, j, o); cout<<s[i]<<endl;} } } } getch (); return 0; } п. с. А задачи всеравно непонятные
Привет всем, нужна помощ с лабораторной работой по С++... за помощ поставлю +++ Задание: Дана целочисленная квадратная матрица. Определить: 1. максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы; 2. произведение элементов в тех строках, которые не содержат отрицательных элементов. Сделать нужно динамическим масивом. Вот коечто пытался сделать: Code: #include<iostream.h> #include<iomanip.h> void main() { int a[3][3],i,j; for(i=0;i<3;i++) { for(j=0;j<3;j++) { cout<<"a["<<i<<","<<j<<"]="; cin>>a[i][j]; } } for(i=0;i<3;i++) { for(j=0;j<3;j++) { cout<<setw(3)<<a[i][j]; cout<<endl; } } } Это только ввод и вывод матрицы, а вот как порешать два задание и тем более выделить под это всё память незнаю...
Привет всем, нужна помощ по С++ : Нужен алгоритм, который переводит число из десятичной системы в двоичную и наоборот. Проблема в том, что в двоичном коде надо произвести операции, поэтому типы везде должны быть Integer.
вроде так: Code: int res = 1; for(i = 0; i < 3; i++) { for(j = 0; j < 3; j++) { if(A[i][j] >= 0) { res =res*A[i][j]; str = i; } else break; } } А вот с первым заданием хз...я забыл что такое главная диагональ Это та, которая слева направо или наоборот? =) Если первое, то вот это: Code: max = A[0][0]; for(i = 0; i < M; i++) { for(j = 0; j < M; j++) { if(i != j && j>i) { res += A[i][j]; max = res; break; } } } суммирует(должна ) элементы диагонали, лежащей сверху главной
Помогите пожалуйста решить лабу на С++: Условие: Ввести строку с клавиатуры. Проверить является ли она вещественным числом.
возникла небольшая проблема надо побитово перемножить 2 числа (тоесть в двоичной системе) и перевести обратно
Составить блок-схему алгоритма и программу ввода и обработки текста из нескольких предложений согласно заданию. При этом считать, что число предложений и число строк могут не совпадать, каждое слово находится целиком в одной строке, ввод строки завершается нажатием клавиши ENTER, точка – конец предло-жения.Найти слово, которое встречается в каждом предложении. Если таких слов нет, то вывести соответствующее сообщение