Code: #include <cstdio> #include <cstring> struct Ss{ int arr[4]; int a; Ss *operator*(Ss &s) { int n[4]; int l = 0; for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { if (this->arr[i] == s.arr[j]) { n[l++] = arr[i]; } } } //---------------- Ss *nobj = new Ss; for (int i = 0; i < 4; i++) { nobj->arr[i] = n[i]; } return nobj; //--------------- } void print(void) { printf("arr:"); for (int i = 0; i < 4; i++) { printf("%d,", this->arr[i]); } printf("\nvar:%d\n", this->a); } }; int main(void) { Ss A = {{1,2,3,4}, 0}; Ss B = {{3,4,6,7}, 0}; Ss *C = (A*B); C->print(); } Code: результат: [b]arr:3,4,0,0,[/b] Тот же код, немножко переделанный. Но это так сказать - простое решение этой задачи, можно было бы сделать и подругому, но времени мало, как всегда). Насчет циклов и константних размеров поля и т.д., надеюсь сам разберешься. После операции A*B возврашается указательно на новый объект, такого же типа. Поэтому, когда новый объект будет не нужен не забудь освободить память с помощью delete C; (в нашем случаи).
Вводит человек, программа выводит на дисплей. Вот наработка есть, закомментирована вторая часть задания уже решенная правда с костылем из за невозможности корректного преобразования c-char* в int. dropbox main.cpp Так что проблема только с определением флага наличия числа повторно в массиве. Напоминаю задание: Написать программу, которая вводит с клавиатуры массив из N вещественных чисел, создаёт новый массив, в который помещает элементы исходного массива, игнорируя при этом повторяющиеся, и выводит результат пользователю; затем вводит с клавиатуры строку длиной не более 6 символов, проверяет, что строка содержит число, выводит пользователю сумму цифр и сообщает, является ли эта сумма нечётным числом.
Задание из гл.4 Страуструп... Надо написать программу, считывающую одно число double за один проход. За проход цикла, выводить на экран одно введенное число. Если оно окажется наименьшим из ранее введенных - выводить на экран сообщение, что оно Наименьшее из введенных. Если наибольшим - выводить на экран сообщение, что оно Наибольшее из введенных. Советуют определить две переменные, чтобы определить, какое из чисел имеет наименьшее, а какое - наибольшее значение, среди ранее введенных. Что то у меня ни фига не получается... Наименьшее значение выводится относительно нуля ((( Заранее признателен Всем кто откликнется... Code: #include"std_lib_facilities.h" #include<locale> int main() { setlocale(LC_ALL,""); cout << "Введите числа типа double: " << endl; double val; double minV = 0; double maxV = 0; vector<double> vals; while(cin >> val) if(val > maxV){ maxV = val; cout << "введено число: " << maxV << " наибольшее из введенных" << '\n'; } else if(val <= minV){ minV = val; cout << "введено число: " << minV << " наименьшее из введенных" << '\n'; } else if(minV < val && val < maxV){ cout << "введенное число больше минимального, но меньше максимального из введенных" << '\n'; } return 0; }
Ты инициализируешь min и max нулем... вот и получается так, просто сам присваивай им начальные значения и работай дальше: Code: #include<iostream> #include<vector> using namespace std; int main() { cout << "Введите числа типа double: " << endl; double val; double minV; double maxV; vector<double> vals; cout << "Введите начальное значение minV: "; cin >> minV; cout << "Введите начальное значение maxV: "; cin >> maxV; while(cin >> val) if(val > maxV){ maxV = val; cout << "введено число: " << maxV << " наибольшее из введенных" << '\n'; } else if(val <= minV){ minV = val; cout << "введено число: " << minV << " наименьшее из введенных" << '\n'; } else if(minV < val && val < maxV){ cout << "введенное число больше минимального, но меньше максимального из введенных" << '\n'; } return 0; } можешь еще проверку в начале поставить, чтобы minV не присваивалось значение больше maxV
Подскажите, как для dll-ки замутить консольное окно (для вывода данных) ? Вообщем, как при атаче дллки в процесс замутить окно консоли, в которое писать данные из той же дллки? )
Начни с функции AllocConsole, а потом WriteConsole. Вот справка: http://msdn.microsoft.com/en-us/library/windows/desktop/ms682073%28v=vs.85%29.aspx
Разбирался с темой функции и в когда тестил прогу, то не разобрался в небольшом нюансе с указателями //программа возводит числа в куб Code: void cube(int *s, int n); int main() { int i, nume[10]; for(i=0;i<10;i++) {nume[i]=i+1; cout<<nume[i]<<' ';} cout<<endl; cube(nume,10); for(i=0;i<10;i++) cout<<nume[i]<<' '; system("pause"); } void cube(int *s, int n) { while(n) { *s=*s * *s * *s; n--; *s++; [COLOR=Red]// если вместо *s++ указать s++, то результат не измениться, почему?[/COLOR] } }
1) Передаем ссылку на первый элемент массива, что-то вида 0xABCDEF. 2) Каждый элемент массива занимает не один байт, скорее всего слово или двойное слово (зависит от режима компиляции).
NetAng Спасибо! Попробую. Попробовал... Компилятор выдает: warning C4700: использована неинициализированная локальная переменная "maxV" warning C4700: использована неинициализированная локальная переменная "minV"
У меня всё работает, какой компилятор? попробуй иницициализировать maxV и minV нулём или еще чем нибудь в начале. Code: double minV = 0; double maxV = 0;
Подскажите плз есть софт скомпиленный в MS Studio 2010. Во время работы вызывает ошибку: Debug error! R6010 abort has been called Что это может означать? и второй вопрос как максимально быстро и еффективно считать файл большой в вектор? Данный код работать очень медленно: Code: string line; ifstream myfile ("example.txt"); if (myfile.is_open()) { while ( myfile.good() ) { getline (myfile,line); cout << line << endl; } myfile.close(); }
В коде происходит вызов метода abort(), возможно не выполнены некоторые условия необходимые для работы программы Не привязывай поток к выводу на консоль, попробуй сишные функции ввода-вывода
Прошу помощи, помогите написать программу для с++. Очень плохо понимаю строки в с++ после pascal\php .... хотя символы-массивы вроде ничего сложного Программа: оставить в слове только первые вхождения всех букв Мой код : http://pastebin.ru/jqKQPg24 Комментарий: Ошибок мелких полно. Но больше всего интересно почему не работает 21 строка(копируется полностью)
Это не C++, это трешовая смесь C и C++. Вот как надо: Code: #include <string> #include <iostream> #include <algorithm> int main() { std::string str; std::cin >> str; str.erase(std::unique(str.begin(), str.end()), str.end()); std::cout << "Unique letters: " << str << std::endl; return 0; } Edit: неверно, не будет так работать, как надо.
может быть и смесь , но я пишу на данный момент не для себя, а для преподавателя. Поэтому нужно использовать тип char только
Не совсем вопрос, но всё же... Подкиньте, пожалуйста, простенький класс c++ (vs 2010) для работы с mssql.
Надо было это сразу конкретизировать. PHP: #include <stdlib.h> #include <iostream> int main() { char word[50] = {0}; std::cin >> word; for(char* unique_end = word + 1, *curr = unique_end, *last = word + strlen(word) + 1; curr != last; ++curr) { char* curr2; for(curr2 = word; curr2 != unique_end && *curr != *curr2; ++curr2); if(curr2 == unique_end) *unique_end++ = *curr; } std::cout << "Unique letters: " << word << std::endl; return 0; }
Язык C. Есть структура с полями Name, Number и Time как можно записать данные с этих полей в файл в удобочитаемом виде: Егор......12345.....12:00 Дима.....345........01:05 Аня.......5678......02:07 (вместо точек пробелы)
при выполнении программы она должны выводить "Hello", а за ним имя, которое должно быть первым аргументом командной строки. int main(int argc, char *argv[]) { if(argc!=2) { cout << "You forgot to type your name.\n"; system("pause"); return 1; } cout << "Hello " << argv[1] << '\n'; system("pause"); return 0; } программу надо запускать, введя команду name Том (name- имя программы) где вводить эту команду? а то у меня всё время результат - "You forgot to type your name"