[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. z01b

    z01b Муджахид

    Joined:
    5 Jan 2007
    Messages:
    494
    Likes Received:
    382
    Reputations:
    22
    Integrated Development Environment = ИДЕ aka IDE
    Если был бы Borland C++, мог бы юзать TStringList, поэтому и спросил.
     
  2. Doom123

    Doom123 Elder - Старейшина

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    Ток сёдня начал учить c++)

    написал пары выводов и вводов ну в общем вот

    Code:
    #include <iostream>
    using namespace std;
    
    int main()
    {
     int vibor;
    
     cout <<"Vvedite vash vibor\n";
     cin >>vibor;
    
     if(vibor==1)
     {
      int visota, osnovanie, ploshad;
      cout <<"Visota treugolnika\n";
      cin >>visota;
      
      cout <<"Osnovanie treugolnika\n";
      cin >>osnovanie;
      
      ploshad = (visota * osnovanie) / 2;
      
      cout <<"Ploshad:" <<ploshad  <<"\n" <<endl;
      
      system("PAUSE");
    
      return 0;
     } 
    
     if(vibor == 2)
     {
      int funt;
      float kilo;
      
      cout <<"Kolichestvo funtov?\n";
      cin >>funt;
      
      kilo = funt * 0.4095124;
      cout <<"V kilogramah:" <<kilo <<"kg\n" <<endl ;
      
      system("PAUSE");
      return 0;
     }
    	
      cout <<endl;
      return 0;
    
    }
    
    У меня она работает а на соседем компе нет.
    В чём моя ошибка? даже если засунуть в сетевую папку нвходяшиюся на другом копе и запустить то всёравно не запускаеца...
     
    #1202 Doom123, 14 Jun 2008
    Last edited: 14 Jun 2008
  3. Delimiter

    Delimiter Banned

    Joined:
    8 Apr 2005
    Messages:
    317
    Likes Received:
    173
    Reputations:
    12
    компилировал и линковал в дебаг моде поэтому дебаг dll-ки отсутствуют

    .... нужно в конечном итоге перелинковать в релиз моде, если хочешь чтоб програмка использовала только стандартные dll-ки
     
    #1203 Delimiter, 14 Jun 2008
    Last edited: 14 Jun 2008
  4. Fata1ex

    Fata1ex Elder - Старейшина

    Joined:
    12 Dec 2006
    Messages:
    703
    Likes Received:
    300
    Reputations:
    38
    Code:
    <<"\n" <<endl;
    к чему это?
     
  5. Doom123

    Doom123 Elder - Старейшина

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    Fata1ex ну \n это перевод строки а <<endl конец строки и очистка буфера=)

    Delimiter ой думал я в релиз моде а я посто делал релиз и нажимал зелёную кнопку ипа плей(start debugging)

    vc++ 2005
     
    #1205 Doom123, 14 Jun 2008
    Last edited: 14 Jun 2008
  6. _empty

    _empty Elder - Старейшина

    Joined:
    22 Mar 2008
    Messages:
    62
    Likes Received:
    17
    Reputations:
    5
    Наверно на другом компе sp1 винда, по умолчанию exe-шник компилится со стандартными библиотеками windows, и в sp1 много чего не хватает, поэтому может появляться ошибка, тогда можно сделать так - Project->Properties , там на вкладке General есть пункт - "Use of MFC" , выбирай Use in Static library , после этого у тебя прога потяжелеет кило на 200-300, точна не считал, но точна уже запуститься, хоть на Windows 2000.
     
  7. procedure

    procedure Elder - Старейшина

    Joined:
    22 Dec 2007
    Messages:
    527
    Likes Received:
    257
    Reputations:
    46
    ((( не смог сам сделать гистограмму на С. Помогите плиз.
    Code:
    #include <stdio.h>
    /*program for copy input string to output string, in this programm here 
    	edit symbol tab and backspace for input \\ */
    main()
    {
    	int c, t, space, n, i, l, z, h;
    	char array[100], nl;
    	c = t = space = n = 0;
    	
    	
    	for (i = 0; i < 100; ++i) {
    		array[i] = 0;
    	}
    	nl = '\\';
    	for(i=0;(array[i]=(char )getchar())!=EOF;i++)
    	{
    		if(array[i]=='\t') {
    			array[i]=nl;
    			++t; 
    		}
    		if(array[i]=='\b') {
    			array[i]=nl;
    		}
    		if(array[i]>='0' && array[i]<='9') {
    			n++; 
    		}
    		if(array[i]==' ') {
    			space++; 
    		}
    		if(array[i]=='\n') {
    			array[i] = 0;
    			printf(" _\n");
    			for (z=0; z<i; ++z) {
    				if (array[z] == ' ') {
    					printf(" _\n");
    				}
    				else {
    					printf("| |\n");
    				}
    			}
    			printf("\nSymbol:\n%s\r\n", array); 
    			printf("\nTab:%d", t);
    			printf("\nSpace:%d", space);
    			printf("\nNumber:%d\n", n);
    			break;
    		}
    	}
    }
     
  8. Delimiter

    Delimiter Banned

    Joined:
    8 Apr 2005
    Messages:
    317
    Likes Received:
    173
    Reputations:
    12
    почему ты не даешь циклу нормально работать???

    Вывод результатов нужно делать ПОСЛЕ работы цикла! А иначе получается ты пытаешься
    выводить каждый раз когда нажимаешь Enter, как же в таком случае ты посчитаешь сколько раз он нажат. Если его не нужно считать и он должен завершать ввод, то просто

    for(i=0;(array=(char )getchar())!='\n';i++)

    и внизу в цикле не нужно ничего пихать в массив(вместо табуляции), только считай повторы
    поскольку ты пихаешь каждый символ уже

    for(i=0;(array=(char )getchar())!='\n';i++)
    тут_______/

    и это чего должно делать?
    Code:
    			for (z=0; z<i; ++z) 
                            {
    				if (array[z] == ' ')
                                    {
    					printf(" _\n");
    				}
    				else {
    					printf("| |\n");
    				}
    			}
    
    если это гистограмма то почему ты не используешь уже вычесленные n,space,t?
    загоняй в for
    типа
    Code:
     for(i=0;i<space;i++)
       printf('=');
     printf("\r\n");
           
    одна линейка готова


    Если же ты хочешь выходить все таки по EOF то...
    Code:
    #include <stdio.h>
    /*program for copy input string to output string, in this programm here 
    	edit symbol tab and backspace for input \\ */
    main()
    {
    	int c, t, space, n, i, l, z, h;
    	char array[100], nl;
    	c = t = space = n = 0;
    	
    	
    	for (i = 0; i < 100; ++i) {
    		array[i] = 0;
    	}
    	nl = '\\';
    	for(i=0;(array[i]=(char )getchar())!=EOF;i++)
    	{
    		if(array[i]=='\t') {
    			array[i]=nl;  \\ непонятная замена
    			++t; 
    		}
    		if(array[i]=='\b') {
    			array[i]=nl; \\ непонятная замена
    		}
    		if(array[i]>='0' && array[i]<='9') {
    			n++; 
    		}
    		if(array[i]==' ') {
    			space++; 
    		}
    		if(array[i]=='\n') {
    			array[i] = 0;
    			printf(" _\n");
    
    	                for(z=0;z<space;z++)
                              printf('=');
                            printf("spaces\r\n");
    
    	                for(z=0;z<n;z++)
                              printf('=');
                            printf("numbers\r\n");
    
    	                for(z=0;z<t;z++)
                              printf('=');
                            printf("tabs\r\n");
    
    			   printf("\nSymbol:%s\r\n", array); 
    			   printf("\nTab:%d\r\n", t);
    			   printf("\nSpace:%d\r\n", space);
    			   printf("\nNumber:%d\r\n", n);
                           
                            // и главное сбрасывай счетчик i
                            // иначе в твоем исполнении опасно!!!
                            i=0; //!!!!!!!!!!!!!!!!!!!!!!!
    
                            // хотя этот break тебе и не даст 8)))
                            // но УЧИСЬ сбрасывать счетчики чтоб
                            // заработал EOF
    			// break; УБИРАЕМ ЭТО!!!!
                           // получится что статистика выводится только
                           // при нажатии Ентера
                           // значит нужно снова обнулить
                           c = t = space = n = 0;
    		}
    	}
    }
     
    #1208 Delimiter, 16 Jun 2008
    Last edited: 16 Jun 2008
  9. Fata1ex

    Fata1ex Elder - Старейшина

    Joined:
    12 Dec 2006
    Messages:
    703
    Likes Received:
    300
    Reputations:
    38
    А разве endl; не переводит на новую строку ? о_О
     
  10. procedure

    procedure Elder - Старейшина

    Joined:
    22 Dec 2007
    Messages:
    527
    Likes Received:
    257
    Reputations:
    46
    Delimiter-> что то плохо все понял, пива сегодня немного перепил. Единственное что ярко понял, это делать вывод после работы цикла, а гистограмма нужна которая показывает длинну слов в виде гистограммы.
    А по поводу EOF это я вобще не знаю, что за прикол. Это выход из цикла когда нажимаешь Esc?
    Я ко всем примерам из учебника, добавляю '\n' потому что не знаю как без Entera выйти из программы.

    Отлично, я теперь все понял. Нужно делать гистограмму горизонтальной. А я хотел сделать ее вертикальной, и у меня не получалось.
     
    #1210 procedure, 16 Jun 2008
    Last edited: 16 Jun 2008
  11. _empty

    _empty Elder - Старейшина

    Joined:
    22 Mar 2008
    Messages:
    62
    Likes Received:
    17
    Reputations:
    5
    EOF - это End Of File ( конец файла )

    А смысл и правда \n добавлять?? либо endl либо \n . Что б понятней было переформатировать.
     
  12. Forcer

    Forcer Elder - Старейшина

    Joined:
    12 Apr 2007
    Messages:
    321
    Likes Received:
    98
    Reputations:
    12
    лучше endl.
     
  13. _empty

    _empty Elder - Старейшина

    Joined:
    22 Mar 2008
    Messages:
    62
    Likes Received:
    17
    Reputations:
    5
    Если вывод делаешь через стандартный класс iostreаm и его предков и потомков, то конечно нужно использовать endl

    А если вывод делаешь по С (функция printf и ей подобные), то лучше кроме как \n ничего не получится

    просто я больше сишные люблю, привык к синтаксису, а у iostream команды управления вводом/выводом для cin/cout плохо знаю :) Но здесь как говориться, кому что нравиться
     
  14. Delimiter

    Delimiter Banned

    Joined:
    8 Apr 2005
    Messages:
    317
    Likes Received:
    173
    Reputations:
    12
    printf (и ее клоны) - это мощная команда кто умеет пользоваться форматами , даже само сравнение не коректно! Моська и слон!
     
  15. _empty

    _empty Elder - Старейшина

    Joined:
    22 Mar 2008
    Messages:
    62
    Likes Received:
    17
    Reputations:
    5
    Друг, ты немного ошибаешься, iostream тоже имеет много очень параметров, я нашел
    http://valera.asf.ru/cpp/book/c20.shtml

    Просто огромный мануал по библиотеке iostream , она ничуть не хуже чем printf и его семейство :)

    Просто привык к С , вот и пользуюсь printf , а некоторые друзья iostream, вот и все
     
  16. Delimiter

    Delimiter Banned

    Joined:
    8 Apr 2005
    Messages:
    317
    Likes Received:
    173
    Reputations:
    12
    извините .... что ошибся в вашей оценке мощности операторов >> << :D

    напиши то же что и ниже с помощью твоих операторов и сравним!

    float d=5,564632;
    printf("%.2f",d);


    ....вывести именно 2 знака после запятой
     
    #1216 Delimiter, 17 Jun 2008
    Last edited: 17 Jun 2008
    1 person likes this.
  17. Fata1ex

    Fata1ex Elder - Старейшина

    Joined:
    12 Dec 2006
    Messages:
    703
    Likes Received:
    300
    Reputations:
    38
    У каждого варианта есть свои преимущества и недостатки. Как вообще можно сравнивать потоковый вывод и printf ?
    И мне почему-то кажется что потоковы намного лучше, гораздо больше возможностей.
    Delimiter -
    streamsize precision(streamsize p);
    p - количество знаков после запитой.

    -> cout.precision(10);

    Или я не понял - вы про перегруженные операторы сдвига или про потоковый ввод - вывод? операторы так же можно самим перегрузить так чтобы выводилось заданное колво знаков после запятой.
    П.С.
    если делать все через манипуляторы - мона написать так -
    setprecision(int p); - работает аналогично
     
    #1217 Fata1ex, 17 Jun 2008
    Last edited: 17 Jun 2008
  18. Forcer

    Forcer Elder - Старейшина

    Joined:
    12 Apr 2007
    Messages:
    321
    Likes Received:
    98
    Reputations:
    12
    код с потоками, ко всему прочему, ещё гораздо нагляднее и читабельнее. Плюс, поток он же все-таки поток!!! - он сам по себе гораздо более функциональная и удобная вещь.
     
  19. Fata1ex

    Fata1ex Elder - Старейшина

    Joined:
    12 Dec 2006
    Messages:
    703
    Likes Received:
    300
    Reputations:
    38
    И вообще - зачем было делать аналог, менее удобный нежели его предшественник. Нелогично.
     
    #1219 Fata1ex, 17 Jun 2008
    Last edited: 17 Jun 2008
  20. Delimiter

    Delimiter Banned

    Joined:
    8 Apr 2005
    Messages:
    317
    Likes Received:
    173
    Reputations:
    12
    ну вот что и требовалось доказать в одну строчку вы не уложились 8)))))
    разговоров нет..... хотите 2ве - это ваше право..... и не пытайтесь запихнуть 2 оператора на одну строку 8))))))))))) хотите набирать больше символов ручками?

    Нравится абстрактное понятие поток??? 8)))) Прямо таки и льется??? Волнами???? Голубенький или всетаки коричневый??? 8))))))))) Вас дурят мужики .... ЛОЖКИ НЕТ!

    ... по поводу курицы и яйца, загляните в кернеловские функции и будете удивлены встретив там аналоги printf!
     
    #1220 Delimiter, 17 Jun 2008
    Last edited: 17 Jun 2008
Thread Status:
Not open for further replies.