Re: Неправильно работает прога(C++)help---
От: chp Россия  
Дата: 25.01.05 06:21
Оценка: -1 :))
Здравствуйте, _Tonic_MC_, Вы писали:

_T_>короче чайник, я, пытаеться написать нормальнуюю программу, ну и вот, нужна HELP

_T_>J_send 2.0
_T_>программа на Visual C++ для отсылки сообщений по сети
Неплохо бы Вам научиться писать по русски и внятно формулировать свои мысли, а уж потом пытаться писать программы.
_T_>код:

_T_>попробуйте сами и посмотрите что происходит после GOTO LAB1;

_T_>он запоминает name и не даёт его вводить, программа может нормально сработать только 1 раз, потом жо*а!!!! Как такое исправить? Может строковые данные обнулить, тогда как???
Может и обнулить,только сперва почитайте книги умные. А что делала программа J_send 1.0?
Неправильно работает прога(C++)help---
От: _Tonic_MC_  
Дата: 24.01.05 18:14
Оценка: :))
короче чайник, я, пытаеться написать нормальнуюю программу, ну и вот, нужна HELP
J_send 2.0
программа на Visual C++ для отсылки сообщений по сети

код:



#include<iostream.h>
#include<string.h>
#include<windows.h>

void main(){
    lab1:
    int kol,i;
    char all[255]="net send";
    char p[2]=" ";
    char name[50];
    char text[255];
    char an1;
    system("cls");
    cout<<"          ******************************************************** \n";
    cout<<"          *                                                      * \n";

    cout<<"          *                                                      * \n";
    cout<<"      *         THIS IS J_SEND v 2.0 MADE ON VISUAL C++      * \n";
    cout<<"          *                                                      * \n";
    cout<<"      *                       BY ! TONIC !                   * \n";
    cout<<"          *                                                      * \n";
    cout<<"      *                  CopyRright_TONIC_2005               * \n";
    cout<<"          *                                                      * \n";
    cout<<"      *                     mc-tonic@mail.ru                 * \n";
    cout<<"          *                                                      * \n";
    cout<<"          ******************************************************** \n";
    cout<<"\n\n\n";
    cout<<" Vvedite poluchatelya J_soobsheniya: ";
    cin.getline(name,255);
    cout<<"\n Vvedite text J_soobsheniya:       ";
    cin.getline(text,255);
    cout<<"\n Skolko raz otpravlyat soobshnie?  ";
    cin>>kol;
    strcat(all,p);
    strcat(all,name);
    strcat(all,p);
    strcat(all,text);
    for (i=0;i<kol;i++) {
    system(all);
    }
    system("cls");
    cout<<"\t\t\t Xotite otpravit eshe odno soobshenie??? (Y/N) ";
    cin>>an1;
q1:
    switch(an1){
    case 'Y':
        goto lab1;
    case 'y':
        goto lab1;
    case 'N':
        break;
    case 'n':
        break;
    default:
        goto q1;
    }
}



проблема:


попробуйте сами и посмотрите что происходит после GOTO LAB1;
он запоминает name и не даёт его вводить, программа может нормально сработать только 1 раз, потом жо*а!!!! Как такое исправить? Может строковые данные обнулить, тогда как???

OK!THANKS!HELP 2PAC 4EVER

27.01.05 07:22: Перенесено модератором из 'C/C++' — Павел Кузнецов
Re[2]: Неправильно работает прога(C++)help---
От: Vamp Россия  
Дата: 25.01.05 09:47
Оценка: :))
Ошибка в программе. Это же новый major release! Версия 3.0.
Да здравствует мыло душистое и веревка пушистая.
Re: Неправильно работает прога(C++)help---
От: Аноним  
Дата: 25.01.05 08:23
Оценка: :)
В общем тебе надо избавляться от goto и читать про строки в C++.

А особенно меня порадовал Copyright
и то что это уже версия 2.0

P.S. Не обижайся. Я по-доброму
Re: Неправильно работает прога(C++)help---
От: Eduard-x Германия www.ruforum.de
Дата: 25.01.05 05:59
Оценка:
Здравствуйте, _Tonic_MC_, Вы писали:

_T_> system("cls");

_T_> cout<<"\t\t\t Xotite otpravit eshe odno soobshenie??? (Y/N) ";
cin>>>an1;
_T_>q1:
_T_> switch(an1){
_T_> case 'Y':
_T_> goto lab1;
_T_> case 'y':
_T_> goto lab1;
_T_> case 'N':
_T_> break;
_T_> case 'n':
_T_> break;
_T_> default:
_T_> goto q1;
_T_> }
_T_>}
_T_>[/ccode]
это что за приколы? а если ни один из вариантов не прокатит, программа цикланётся на фиг.

кто тебя учил с GOTO делать? бейсику в школе учили чтоли?
не хочешь больших проблем в светлом будущем — забудь про гоуту.
Re: Неправильно работает прога(C++)help---
От: Аноним  
Дата: 25.01.05 06:06
Оценка:
Здравствуйте, _Tonic_MC_, Вы писали:

_T_>короче чайник, я, пытаеться написать нормальнуюю программу, ну и вот, нужна HELP

_T_>J_send 2.0
_T_>программа на Visual C++ для отсылки сообщений по сети

_T_>код:



_T_>

_T_>#include<iostream.h>
_T_>#include<string.h>
_T_>#include<windows.h>

_T_>void main(){
_T_>    lab1:
_T_>    int kol,i;
_T_>    char all[255]="net send";
_T_>    char p[2]=" ";
_T_>    char name[50];
_T_>    char text[255];
_T_>    char an1;
_T_>    system("cls");
_T_>    cout<<"          ******************************************************** \n";
_T_>    cout<<"          *                                                      * \n";

_T_>    cout<<"          *                                                      * \n";
_T_>    cout<<"      *         THIS IS J_SEND v 2.0 MADE ON VISUAL C++      * \n";
_T_>    cout<<"          *                                                      * \n";
_T_>    cout<<"      *                       BY ! TONIC !                   * \n";
_T_>    cout<<"          *                                                      * \n";
_T_>    cout<<"      *                  CopyRright_TONIC_2005               * \n";
_T_>    cout<<"          *                                                      * \n";
_T_>    cout<<"      *                     mc-tonic@mail.ru                 * \n";
_T_>    cout<<"          *                                                      * \n";
_T_>    cout<<"          ******************************************************** \n";
_T_>    cout<<"\n\n\n";
_T_>    cout<<" Vvedite poluchatelya J_soobsheniya: ";
_T_>    cin.getline(name,255);
_T_>    cout<<"\n Vvedite text J_soobsheniya:       ";
_T_>    cin.getline(text,255);
_T_>    cout<<"\n Skolko raz otpravlyat soobshnie?  ";
    cin>>>kol;
_T_>    strcat(all,p);
_T_>    strcat(all,name);
_T_>    strcat(all,p);
_T_>    strcat(all,text);
_T_>    for (i=0;i<kol;i++) {
_T_>    system(all);
_T_>    }
_T_>    system("cls");
_T_>    cout<<"\t\t\t Xotite otpravit eshe odno soobshenie??? (Y/N) ";
    cin>>>an1;
_T_>q1:
_T_>    switch(an1){
_T_>    case 'Y':
_T_>        goto lab1;
_T_>    case 'y':
_T_>        goto lab1;
_T_>    case 'N':
_T_>        break;
_T_>    case 'n':
_T_>        break;
_T_>    default:
_T_>        goto q1;
_T_>    }
_T_>}
_T_>



_T_>проблема:


_T_>

_T_>попробуйте сами и посмотрите что происходит после GOTO LAB1;
_T_>он запоминает name и не даёт его вводить, программа может нормально сработать только 1 раз, потом жо*а!!!! Как такое исправить? Может строковые данные обнулить, тогда как???

_T_>OK!THANKS!HELP 2PAC 4EVER
Re: Неправильно работает прога(C++)help---
От: Аноним  
Дата: 25.01.05 06:25
Оценка:
Здравствуйте, _Tonic_MC_, Вы писали:

_T_>короче чайник, я, пытаеться написать нормальнуюю программу, ну и вот, нужна HELP

_T_>J_send 2.0
_T_>программа на Visual C++ для отсылки сообщений по сети
_T_>код:

Не буду злорадствовать, но...
1. Прочтите хотя бы первые несколько глав по С++. Вредность "goto " даже в данном случае очевидна
2. Для оптимальной работы можно организовать что-то вроде глобального цикла while...do с проверкой на наличие кода выхода
3. switch и case можно убрать совсем, в данном случае они мало полезны...if-ми можно обойтись
4.
cin.getline(name,255);

почему 255? А здесь

char name[50];


только 50?
Re: Неправильно работает прога(C++)help---
От: ddanila Россия  
Дата: 25.01.05 08:29
Оценка:
Если нужно готовое и рабочее решение, то вот:

#include <iostream>

void printBanner()
{
  std::cout<<"          ******************************************************** \n";
  std::cout<<"          *                                                      * \n";
  std::cout<<"          *                                                      * \n";
  std::cout<<"          *         THIS IS J_SEND v 2.0 MADE ON VISUAL C++      * \n";
  std::cout<<"          *                                                      * \n";
  std::cout<<"          *                       BY ! TONIC !                   * \n";
  std::cout<<"          *                                                      * \n";
  std::cout<<"          *                  CopyRright_TONIC_2005               * \n";
  std::cout<<"          *                                                      * \n";
  std::cout<<"          *                     mc-tonic@mail.ru                 * \n";
  std::cout<<"          *                                                      * \n";
  std::cout<<"          ******************************************************** \n";
}

int main()
{
    std::string strName, strText, strCommand;
    char chrAnswer;
    int iTimes;

    for(;;)
    {
      system("cls");
      printBanner();
      std::cout<<"\n\n\n";
      std::cout<<" Vvedite poluchatelya J_soobsheniya: ";

      std::getline(std::cin, strName);
      std::cout<<"\n Vvedite text J_soobsheniya:       ";
      std::getline(std::cin, strText);
      std::cout<<"\n Skolko raz otpravlyat soobshnie?  ";
      std::cin>>iTimes;

      strCommand = "net send " + strName + " " + strText;

      for(int i = 0; i < iTimes; ++i)
        system(strCommand.c_str());

      system("cls");
      std::cout<<"\t\t\t Xotite otpravit eshe odno soobshenie??? (Y/N) ";
      std::cin>>chrAnswer;

      if('n' == tolower(chrAnswer))
        break;
    } // main loop
}


А объяснять, в чём проблемы в Вашем коде — действительно долго, тут лучше почитать книжки.
Re[3]: Неправильно работает прога(C++)help---
От: Аноним  
Дата: 25.01.05 11:01
Оценка:
Здравствуйте, Vamp, Вы писали:

V>Ошибка в программе. Это же новый major release! Версия 3.0.


Вообще-то это модификация исходного кода,
который защищен копирайтом.
Скажем честно. Это преступление!!!
Re[4]: Неправильно работает прога(C++)help---
От: ZeusSon  
Дата: 25.01.05 11:36
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Vamp, Вы писали:


V>>Ошибка в программе. Это же новый major release! Версия 3.0.


А>Вообще-то это модификация исходного кода,

А>который защищен копирайтом.
А>Скажем честно. Это преступление!!!

ХОоооотел был я посмотреть на лиц. соглашение и количество купивших сей ген. продукт.
Интересно, откуда автор Топика такую модную шапку с копиРайтом выдрал? Может мне терь нельзя частями его кода пользоваться. Я даже затосковал... Как же я без ГовТу (не хватает the подальше)
Re: Неправильно работает прога(C++)help---
От: ZeusSon  
Дата: 27.01.05 09:34
Оценка:
Здравствуйте, _Tonic_MC_, Вы писали:

_T_>короче чайник, я, пытаеться написать нормальнуюю программу, ну и вот, нужна HELP

_T_>J_send 2.0
_T_>программа на Visual C++ для отсылки сообщений по сети

_T_>код:


....
_T_> char name[50];
..
_T_> char an1;
....
_T_> cout<<" Vvedite poluchatelya J_soobsheniya: ";
_T_> cin.getline(name,255);

_T_> cout<<"\t\t\t Xotite otpravit eshe odno soobshenie??? (Y/N) ";

cin>>>an1;
.....
_T_>[/ccode]


_T_>проблема:


_T_>

_T_>попробуйте сами и посмотрите что происходит после GOTO LAB1;
_T_>он запоминает name и не даёт его вводить, программа может нормально сработать только 1 раз, потом жо*а!!!! Как такое исправить? Может строковые данные обнулить, тогда как?

Значит ситуация следующая.
Этот код — можно показывать для примера как НЕ НАДО ПИСАТЬ (ты это уже и так думаю понял с коментариев на задачу.
Но, буду действительно отвечать на вопрос, а не комментировать то, как реализовано программу.
Я в коде оставил ключевые строчки. По ним можно посмотреть в чем тут ОСНОВНЫЕ проблемы.
1. В name ты читаешь 255 символов, хотя размер твоего блока — 50. Тут возможны ТАКИЕ глюки, что даже представить трудно. Но! Поставленная тобой проблема не в этом!
2.Ты читаешь в an1 символ. При окончании ввода нажимаешь Энтер. (это значит, что с потока ты считал 1 символ, а в потоке остался '\n'. Если почитать, что же делает getline(), то можно обнаружить, что она читает символы пока:
1. Количество запрошенных символов > чем в потоке.
2. Встретился '\n'.
Как ты понимаешь, после считывания an1 остался такой символ в потоке, поэтому, наверно, и getline() спокойно завершается, оставив тебе пустую строку.

Ось так, напевне все і відбувається.

P.S. А лучше почитай главу подальше, там где есть циклы — жизнь станет проще.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.