Програмування

Re: Програмування

Повідомлення Bob Gubko » 26 квітня 2011, 19:30

Не ну хорошо,сенкс...
Аватар користувача
Bob Gubko
 
Повідомлень: 9
З нами з: 13 січня 2011, 13:22

Re: Програмування

Повідомлення Василь » 27 квітня 2011, 06:12

Чайка, вот тебе исходный материал. Тут есть начало - все остальное по образу и подобию сам сможешь переделать.
Если будут вопросы - спрашуй препода )) он обяснит. Там в проге просто много писать надо )) Мало было времени...
Удачи!
Приєднані файли
chaika_v_gb_27042011i.rar
Чайка. Валюта Великобританії
(123.67 Кб) Завантажено 383 разів
Аватар користувача
Василь
 
Повідомлень: 907
З нами з: 15 жовтня 2010, 02:08

Re: Програмування

Повідомлення Bob Gubko » 27 квітня 2011, 08:32

Пасибо БОЛЬШОЕ
Аватар користувача
Bob Gubko
 
Повідомлень: 9
З нами з: 13 січня 2011, 13:22

Re: Програмування

Повідомлення Василь » 29 квітня 2011, 07:54

Код: Виділити все
/* Горбаченко В.А. 29 04 2011 08 47
 * Визначити клас, який реалізує поліном.
 * Поліном визначається поядком та масивом коефіцієнтів.
 * Передбачитит методи обчислення значення полінома у
 * заданій точці, знаходження похідної та первісної
 */
#include <iostream>
#include <cstring>
#include <math.h> // УВАГА! Підключаний math.h. Впадло переписувати pow, але для даного випадку це - дуже просто

using namespace std;

class polynom{ // Клас полінома
      public:
      int n;   // Порядок
      double *p_koef; // Вказівник масив коефіцієнтів. Поки що пам'ять для нього не виділена
      void EnterN(){ // функція просить користувача ввести порядок полінома
           do{
                      cout<<" -> Vvedit poryadok [n>=2]: ";
                      cin>>n;
           } while (n<2); // не пропускаємо n<2
           n++;
      }
      void EnterKoef(){   // Вводимо коефіцієнти полінома
           for (int i=n-1 ; i >=0 ; i--){
               cout<<"Enter [ "<<i<<" ] = ";
               cin>>*(p_koef+i);
           }           
      }
      void ShowPoly(){          // вивести поліном на екран
           for (int i=n-1 ; i >=1 ; i--){
               cout<<"("<<*(p_koef+i)<<")"<<"*x^"<<i<<" + ";
           }
           cout<<"("<<*(p_koef)<<")";
           cout<<endl;
      }
      double EnterX(){// Ввести X
             double x;
             cout<<" -> Enter X : ";
             cin>>x;
             return x;
      }
      double CalculatePoly(double x){ // порахувати поліном
           double sum=0; 
           for (int i=n-1 ; i >= 0 ; i--){
               sum+=*(p_koef+i)*pow(x,i);
           }
           return sum;
      }

      void CalculatePoh(){ // похідна         
           cout<<" -> Pohidna = ";
           int i=n-1;
           for (i ; i > 1 ; i--){
               cout<<"("<<i*(*(p_koef+i))<<")"<<"*x^"<<i-1<<" + ";
           }
           cout<<"("<<i*(*(p_koef+i))<<")";
           cout<<endl;
           return ;
      }     
      void CalculatePer(){ // первісна
           cout<<" -> Pervisna = ";
           int i=n-1;
           for (i ; i >= 1 ; i--){
               cout<<"("<<(*(p_koef+i))/(i+1)<<")"<<"*x^"<<i+1<<" + ";
           }
           cout<<"("<<(*(p_koef+i))<<")*x";
           cout<<endl;
           return ;
      }     

     
     
      polynom(){// конструктор
                  EnterN();
                  p_koef=new double [n];// виділяємо місце під пам'ять
                  EnterKoef();                 
      }
      ~polynom(){
               delete(p_koef); // звільнюємо виділену пам'ять
      }
};

int main()
{
    polynom p1; // створюємо поліном, запускається конструктор,
                // який заповлює його
    p1.ShowPoly(); // Показатии введений поліном
    cout<<endl;
    p1.CalculatePoh(); // Вивести похідну
    p1.CalculatePer(); // Вивести первысну
    cout<<endl;
   
    cout<<" |-> CalculatePoly = "<<p1.CalculatePoly(p1.EnterX())<<endl;
    // Функція рахує значення полінома.
    // функція CalculatePoly приймає значення x і повертає рахунок
    // функція EnterX повертає число, яке користувач ввів з клавіатури
   
    system("PAUSE");
    return 0;
}
Аватар користувача
Василь
 
Повідомлень: 907
З нами з: 15 жовтня 2010, 02:08

Re: Програмування

Повідомлення Cherokee » 09 травня 2011, 21:31

Умова задачі: з 1 го в 2й файл потрібно записати текст, але в перевернутому вигляді. Єфіма сказала все реалізувати через функції. Зробив з виводом перевернутого тексту на екран. Програма компілюється, проте тільки виводить на екран перевернутий текст, не записує його в 2-й файл.
Код: Виділити все
#include <stdio.h>
#include <conio.h>
#include <conio.c>
#include <iostream>
using namespace std;
int cilkist(int t,char *buffer1,FILE *f1) //функція читає елементи з 1-го файлу та рахує їх кількість
{
         int c1;
          f1=fopen("D:\\УЧОБА\\op\\С ТА С++\\лаби\\проги\\лаб_5\\file_1.txt","r"); //відкриваємо файл для читання з нього
          while((c1=fgetc(f1))!=EOF) //знаходимо кількість елементів 1-го файлу
         {
         buffer1 [t] = (char)c1;  //робимо елементи типо char
         t++;
         }
         cout << "kilkist elmentiv  " << t << endl;
         fclose(f1); //закриваємо 1-й файл
    return t;
}
/*void zapus(FILE *f2,int c2,char *buffer2,int t)  //функція записує єлементи в 2-й файл
{
      f2=fopen("D:\\УЧОБА\\op\\С ТА С++\\лаби\\проги\\лаб_5\\file_2.txt","w+"); //відкриваємо файл для запису в нього в початок 
     for(int i=t-1;i>=0;i--)
      {
          c2=buffer2[i];
          fprintf(f2,"%c",c2); 
      }
      return;
}*/
void vuvid(char *buffer1,int t)  //функція виводить перевернутий масив на екран
{
        for(int i=1;i<=t;i++) //цикл виводить перевернутий масив
      {
         cout << buffer1[t-i]; //перекидуємо масив
      }
      cout << endl;
}
main(void)

    textbackground (WHITE);
    textcolor (BLACK);
    FILE *f1,*f2;   //декларація вказівників на 1-й та 2-й файли
    int c2; //змінна 2-го файла
    int t=0; //визначимо розмір 1-го файла
    int d=1;
    if ((f1!=NULL)&&(f2!=NULL)) //якщо файли дійсно відкриті то виконуємо операції над ними
    {
      char buffer1[t]; //створюмо буферний масив
      char buffer2[t];  //створюємо масив в який скопіюємо даний
      t = 0;
      t=cilkist(t,buffer1,f1);  //виклик функції котра читає і виводить кількість елементів 1-го файлу
      vuvid(buffer1,t);  //виклик функції виводу перевернутого масиву в методі main
      //zapus(f2,c2,buffer2,t);  //виклик функції запису в методі main
       //fclose(f2); //закриваємо 2-й файл
    }
    fflush(f1); //очищуємо вміст внутрішнього буфера звязаного
    system("PAUSE");
    return 0;
}

Вась зроби будь ласка!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Аватар користувача
Cherokee
 
Повідомлень: 25
З нами з: 12 квітня 2011, 17:17

Re: Програмування

Повідомлення Василь » 10 травня 2011, 22:07

Cherokee написав:Умова задачі: з 1 го в 2й файл потрібно записати текст, але в перевернутому вигляді. Єфіма сказала все реалізувати через функції. Зробив з виводом перевернутого тексту на екран. Програма компілюється, проте тільки виводить на екран перевернутий текст, не записує його в 2-й файл.

Вась зроби будь ласка!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


Код: Виділити все
#include <stdio.h>
#include <conio.h>
//#include <conio.c>
#include <iostream>
using namespace std;
int cilkist(int t,char *buffer1,FILE *f1) //функція читає елементи з 1-го файлу та рахує їх кількість
{
         int c1;
          f1=fopen("pfile_1.txt","r"); //відкриваємо файл для читання з нього
          while((c1=fgetc(f1))!=EOF) //знаходимо кількість елементів 1-го файлу
         {
         buffer1 [t] = (char)c1;  //робимо елементи типо char
         t++;
         }
         cout << "kilkist elmentiv  " << t << endl;
         fclose(f1); //закриваємо 1-й файл
    return t;
}
void zapus(FILE *f2,int c2,char *buffer2,int t)  //функція записує єлементи в 2-й файл
{
     // нам надо переписать файл а не дописать ставим модификатор 'w'
      f2=fopen("file_2.txt","w"); //відкриваємо файл для запису в нього в початок 
     for(int i=t-1;i>=0;i--)
      {
          //-> зачем интить? Будь по проще  c2 - уже нафиг не надо
          //-> c2=buffer2[i];
          //-> ну ты гонишь... а где тут указатели?????
          //-> у тебя такая же ошибка как и ЕФИМЫ. ЗАПОМНИ: Ефима паливный пример на лекциях показала
          //-> ЗАПОМНИ: НЕЛЬЗЯ ШУТИТЬ С ФУНКЦИЯМИ *PRINT* и *SCAN* - ЭТО ТАКАЯ ЖОПА, ЧТО В КОМПЬЮЕТРНОМ АНДЕГРАУНДЕ
          //-> ЭТИ ФУНКЦИИ ХУЖЕ ЧЕМ РБМК — 1000.
          //-> Если ты пишешь что передаешь CHAR значит передавай CHAR а не INT - это грубейшая ошибка
          //-> А глюконутый DevCPP из за такого тебе ТАКИЕ сказочные результаты покажет, что и во сне такого не приснитца
          //-> fprintf(f2,"%c",c2);  сделаем замену
          fprintf(f2,"%c",*(buffer2+i));
         
      }
      fclose(f2); //закриваємо 2-й файл
      return;
}
void vuvid(char *buffer1,int t)  //функція виводить перевернутий масив на екран
{
        for(int i=1;i<=t;i++) //цикл виводить перевернутий масив
      {
         cout << buffer1[t-i]; //перекидуємо масив
      }
      cout << endl;
}
main(void)

//    textbackground (WHITE);
//    textcolor (BLACK);
    FILE *f1,*f2;   //декларація вказівників на 1-й та 2-й файли
    int c2; //змінна 2-го файла
    int t=0; //визначимо розмір 1-го файла
    int d=1;
//-> ТЫ  Ж  ФАЙЛЫ НЕ ОТКРЫЛ!!!! ЕТО НЕ КОРРЕКТНО, потому что они итак не открыты.... т.е. будут возвращать true всегда
    if ((f1!=NULL)&&(f2!=NULL)) //якщо файли дійсно відкриті то виконуємо операції над ними
    {
      //-> char buffer1[t]; //створюмо буферний масив
      char buffer1[1000];
      //-> Мать родная... шо ты тут натворил??? Ты создаешь масив на ноль елементов?! Просто железная логика.... проснись и пой!
      //-> Достаточно обойтись одним буфером
      //-> char buffer2[t];  //створюємо масив в який скопіюємо даний
      //-> нафиг не надо второй буфер!
      //-> Ты ж уже t обнулял....
      t = 0;
      //-> А нафига его обнулять если в него возвратишь результат???
      t=cilkist(t,buffer1,f1);  //виклик функції котра читає і виводить кількість елементів 1-го файлу
      vuvid(buffer1,t);  //виклик функції виводу перевернутого масиву в методі main
      //-> zapus(f2,c2,buffer2,t); собственно, а что ща храниться в buffer2?? по моему - там ничего нету....
      zapus(f2,c2,buffer1,t);  //виклик функції запису в методі main
     
    }
    //-> А нафига??? это не в ту сторону ты же файл закрыл же... в cilkist()  ))
//->    fflush(f1); //очищуємо вміст внутрішнього буфера звязаного
    system("PAUSE");
    return 0;
}
//-> ВЫВОДЫ: програма написана через хитро закрученую жопу, работает еще хуже. Результаты выводит правильные.
//->         когда начал читать - я чесно перепугался, думал не пойму твоей идеи...
//->         Если чесно, тут много лишнего и не совсем правильного - можно было бы по проще....
//->         "За бутылкой пива, что пишу и сам не понимаю..."
//->         Тут в этой проге три метода должно быть кроме main
//->         1) Узнать сколько символов в IN файле
//->         2) выделить память в масиве под файл и считать в него IN файл
//->         3) Записать на оборот в OUT файл
//->         З.Ы. Возможно сущевствование других критических ошибок которые может заметить Ефименко...
//->         Затраченое время 30 мин.
//->         011711052011 Горбаченко В.А.

//->



Не прога - а жах... вже працює... дуже заплутано написано, мало того, немає чіткого алгоритму, не оптимально і не дуже логічно. )) РФФшники не шукають простих шляхів :D
Аватар користувача
Василь
 
Повідомлень: 907
З нами з: 15 жовтня 2010, 02:08

Re: Програмування

Повідомлення Cherokee » 14 травня 2011, 20:52

Код: Виділити все
[b] лаб 4 Для заданої послідовності символів латинськими літерами визначити нову послідовність в якій будуть виведені слова з великої букви до крапки. [/b]
#include <stdio.h> //бібліотека високоорівневого потокоорієнтованого буферизованого введення/виведення даних
#include <conio.c>  //бібліотека опрацьовує інтерфейс екрану
#include <string.h>  //бібліотека для роботи з ділянками оперативної пам’яті і символьними рядками
void MASUV(char *masuv, int t)  //функція виводить елементи масиву
{
char c;  //символьна змінна яка буде виводитись на екран
for(int k=0;k<t;k++)    //цикл проходить по масиву arr
             {             
              if(((*(masuv+k)==' ')&&(*(masuv+k+1)>='a')&&(*(masuv+k+1)<='z')))   //якщо к=й символ "_" а к+1-й сивол мала буква то робимо її великою буквою
                   {
                        c=*(masuv+k+1)+'A'-'a'; //міняємо малу букву на велику букву
                        printf("%c",c); //виводимо на екран
                   }
                   else //інакше якщо буква в середині слова то залишаємо її
                   {   
                       c=*(masuv+k+1);
                       printf("%c",c);
                   }           
             }   
}
int  ved(char *masuv, int p) //метод вводить з клавіатури елементи масиву і перевіряє правиьність латинських літер
{
    char sum;
    while ((sum = getchar()) != '.') //введення з клавіатури
        {       
               *(masuv+p)=sum; ////вказівник на масив
               p++; //втсановлюю розмірність масиву arr
        }
         *(masuv+p)='\0';  //останній елемент рядка =\0
        for(int k=0;k<p;k++) //цикл перевірки правильності символів
         {
                if (((*(masuv+k)>='a')&&(*(masuv+k)<='z'))||((*(masuv+k)>='A')&&(*(masuv+k)<='Z'))||(*(masuv+k)==' '))//перевіряю правильність латинських символів
                {
                 printf("\n%s",masuv); //виводжу всі символи до "."
                }
                else
                {
                p=0;
               printf("vvedit rechenna");
                }
                break; //умова виходу з циклу
         }
         return p;
}
int main (void)
{
    textbackground (WHITE);
    textcolor (BLACK);
    system("CLS");
    int klava;
    printf("vvedit latunski slova\n");
    char arr[80];  //встановлюмо будь яку розмірність масиву
    do
    { 
          strcpy(arr," ");
         char sum;  //символ чарівського типу
        int p=0; //перший елемент = 0
        p=ved(arr,p);
         if (p!=0)  //ознака заповненості масиву
         {   
             printf("\n");     
             char c;  //змінна с визначає символи до крапки
             if (*arr>='a' && *arr <='z')   //якщо перший символ мала латинська літера
             {
                 c=*arr+'A'-'a';  //то робимо його великою латинською літерою
                 printf("%c",c);  // і виводимо його
             }
             else   //інакше
             {
                 c=*arr;   //виводомо власне великий символ
                 printf("%c",c);
             }
            MASUV (arr,p); 
         }
         fflush(stdin); //очищує буфер клавіатури
         printf("\n Dla vuhody natusnit ESK\n"); 
        printf("vvedit latunski slova\n");
        klava = getch ();
        }
    while (klava !=27);  //умова виходу з програми
    system ("PAUSE");//ВИКОНУЄ ЗАТРИМКУ ДЛЯ ВІКНА
    return 0;//ПОВЕРТАЄ ЗНАЧЕННЯ
   :D  :D  :D  :D  :D  :D  :D  :D  :D  :D  :D  :D  :D  :D   
}
Аватар користувача
Cherokee
 
Повідомлень: 25
З нами з: 12 квітня 2011, 17:17

Re: Програмування

Повідомлення Староста » 16 травня 2011, 17:40

Визначити клас, який реалізує бінарне дерево. Передбачити метод включення та виключення елементу із дерева та пошуку елементу по заданому ключу.
Семестр 1. Група 4 => Семестр 2. Група 1. = Карпович Вікторія
Староста
 
Повідомлень: 41
З нами з: 22 вересня 2010, 12:20

Re: Програмування

Повідомлення Староста » 16 травня 2011, 17:40

Визначити клас, який реалізує множину. Визначити методи включення та виключення елементу, а також перевантажити операції додавання (об’єднання множин), множення (переріз множин), віднімання (різниця множин).
Семестр 1. Група 4 => Семестр 2. Група 1. = Карпович Вікторія
Староста
 
Повідомлень: 41
З нами з: 22 вересня 2010, 12:20

Re: Програмування

Повідомлення Василь » 17 травня 2011, 18:56

Шановні, пишіть дату, на коли Вам потрібна програма )) а то складно кидати все і одразу робити....
Аватар користувача
Василь
 
Повідомлень: 907
З нами з: 15 жовтня 2010, 02:08

Поперед.Далі

Повернутись до Питання по домашці

Хто зараз онлайн

Зараз переглядають цей форум: Немає зареєстрованих користувачів і 4 гостей

cron