Тролль Posted December 30, 2009 Report Share Posted December 30, 2009 MakentoIII: var t:string; i,j,k:integer;beginwriteln('Vvedite tekst '); readln(t); t:=' '+t; k:=0; for i:=length(t) downto 1 do if t[i]>='0' then inc(k) else begin for j:=i+1 to i+k do write(t[j]); if k<>0 then write(' '); k:=0 end;writeln; readlnend. Quote Link to comment Share on other sites More sharing options...
MakentoIII Posted January 3, 2010 Report Share Posted January 3, 2010 Большое спасибо очень помогли есть еще одна задачка и тоже на паскале Вот задание Составить список, содержащий сведения об N студентах. Для каждого учащегося указать: - фамилия; - ИНН (идентификационный номер налогоплательщика); - дата выдачи Свидетельства о постановке на учет в налоговом органе; - дата рождения; - год поступления в университет; - курс; - группа; - количество семестров обучения; - оценки каждой сессии по всем семестрам. Информацию о каждом студенте оформить в виде записи. Совокупность записей объединить в массив. Составить программу, которая обеспечивает ввод исходных данных, обработку и вывод на экран информации Упорядочить список студентов по году рождения и вывести его на экран. N = 6. Quote Link to comment Share on other sites More sharing options...
core_st Posted January 3, 2010 Report Share Posted January 3, 2010 Загвоздочка из заданием... Вьівести на екран побайтно число типа float введенное с клавиатурьі. Думал так: #include <iostream> using namespace std; struct bit {unsigned char x1:4, x2:4,x3:4,x4:4;}; union {bit n;float c;} x; main() { scanf ("%f",&x.c); printf("\n%d\n%d\n%d\n%d",x.n.x4,x.n.x3,x.n.x2,x.n.x1); getchar();getchar(); } но програма просто вьірубается и ничего не делает Quote Link to comment Share on other sites More sharing options...
Lion HC Posted January 3, 2010 Report Share Posted January 3, 2010 union {float f; unsigned char c[4];} x; int main(int argc, _TCHAR* argv[]) { cin >> x.f; cout << endl << hex; for (int i=0; i < 4; i++) cout << int(x.c[i]) << endl; system("pause"); } Quote Link to comment Share on other sites More sharing options...
Тролль Posted January 3, 2010 Report Share Posted January 3, 2010 (edited) MakentoIII: Задача в основном на тренировку печатания на клавиатуре. Делать нечего, только перепечатывать названия из условия. Такие надо самому делать, собственно программирования тут практически нет. const n=6;var i,j:integer; a:array[0..n]of record f:string[20]; inn,d:string[10]; p,k,g,s:integer; o:array[1..20]of byte; end;beginfor i:=1 to n do with a[i] do beginwrite('familia '); readln(f);write('INN '); readln(inn);write('data rozd. '); readln(d);write('god post. '); readln(p);write('kurs '); readln(k);write('gruppa '); readln(g);write('semestrov '); readln(s);write('ozenki '); for j:=1 to s do read(o[j]); readln; writeln; end;for i:=1 to n-1 do for j:=1 to n-i do if copy(a[j].d,length(a[j].d)-4,4)>copy(a[j+1].d,length(a[j+1].d)-4,4) thenbegin a[0]:=a[j]; a[j]:=a[j+1]; a[j+1]:=a[0] end;writeln('familia INN data rozd. post kurs gr. sem. ozenki');for i:=1 to n do with a[i] do begin write(f,'':20-length(f),inn:10,' ',d:10,' ',p:9,k:4,g:4,s:6); for j:=1 to s do write(o[j]:2); writeln; end;readlnend. Названия писал транслитом, слова на русском у меня Pascal искажает (имитатор DOS не русифицирован). Дата рождения вводится в виде 18.12.1980 Оценки по семестрам вводятся друг за другом через пробел или Enter, их должно быть столько, сколько указано семестров. Для проверки, чтобы не мучиться с вводом данных для шести студентов, можно временно заменить n=6 на n=2 Edited January 3, 2010 by Тролль Quote Link to comment Share on other sites More sharing options...
AutoGen Posted January 6, 2010 Report Share Posted January 6, 2010 Народ помогите плиз. Требуется сделать плагин для граф редактора. По функциям как ластик из пейнта. Я его сделал как простую кисть белого цвета, но отрисовки не происходит хотя ошибок вроде нет, посмотрите пожалуйста using System;using System.Drawing;using System.Windows.Forms;using Oop.Tasks.Paint.Interface;namespace Oop.Tasks.Paint.Plugins{ [PluginForLoad(true)]public class Polygon: IToolPaintPlugin{private IPaintPluginContext pluginContext=null;private Cursor cursor=null;private Image icon=null;public bool doDraw = false;private IPaintApplicationContext ApplicationContext{ get { if(pluginContext==null) return null; else return pluginContext.ApplicationContext; }}public void AfterCreate(IPaintPluginContext pluginContext) { this.pluginContext=pluginContext; string imageDir=pluginContext.PluginDir; if(imageDir!=null) { imageDir+=@"\Images\"; try { icon=Image.FromFile(imageDir+"Icon.bmp"); } catch { // подавление исключения } try { cursor=new Cursor(imageDir+"Cursor.cur"); } catch { // подавление исключения } }}public void BeforeDestroy() { if(cursor!=null) cursor.Dispose(); if(icon!=null) icon.Dispose();}public void Select(bool selection) { if(selection) { ApplicationContext.Cursor=cursor; } else { ApplicationContext.Cursor=null; }}public string Name { get { return this.GetType().Name; }}public string CommandName { get { return "Ластик"; }}private Point[] points = new Point[0];public void MouseDown(MouseEventArgs me, Keys modifierKeys){ doDraw = true;}public void MouseUp(MouseEventArgs me, Keys modifierKeys){ doDraw = false;}public void MouseMove(MouseEventArgs me, Keys modifierKeys){ if (doDraw) { Graphics g = Graphics.FromImage(ApplicationContext.Image); SolidBrush whiteBrush = new SolidBrush(Color.Red); g.FillEllipse(whiteBrush, me.X, me.Y, 10, 10); }}public void Escape(){}public void Enter(){}public void ColorChange(){}public void ImageChange() {}public string ToolName { get { return ""; }}public Image Icon{ get { return icon; }}}} Quote Link to comment Share on other sites More sharing options...
Егор N Posted January 7, 2010 Report Share Posted January 7, 2010 Помогите пожалуйста написать программу. Задание: функция вставляет в строку другую строку, начиная с заданной позиции. При реализации функции запрещается пользоваться функциями библиотек языка C. Quote Link to comment Share on other sites More sharing options...
Guest mitka Posted January 22, 2010 Report Share Posted January 22, 2010 Сил моих больше нет. Не хочет корректно срабатывать отключение дисплея: отключится через установленные ему десять минут и сразу снова включается. Спать мне жутко через это. Беда обычно происходит после работы просмотровщиков видео или ТВ-программы (BeholdTV у меня) в полноэкранном режиме. Может быть дрова не те, а может ещё что-то. Но я уже, и дрова менял, и все настройки, и экрана, и дров, и софта перепробовал. Помогает одно: два раза (одного бывает мало) залезть в «Свойства экрана — Заставка — Питание» и выставить уже итак выставленное Отключение дисплея через десять минут. Вот тогда срабатывает как надо и ночью мне становится счастье в виде сна под чёрный экран и плавно закачиваемые фильмы с торрентов. Поэтому просьба: а напишите мне пожалуйста батник, выполняющий действия по отключению дисплея через те десять минут. А уж я его тогда себе на кнопку пульта повешу, буду этак удалённо гасить монитор и вас добром вспоминать. А не напишите — шмальнусь с дула и записку оставлю. Quote Link to comment Share on other sites More sharing options...
Yezhishe Posted January 22, 2010 Report Share Posted January 22, 2010 Батник: Подойти к монитору Нажать кнопку Power (или как там она называется) Отойти от монитора Упасть в койку Наслаждаться некоторое время выключенным монитором Проснуться, нажать кнопку Power (или как там она называется) посмотреть, что же там этакого офигительного на машинку закачалось... P.S. Это в том случае, ежели не удастся овладеть скиллом "Настройка автовыключения монитора", прописанного в свойствах. системы. P.P.S. А ежели серьёзно - то описанная Вами ситуация случается в том случае, ежели Вы не проследили за теми Событиями, на кои монитор должен срабатывать. И, опять же - никто не отменял законодательно кнопку Power. Quote Link to comment Share on other sites More sharing options...
Тролль Posted January 22, 2010 Report Share Posted January 22, 2010 (edited) Ну, сон под дистанционное включение черного экрана легко реализовать. Хотя, конечно, тушить самопроизвольно включающийся свет - это, как говорят, "туши свет"... Однако в батнике для тушения экрана будет всего одна строка: scrnsave.scr Edited January 22, 2010 by Тролль 1 Quote Link to comment Share on other sites More sharing options...
core_st Posted February 3, 2010 Report Share Posted February 3, 2010 Перехожу на Qt. в связи с етим решил таки немного поучить с++. Есть пример задания свойства для класа: #ifndef CORE_H#define CORE_H#include <QObject>class Core : public QObject{Q_PROPERTY (bool readOnly READ isReadOnly WRITE setReadOnly)private: bool m_bReadOnly;public:Core(QObject* pobj=0):QObject (pobj), m_bReadOnly(false) {}public:void setReadOnly (bool bReadOnly) {m_bReadOnly=bReadOnly;}bool isReadOnly () const {return m_bReadOnly;}};#endif // CORE_H Пожалуйста кто может обьясните дураку вот ету строчку: Core(QObject* pobj=0):QObject (pobj), m_bReadOnly(false) {} ну инициализация m_bReadOnly(false) понятна. А вот к чему там pobj , зачем его равнять 0 и что такое QObject (pobj) ? ой. дико извиняюсь. Во дурак. Как же то юзать фукнции надо. pobj просто переменная типа QObject. и там так же осуществляется ее инициализация. Токо вот в че вопрос почему QObject* pobj=0 здесь равно 0? Quote Link to comment Share on other sites More sharing options...
Тролль Posted February 3, 2010 Report Share Posted February 3, 2010 core_st: pobj - указатель на переменную типа QObject. Он тут инициализируется нулем. Quote Link to comment Share on other sites More sharing options...
ХельгаZ Posted February 4, 2010 Report Share Posted February 4, 2010 Здравствуйте! Это задачка по Паскалю из моей контрольной (я на 1 курсе): "В компьютер вводится одно натуральное число, состоящее не более чем из пяти цифр. Составить программу, выводящую на экран значение этого числа словами". Контрольную я сдала, но преподаватель сказал, что очень большой исходный код. Подскажите, как его уменьшить? program NADPIS3;var n,k,a:integer;procedure edinica(a:integer); begin case a of 1: write('один '); 2: write('два '); 3: write('три '); 4: write('четыре '); 5: write('пять '); 6: write('шесть '); 7: write('семь '); 8: write('восемь '); 9: write('девять '); 0: write('десять '); end; end;procedure odinnad(a:integer); begin case a of 1: write('одиннадцать '); 2: write('двенадцать '); 3: write('тринадцать '); 4: write('четырнадцать '); 5: write('пятнадцать '); 6: write('шестнадцать '); 7: write('семнадцать '); 8: write('восемнадцать '); 9: write('девятнадцать '); 0: write('десять '); end; end;procedure sotni(a:integer); begin case a of 1: write('сто '); 2: write('двести '); 3: write('триста '); 4: write('четыреста '); 5: write('пятьсот '); 6: write('шестьсот '); 7: write('семьсот '); 8: write('восемьсот '); 9: write('девятьсот '); 0: write(''); end; end;procedure decyatki(a:integer); begin case a of 1: write(''); 2: write('двадцать '); 3: write('тридцать '); 4: write('сорок '); 5: write('пятьдесят '); 6: write('шестьдесят '); 7: write('семьдесят '); 8: write('восемьдесят '); 9: write('девяносто '); 0: write(''); end; end;procedure tysyachi(a:integer); begin case a of 1: write('одна тысяча '); 2: write('две тысячи '); 3: write('три тысячи '); 4: write('четыре тысячи '); 5: write('пять тысяч '); 6: write('шесть тысяч '); 7: write('семь тысяч '); 8: write('восемь тысяч '); 9: write('девять тысяч '); 0: write(''); end; end;procedure opred(var n,k:integer); begin n:=n mod k; k:=k div 10; a:=n div k; odinnad(a); end;procedure razryad(var k:integer); begin case k of 10000: if a=1 then begin opred(n,k); write('тысяч '); end else decyatki(a); 1000 : tysyachi(a); 100 : sotni(a); 10 : if a=1 then opred(n,k) else decyatki(a); 1 : edinica(a); end; end;begin writeln('‚Введитечисло, состоящее не более чем из 5 знаков'); readln(n); k:=10000; while (n>0) and (k>0) do begin a:=n div k; razryad(k); n:=n mod k; k:=k div 10; end; readln;end. Quote Link to comment Share on other sites More sharing options...
Тролль Posted February 4, 2010 Report Share Posted February 4, 2010 (edited) прошупомощи: Простейший путь сокращения - сделай вместо процедур с оператором case массивы строк. Например, объяви вместо процедуры decyatki в начале программы const decyatki:array[0..9]of string[12]=(' ',' ','двадцать ','тридцать ','сорок ','пятьдесят ','шестьдесят ','семьдесят ','восемьдесят ','девяносто '); и вместо decyatki(a) вызывай write(decyatki[a]) И так же с остальными процедурами, выбирающими нужное слово. Edited February 4, 2010 by Тролль Quote Link to comment Share on other sites More sharing options...
Форматцевт Posted February 4, 2010 Report Share Posted February 4, 2010 Тролль: лучше многомерный, так будет ещё короче. А можно все слова засунуть в текстовый файл и считать :D PS Преподаватель - извращенец :blush2: Quote Link to comment Share on other sites More sharing options...
ХельгаZ Posted February 4, 2010 Report Share Posted February 4, 2010 Тролль , Indomito: спасибо большое, я поняла :blush2: :D Quote Link to comment Share on other sites More sharing options...
Radu Posted February 9, 2010 Report Share Posted February 9, 2010 Помогите плз создать калькулятор в C++ Builder 6.0 Вот что у меня получилось , нужно еще добавить "+" , "-" , "*" , "/" , "=" , "c" Исходник - http://rapidshare.com/files/348309700/Calculator.rar.html http://rapidshare.de/files/49126248/Calculator.rar.html Quote Link to comment Share on other sites More sharing options...
C1keu Posted February 10, 2010 Report Share Posted February 10, 2010 Помогите пожалуйста решать задание.Си++ Написать и протестировать функцию для решения следующей задачи. Найти наименьшую из нечетных компонент вектора и наибольшую из четных компонент. Если они имеют разные знаки, то вычислить сумму элементов вектора, а в противном случае определить произведение положительных элементов вектора Quote Link to comment Share on other sites More sharing options...
Тролль Posted February 10, 2010 Report Share Posted February 10, 2010 (edited) C1keu: #include<iostream>using namespace std;float fun(float b[], int n){int i,t=1; float min,max,r;min=b[0]; for(i=0;i<n;i+=2)if(b[i]<min)min=b[i]; max=b[1]; for(i=1;i<n;i+=2)if(b[i]>max)max=b[i];if(min*max<0){r=0; for(i=0;i<n;i++)r+=b[i];} else {r=1; for(i=0;i<n;i++)if(b[i]>0){r*=b[i]; t=0;}if(t)r=0;} return r;} main(){float a[100]; int i,n;cout<<endl<<"n="; cin>>n;for(i=0;i<n;i++){cout<<"a["<<i<<"]="; cin>>a[i];}cout<<"result="<<fun(a,n)<<endl; getchar(); getchar();} Считаю, что в векторе (не в программе) элементы нумеруются с единицы, то есть нечетные элементы вектора - первый, третий и так далее. В задании также не сказано, что должно получаться, если при вычислении произведения положительных элементов таковых не оказывается. В программе в этом случае будет выведен нуль. Edited February 10, 2010 by Тролль Quote Link to comment Share on other sites More sharing options...
C1keu Posted February 11, 2010 Report Share Posted February 11, 2010 C1keu: #include<iostream>using namespace std;float fun(float b[], int n){int i,t=1; float min,max,r;min=b[0]; for(i=0;i<n;i+=2)if(b[i]<min)min=b[i]; max=b[1]; for(i=1;i<n;i+=2)if(b[i]>max)max=b[i];if(min*max<0){r=0; for(i=0;i<n;i++)r+=b[i];} else {r=1; for(i=0;i<n;i++)if(b[i]>0){r*=b[i]; t=0;}if(t)r=0;} return r;} main(){float a[100]; int i,n;cout<<endl<<"n="; cin>>n;for(i=0;i<n;i++){cout<<"a["<<i<<"]="; cin>>a[i];}cout<<"result="<<fun(a,n)<<endl; getchar(); getchar();} Считаю, что в векторе (не в программе) элементы нумеруются с единицы, то есть нечетные элементы вектора - первый, третий и так далее. В задании также не сказано, что должно получаться, если при вычислении произведения положительных элементов таковых не оказывается. В программе в этом случае будет выведен нуль. Мм, но там есть про разные знаки,это значит что нужно начать например с -13? Не важно что получится при произведении,нужно просто вывести результат который получется от произведения найденных компонент вектора.И можна пожалуйсто под Borland написать.\ Спасибо за помощь и труд! :) Quote Link to comment Share on other sites More sharing options...
Тролль Posted February 11, 2010 Report Share Posted February 11, 2010 C1keu: но там есть про разные знаки,это значит что нужно начать например с -13?13 - чертова дюжина, с нее начинать не рекомендуется :blink: Откуда взялось это число? В условии сказано: "Найти наименьшую из нечетных компонент вектора и наибольшую из четных компонент. Если они имеют разные знаки..." Так и сделано. Не важно что получится при произведении,нужно просто вывести результат который получется от произведения найденных компонент вектора.А если найдено 0 компонент, что выводить? Я вывожу 0. можна пожалуйсто под Borland написатьТут нет ничего специально для какого-то компилятора. На всякий случай проверил в Борландовском, работает. P.S. Не надо целиком цитировать в ответе предыдущее сообщение. И так ясно, о чем речь. Если вопрос или замечание по какой-то части сообщения, можно процитировать именно ее. Quote Link to comment Share on other sites More sharing options...
C1keu Posted February 11, 2010 Report Share Posted February 11, 2010 Хорошо,насчет целиком понял. Наверно надо было сразу сказать,что код нужно написать для старенького Borland 3.1 А то он данный код не принимает. Quote Link to comment Share on other sites More sharing options...
Тролль Posted February 11, 2010 Report Share Posted February 11, 2010 C1keu: код нужно написать для старенького Borland 3.1А то он данный код не принимает. Ну и переделал бы сам - тут-то уж и делать нечего. Надо заменить в начале программы строки #include<iostream> using namespace std; на #include<iostream.h> #include<stdio.h> Полезно еще убрать один из двух операторов getchar(); в конце программы - из-за него в 3.1 придется нажимать Enter дважды, чтобы выйти из программы. Quote Link to comment Share on other sites More sharing options...
C1keu Posted February 12, 2010 Report Share Posted February 12, 2010 Спасибо,понятно. Но Borland 3.1 Не понимает cout и т.д cout<<endl<<"n="; cin>>n;for(i=0;i<n;i++){cout<<"a["<<i<<"]="; cin>>a[i];}cout<<"result="<<fun(a,n)<<endl; getchar(); getchar();} Можно тоже самое только под борланд. Я просто только начал изучать(в вузе с него) А до этого, не изучал никакой язык. Quote Link to comment Share on other sites More sharing options...
Тролль Posted February 12, 2010 Report Share Posted February 12, 2010 (edited) C1keu: Borland 3.1 прекрасно понимает cout и т.д. Если не понимает, значит, неправильно установлен. Но нетрудно переписать ввод-вывод и в варианте чистого C. #include<stdio.h>float fun(float b[], int n){int i,t=1; float min,max,r;min=b[0]; for(i=0;i<n;i+=2)if(b[i]<min)min=b[i]; max=b[1]; for(i=1;i<n;i+=2)if(b[i]>max)max=b[i];if(min*max<0){r=0; for(i=0;i<n;i++)r+=b[i];} else {r=1; for(i=0;i<n;i++)if(b[i]>0){r*=b[i]; t=0;}if(t)r=0;} return r;} main(){float a[100]; int i,n;printf("n="); scanf("%d",&n);for(i=0;i<n;i++){printf("a[%d]=",i+1); scanf("%f",&a[i]);}printf("result=%f",fun(a,n)); getchar(); getchar();} Проверил в том же Borland C++ 3.1, хотя этот вариант должен уже и в самом первом борландовском Turbo C идти (конечно, если он правильно установлен...). Edited February 12, 2010 by Тролль Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.