Тролль Опубликовано 19 декабря, 2009 Жалоба Поделиться Опубликовано 19 декабря, 2009 (изменено) Влад(SAN): В "задаче" только ввод-вывод, такие вещи и самому сделать - пара пустяков. var i,j:integer; a:array[1..50,1..4] of string[30];beginwriteln('Введите данные, для выхода вместо ввода вида транспорта нажмите просто Enter');for i:=1 to 50 do begin write(Вид транспорта? '); readln(a[i,1]); if a[i,1]='' then break; write('Маршрут? '); readln(a[i,2]);write('Протяженность маршрута(км)'); readln(a[i,3]);write('Время в дороге? '); readln(a[i,4]) end;writeln;writeln('________________________________________________________________');writeln('Вид транспорта|Маршрут|Протяженность маршрута(км)|Время в дороге|');writeln('______________|_______|__________________________|______________|');for j:=1 to i-1 do writeln(a[j,1],'|':15-length(a[j,1]),a[j,2],'|':8-length(a[j,2]), a[j,3],'|':27-length(a[j,3]),a[j,4],'|':15-length(a[j,4]));writeln('________________________________________________________________|');writeln; readlnend. Изменено 19 декабря, 2009 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
Die_hard Опубликовано 19 декабря, 2009 Жалоба Поделиться Опубликовано 19 декабря, 2009 Тролль! Спасибо! Очереди в этой сортировке мне нужны для того, чтобы сделать всё так, как указано в етой книге: "Ахо А., Хопкрофт Дж., Ульман Дж. - Построение и анализ вычислительных алгоритмов. М., 1979", стр. 98-101. Буду разбирацца..)) Ссылка на комментарий Поделиться на другие сайты Поделиться
Влад(SAN) Опубликовано 19 декабря, 2009 Жалоба Поделиться Опубликовано 19 декабря, 2009 СПАСИБО БОЛЬШОЕ)))) Ссылка на комментарий Поделиться на другие сайты Поделиться
Влад(SAN) Опубликовано 20 декабря, 2009 Жалоба Поделиться Опубликовано 20 декабря, 2009 где можна скачать нормальный VisualC++?????от куда не скачаю, не открываеться утановка...=( Ссылка на комментарий Поделиться на другие сайты Поделиться
}{0TTa6bI4 Опубликовано 20 декабря, 2009 Жалоба Поделиться Опубликовано 20 декабря, 2009 ТРОЛЛЬ, я вот нашел готовое задание. Ты не мог бы пожалуйста посмотреть правильно оно или нет? там в перегрузке присваивания вроде нету, не подскажешь как сделать? #pragma hdrstop #include <conio.h> #include <stdlib.h> #include <iostream.h> const maxsize=10; //макс. кол-во элементов вектора class Vector { private: int size; //размер вектора int coord[maxsize]; //координаты вектора public: Vector(int n); //конструктор void ViewVector(void); //вывод значений эл-тов вектора void InputVector(void); //ввод вектора Vector operator + (Vector b); //сложение векторов int operator * (Vector b); //умножение векторов Vector operator - (); //изменение знака вектора }; //--------------------------------------------------------------------------- #pragma argsused Vector::Vector(int n) { //констурктор if (n>maxsize) { cout<<"Error - vector is too large"<<"\n"; exit(1); } else { size=n; for(int i=0;i<n;i++) coord=0; } } void Vector::InputVector() { //ввод вектора for(int i=0;i<size;i++) { cout<<"Vector [ "<<i<<" ] = "; cin>>coord; } cout<<"\n"; } void Vector::ViewVector() { //вывод вектора for(int i=0;i<size;i++) { cout<<coord<<" "; } cout<<"\n"<<"\n"; } Vector Vector::operator + (Vector b) { //сложение векторов if (size != b.size) cout<<"Error - vectors are of different dimensions"<<"\n"; else for(int i=0;i<size;i++) coord+=b.coord; return *this; } int Vector::operator * (Vector b) { //умножение векторов int m=0; if (size != b.size) cout<<"Error - vectors are of different dimensions"<<"\n"; else for(int i=0;i<size;i++) m=m+coord*b.coord; return m; } Vector Vector::operator - () { //изменение знака вектора for(int i=0;i<size;i++) coord=-coord; return *this; } int main(int argc, char* argv[]) {//тестирование класса Vector a(3), b(3); int c; cout<<"Input a :"<<"\n"; a.InputVector(); cout<<"a = "; a.ViewVector(); cout<<"Input b :"<<"\n"; b.InputVector(); cout<<"b = "; b.ViewVector(); cout<<"\n"; a=a + b; //сложение cout<<"a = a + b"<<"\n"; cout<<"a = "; a.ViewVector(); c=a * b; //умножение cout<<"c = a * b"<<"\n"; cout<<"c = "<<c<<"\n"; a=-a; //изменение знака вектора cout<<"\n"<<"- a = "; a.ViewVector(); getch(); return 0; } Не могли бы вы помочь сделать блок-схемы? Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 20 декабря, 2009 Жалоба Поделиться Опубликовано 20 декабря, 2009 Блок-схемы рисуются только для бестолковых заказчиков, чтобы показать им "гигантский" объем проделанной работы. А рисовать их - занятие для младшего школьного возраста - берем линейку и карандаш и перерисовываем текст программы в квадратики и ромбики, игнорируя отступы, а обычно и комментарии. В результате программа становится нечитаемой и непонятной. Правда, это не имеет значения, так как блок-схема на самом деле никому и не нужна. Поэтому для построения блок-схем используются обычно готовые программы построения блок-схем по готовым текстам. Две последние ссылки из этого поста годятся и для C++. Ссылка на комментарий Поделиться на другие сайты Поделиться
serzh72 Опубликовано 20 декабря, 2009 Жалоба Поделиться Опубликовано 20 декабря, 2009 Помогите решить задачи в Паскале: 1.Сформируйте массив из 10 целых чисел,введенных с клавиатуры. Подсчитать количество отрицательных элементов 2. Дан массив из N вещественных чисел. Написать программу, определяющую минимальный элемент массива и его номер 3.В массиве хранится информация о среднедневной температуре за первую неделю декабря. Составить программу, которая подсчитывает, сколько в декабре было дней с нулевой, положительной и отрицательной температурой. Ссылка на комментарий Поделиться на другие сайты Поделиться
core_st Опубликовано 20 декабря, 2009 Жалоба Поделиться Опубликовано 20 декабря, 2009 С клавиатурьі последовательно вводятся слова. Если слово совпадает из первьім словом из очереди то оно удаляется из очереди, если нет - тогда додается в очередь. Ввод слов останавливается при введении слова "STOP". После етого очередь вьіводится на екран. Язьік - С++ Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 20 декабря, 2009 Жалоба Поделиться Опубликовано 20 декабря, 2009 serzh72: 1.Сформируйте массив из 10 целых чисел,введенных с клавиатуры. Подсчитать количество отрицательных элементов var i,m:integer; a:array[1..10]of integer;beginfor i:=1 to 10 do read(a[i]); readln; m:=0;for i:=1 to 10 do if a[i]<0 then inc(m); writeln('m=',m); readlnend. 2. Дан массив из N вещественных чисел. Написать программу, определяющую минимальный элемент массива и его номер var i,n,m:integer; min:real; a:array[1..100]of real;beginwrite('n ? '); readln(n);for i:=1 to n do read(a[i]); readln; m:=1; min:=a[1];for i:=2 to n do if a[i]<min then begin m:=i; min:=a[i] end;writeln('min=a[',m,']=',min:10:3); readlnend. 3.В массиве хранится информация о среднедневной температуре за первую неделю декабря. Составить программу, которая подсчитывает, сколько в декабре было дней с нулевой, положительной и отрицательной температурой. Я не провидец, и компьютер тоже. По данным за первую неделю декабря подсчитать среднюю темпкратуру будущих недель мог бы разве что Нострадамус, а его среди пользователей форума пока вроде не числится :g: Ссылка на комментарий Поделиться на другие сайты Поделиться
serzh72 Опубликовано 20 декабря, 2009 Жалоба Поделиться Опубликовано 20 декабря, 2009 спасибо огромное! :g: Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 20 декабря, 2009 Жалоба Поделиться Опубликовано 20 декабря, 2009 (изменено) core_st: С клавиатурьі последовательно вводятся слова. Если слово совпадает из первьім словом из очереди то оно удаляется из очереди, если нет - тогда додается в очередь. Ввод слов останавливается при введении слова "STOP". После етого очередь вьіводится на екран. Язьік - С++ #include<iostream>#include<string>using namespace std;main(){struct Queue {struct St{string info; St *ref; St(string i, St *r){info=i; ref=r; };}; St *beg, *end, *q; void into(string i){end->ref=end=new St(i,NULL);} string out(void){if(beg->ref!=NULL){q=beg->ref; delete beg; beg=q; return q->info;}return "";} string read(void){if(beg->ref!=NULL)return beg->ref->info; else return "";} Queue(){beg=end=new St("",NULL);}};Queue p; string i; while(true){cout<<" Enter string: "; getline(cin,i); if(i=="STOP")break; if(i==p.read()) p.out(); else p.into(i);} cout<<endl; while(true){if((i=p.out())=="")break; cout<<i<<endl;} getchar();} P.S. Слегка упростил, выкинув лишнюю переменную. Изменено 20 декабря, 2009 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
core_st Опубликовано 20 декабря, 2009 Жалоба Поделиться Опубликовано 20 декабря, 2009 Спасибо огромное!!! А можно еще разобрать алгоритм роботьі? а то я не очень понимаю очереди и стеки. буду весьма благодарен Ссылка на комментарий Поделиться на другие сайты Поделиться
core_st Опубликовано 20 декабря, 2009 Жалоба Поделиться Опубликовано 20 декабря, 2009 getline(cin,i); - здесь ошибку дает. Компилятор Code Gear C++ Builder. наверное нужно както по другому записать ету функцию? Ссылка на комментарий Поделиться на другие сайты Поделиться
core_st Опубликовано 20 декабря, 2009 Жалоба Поделиться Опубликовано 20 декабря, 2009 Сори. Пересмотрел - базовая функция. Но почему-то не работает. в Любо случае спасибо за помощь Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 20 декабря, 2009 Жалоба Поделиться Опубликовано 20 декабря, 2009 (изменено) Может быть. Я проверял в Dev-C++. А C++ - это лишь семейство похожих языков. Библиотеки разных сред отличаются. getline(cin,i); - это просто ввод строки. Обычный cin>>i; вводит строку только до первого пробела, а остальное оставляет на следующий ввод. В принципе по заданию вводятся только слова, а не строки, так что можно просто заменить на cin>>i; Но красивее иметь возможность вводить в очередь не только слова, а и строки. Бывает вариант cin.getline(i,200); где 200 было бы максимальной длиной вводимой строки, а может быть и иначе. Посмотри в C++ Builder, как в нем вводится строка через cin, или упрости до cin>>i; , благо это тоже соответствует условию. P.S. А насчет понимания, в C++ всегда трудно что-либо понять. Поэтому мне очень жаль постепенно теряющего место под солнцем Паскаля. Чего стоит только фрагмент программы delete beg; beg=q; :blush2: Мы вроде бы уничтожаем запись beg, а потом присваиваем несуществующей записи значение q? На самом деле это типичный для C++ трюк - уничтожается не beg, а то, на что beg указывает. Два пишем, три в уме :bye1: Работает всё это так. Например, вводим a b c a d b e STOP Должно вылезть на экран c d e Изменено 20 декабря, 2009 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
Bastr91 Опубликовано 21 декабря, 2009 Жалоба Поделиться Опубликовано 21 декабря, 2009 Доброго вечера.Прошу вас помогите пожалуйста создать программу нужно сдавать до пятницы а по мимо этого еще 5 зачетов висит... очень прошу о помощи... 1. Цель работы Реализовать контейнерный класс в соответствии с вариантом задания, а также выполнить перегрузку операций. Создать интерфейс для тестирования всех функций класса. 2. Характеристики работы Данные: Максимальное количество элементов множества (n), текущее количество элементов множества, массив для хранения элементов множества. Операции: Конструктор, создающий пустое множество. Деструктор, освобождающий память, выделенную под массив. Добавления элемента i в множество. Удаление элемента ш из множества. Определение принадлежности элемента I к множеству. Вывод множества в виде { 1, 3, 4 }. "+" - объединение множеств. "*" - пересечение множеств. "-" - удаление элемента из множества. "+" - добавление элемента в множество. "=" - присваивание множества. Ссылка на комментарий Поделиться на другие сайты Поделиться
Mandarin91 Опубликовано 21 декабря, 2009 Жалоба Поделиться Опубликовано 21 декабря, 2009 помогите пожалуйста в дискретке, решить 1 из след. задач: Имеется "чёрный ящик", вычисляющий функцию f от n переменных. На скольких наборах надо вычислить значения функции, чтобы восстановить полностью таблицу функции f, если а) f линейна? б) f самодвойственна? Имеется "чёрный ящик", вычисляющий функцию f от n переменных. На скольких наборах надо вычислить значения функции, чтобы проверить, что она нелинейна? Найти число монотонных ДНФ от n переменных. Сколько ребёр должно быть в графе с n вершинами, чтобы он был обязательно связным? спасибо! Ссылка на комментарий Поделиться на другие сайты Поделиться
core_st Опубликовано 21 декабря, 2009 Жалоба Поделиться Опубликовано 21 декабря, 2009 Написать програму перевода однорозрядного восьмеричного в двоичное используя битовьіе поля. Задание тупое и простое, но как туда поля битовьі прилепить? Ссылка на комментарий Поделиться на другие сайты Поделиться
serzh72 Опубликовано 21 декабря, 2009 Жалоба Поделиться Опубликовано 21 декабря, 2009 [/b] Тролль спасиб за предыдущее задание :) а ещё одно можно,а то конец четверти,надо спасать оценку: Составьте программу,которая формирует массив из пятнадтаци случайных целых чисел от -20 до 20 и отрицательные числа возводит в квадрат,а из неотрицательных извлекает квадратный корень :) Ссылка на комментарий Поделиться на другие сайты Поделиться
core_st Опубликовано 21 декабря, 2009 Жалоба Поделиться Опубликовано 21 декабря, 2009 serzh72: Я не Тролль, но попробую помочь: #include <stdlib.h>#include <stdio.h>#include <time.h>#include <vcl.h>#pragma hdrstop#pragma argsusedint main(int argc, char* argv[]){int mas[20]; time_t t; srand((unsigned) time(&t)); printf("Ten random numbers from -20 to 20\n\n"); for(int i=0; i<20; i++){ mas[i]=(rand() % 40)-20; printf("%d\n",mas[i]);} getchar(); return 0;} тьфу. не дочитал условие. сецчас доделаю Вот так //---------------------------------------------------------------------------#include <stdlib.h>#include <stdio.h>#include <time.h>#include <math.h>#include <vcl.h>#pragma hdrstop//---------------------------------------------------------------------------#pragma argsusedint main(int argc, char* argv[]){float mas[15]; time_t t; int x; srand((unsigned) time(&t)); printf("15 random numbers from -20 to 20\n\n"); for(int i=0; i<15; i++){ x=(rand() % 40)-20; if (x<0) mas[i]=pow(x,2); else mas[i]=sqrt(x); printf("%.3f\n",mas[i]);} getchar(); return 0;}//--------------------------------------------------------------------------- Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 21 декабря, 2009 Жалоба Поделиться Опубликовано 21 декабря, 2009 (изменено) core_st: Задание тупое и простое, но как туда поля битовьі прилепить?Опять же в одном компиляторе можно немного проще, в другом немного сложнее. Dev-C++ допускает безымянные структуры, но не всякий компилятор это позволяет. Поэтому дам структуре с битовыми полями имя#include <iostream.h>main(){union{struct{unsigned x1:1,x2:1,x3:1;}b;unsigned k;}p;cin>>p.k; cout<<p.b.x3<<p.b.x2<<p.b.x1<<endl; getchar(); getchar();} Вводишь, например, 6, получаешь 110. Изменено 21 декабря, 2009 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
Dies Опубликовано 23 декабря, 2009 Жалоба Поделиться Опубликовано 23 декабря, 2009 Помогите плиз, горю!!! Скоро зачет по программированию на с, а у меня для допуска 2 проги нужно накатать в gcc. 1. Написать прогу: входные данные точка О- центр окружности, и R- радиус (вводятся при запуске).=> прога рисует окружность => определить площадь S-? длину окружности P-?=>задать точки х и y на окружности =>Определить угол между точками х и y до точки О (угол ХОУ-?) 2. Написать прогу: входные данные координаты точек A и D прямоугольника ABCD (должна нарисовать прямоугольник по этим двум точкам)=> Определить координаты B-? и C-?, координаты точки O-?(центр пересечения диагоналей)=> определить высоту h-?, ширину b-?, площадь S-?, и периметр P-? также нужны блок схемы и алгоритмы к обоим программам. :) :D :) Надеюсь на ваше понимание и поддержку в данном вопросе. Ссылка на комментарий Поделиться на другие сайты Поделиться
kiberc@t Опубликовано 23 декабря, 2009 Жалоба Поделиться Опубликовано 23 декабря, 2009 Здравствуйте,помогите,очень нужно,сдавать через день,задание дали поздно. В верхнетреугольной матрице элементы,находящиеся ниже главной диагонали,равны нулю.Для хранения значения матрицы используется одномерный массив,в котором хранятся только элементы из верхней области. Нужен конструктор с параметрами,инициализирующий размер матрицы и заполняющий матрицу нулями.Установка значения элемента с индексами i, j,проверка допустимости индексов.Получения значения элемента матрицы с индексами i ,j, с проверкой допустимости индексов.Построчный ввод и построчный вывод матрицы. На C++ Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 23 декабря, 2009 Жалоба Поделиться Опубликовано 23 декабря, 2009 (изменено) Dies: Ну, вообще-то в задаче 1 очень любопытно, как можно задать координаты точек на окружности без расчетов. Я, например, за исключением нескольких точек, не берусь без калькулятора из головы задать такие координаты, чтобы точка оказалась действительно на окружности. Да и вообще с какой точностью прикажете попадать на линию окружности? Ладно, примем, что с точностью порядка одной сотой радиуса. Насчет графики дело вообще темное. GCC - компилятор, и графика - не его дело, а какие у вас графические библиотеки используются, знает, возможно, тот, кто писал задания, хотя судя по заданиям, писал их он в состоянии легкого подпития. Так что графику я оставлю за рамками решения. А остальное - пожалуйста. #include<stdio.h>#include<math.h>main(){float x,y,r,pi,s,p,a,xx,xy,yx,yy,u,v;printf("Xc Yc R? "); scanf("%f%f%f",&x,&y,&r); pi=3.1415926536; s=pi*r*r; p=2*pi*r; printf("S=%f\nP=%f\n",s,p); printf("xx xy yx yy? "); scanf("%f%f%f%f",&xx,&xy,&yx,&yy); u=(xx-x)*(xx-x)+(xy-y)*(xy-y); v=(yx-x)*(yx-x)+(yy-y)*(yy-y);if(abs(u-r*r)<0.01*r*r&&abs(v-r*r)<0.01*r*r) {a=acos(((xx-x)*(yx-x)+(xy-y)*(yy-y))/(r*r)); printf("Angle=%f\n",a);}else printf("Point is not on circle!\n");getchar(); getchar();} По второй задаче - условие писалось, видимо, в том же состоянии или после следующей рюмки. По общепринятой системе именования вершин прямоугольника (последовательная нумерация вершин) он у нас - прямая линия. Со всеми вытекающими последствиями расчетов. Я не убежден, что надо рисовать прямую линию и печатать площадь равной нулю. Так что будем считать, что точки обозначаются по системе A B C D Тогда #include<stdio.h>#include<math.h>int main(){float xA,yA,xD,yD,xB,yB,xC,yC,xO,yO,h,b,s,p,k;printf("xA yA xD yD? "); scanf("%f%f%f%f",&xA,&yA,&xD,&yD);xB=xA; yB=yD; xC=xD; yC=yA; xO=(xD+xA)/2; yO=(yD+yA)/2; h=abs(yD-yA); b=abs(xD-xA); s=h*b; p=2*(h+b);printf("xA=%f yA=%f\nxB=%f yB=%f\nxC=%f yC=%f\nxD=%f yD=%f\n",xA,yA,xB,yB,xC,yC,xD,yD);printf("xO=%f yO=%f\nh=%f b=%f\nS=%f P=%f\n",xO,yO,h,b,s,p); getchar(); getchar();} Насчет графики замечания прежние - графику я в программу не включал. Поддержки в вопросе о блок-схемах, скорее всего, будет не найти. Перерисовывать команды в квадратики и ромбики неинтересно, я об этом писал и в этой теме, и в других. Есть неплохие программы для автоматического рисования блок-схем на Паскале, есть и для C, хотя там надо больше ручных доработок, я несколькими постами выше давал ссылку. P.S. Извиняюсь, поправил ошибку: в формуле для центра прямоугольника стоял минус вместо плюса. Изменено 24 декабря, 2009 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
Dies Опубликовано 24 декабря, 2009 Жалоба Поделиться Опубликовано 24 декабря, 2009 В любом случае спасибо Тролль, далее по аналогии может допру сам)) :) Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти