[ 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. thrust

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

    Joined:
    20 Jul 2011
    Messages:
    50
    Likes Received:
    41
    Reputations:
    31
    cmd>prog.exe name
     
  2. masterlights

    masterlights New Member

    Joined:
    20 Oct 2011
    Messages:
    41
    Likes Received:
    0
    Reputations:
    0
    открыл cmd, ввел DSA.exe Tom, а консоль мне выдаёт "DSA.exe"- не является внутренней или внешней командой...
     
  3. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Ты сначала перейди в директорию, где твоя программа лежит, с помощью команды cd. А потом уже выполняй ее.
     
  4. beard®

    beard® New Member

    Joined:
    20 Aug 2010
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    Вроде решил... Вот что получилось в итоге:

    Code:
    #include"std_lib_facilities.h"
    #include<locale>
    int main()
    {
    	setlocale(LC_ALL,"");
    	cout << "Введите число и единицу измерения(cm, m, in, ft): " << endl;
    	int n = 65535;
    	double val;
    	double max = 0;
    	double min = 0;
    	while(cin>>val)
    	for(int i = 0; i < n; ++i)
    		if(i == 0 && val > max){
    				max = val;
    				min = val;
    		cout << "Максимальное значение среди ранее введенных: " << max << '\n';}
    		else if(i != 0 && val > max){
    			max = val;
    			cout << "Максимальное значение среди ранее введенных: " << max << '\n';}
    		else if(i != 0 && val < min){
    			min = val;
    			cout << "Минимальное значение среди ранее введенных: " << min << '\n';}
    return 0;
    }
    
     
    #7064 beard®, 5 Mar 2012
    Last edited: 6 Mar 2012
  5. MTV

    MTV New Member

    Joined:
    16 Feb 2011
    Messages:
    180
    Likes Received:
    2
    Reputations:
    0
    Ребят, в чем трабла:
    Code:
    #include <stdio.h>
    #include <conio.h>
    void main()
    {
    float a,b,c;
    int d;
    a=10/16;
    d=10%16;
    printf("%2.2f",a);
    printf("%.0f",d);
    getchar();
    }
    Почему остаток 0,когда должно быть 6?И почему в а выводится целое число?
     
  6. R0nin

    R0nin Member

    Joined:
    11 Jul 2010
    Messages:
    261
    Likes Received:
    24
    Reputations:
    8



    1. Числа 10 и 16 целые, и соотвественно после операции (10/16) результат приводится на int.
    2. Остаток не 6, а 10.

    Code:
    #include <stdio.h>
    
    int main() {
    	float a,b,c;
    	int d;
    	[b]a = (float)10 / (float)3;[/b]
    	d = 10 % 16;
    
    	printf("%f\n",a);
    	[b]printf("%d\n",d);[/b]
    
    }
    
    Надеюсь разницу видишь.

    UPD:
    После операции (A%B) если A < B то остаток всегда будет А
     
    #7066 R0nin, 6 Mar 2012
    Last edited: 6 Mar 2012
  7. masterlights

    masterlights New Member

    Joined:
    20 Oct 2011
    Messages:
    41
    Likes Received:
    0
    Reputations:
    0
    как сделать запись входного потока в указатель?

    так не получается:
    cin.get(*str)
     
  8. R0nin

    R0nin Member

    Joined:
    11 Jul 2010
    Messages:
    261
    Likes Received:
    24
    Reputations:
    8
    Code:
    std::cin >> str;
    а память для str надеюсь алокировали?
     
  9. masterlights

    masterlights New Member

    Joined:
    20 Oct 2011
    Messages:
    41
    Likes Received:
    0
    Reputations:
    0
    std::cin >> str; //не подходит т.к. нельзя будет ввести предложение с пробелом

    программа должна возвращать индекс первого обнаруженного вхождения заданной подстроки или -1 если данная строка небыла найдена.

    Code:
    #include "stdafx.h"
    #include <stdio.h>
    #include <iostream>
    using namespace std;
    
    int substr(char *sub, char *str);
    
    int main(char *sub, char *str)
    {
    	cout<<"sub\n"; 
    	cin.get(*sub);[B]//вот тут я пытаюсь ввести слово[/B]
    	cout<<"str\n";
    	cin.getl(*str);[B]//вот тут я пытаюсь ввести предложение[/B]
    
      int index;
      index=substr(sub,str);[B]//и тут я правильно делаю?[/B]
      cout<<"index: "<<index<<endl;
      return 1;
    }
    
    int substr(char *sub, char *str)
    {
    	int i=0;
    	char *p, *p2;
    	for(i=0;str[i];i++)
    	{
    		p=&str[i];
    		p2=sub;
    		while(*p2 && *p2==*p)
    		{
    			p++;
    			p2++;
    		}
    		if(!*p2)
    			return i;
    	}
    	return -1;
    }
    
     
  10. R0nin

    R0nin Member

    Joined:
    11 Jul 2010
    Messages:
    261
    Likes Received:
    24
    Reputations:
    8
    Товарищ, я так понимаю вы понятия не имеете как работать с указателями, а без указателей почти невозможно программировать на C/C++. И тема - "указатели" довольно обширная, поэтому не стану вам здесь все объяснять и сразу скину ссылку, где вы можете прочитать об этом : http://www.codenet.ru/progr/visualc/vc/4.php
     
  11. R0nin

    R0nin Member

    Joined:
    11 Jul 2010
    Messages:
    261
    Likes Received:
    24
    Reputations:
    8
    тогда используйте функцию fgets()
     
  12. masterlights

    masterlights New Member

    Joined:
    20 Oct 2011
    Messages:
    41
    Likes Received:
    0
    Reputations:
    0
    да нет, я знаю как пользоваться указателями, но с вводным потоком столкнулся впервые, поэтому и в замешательстве и пытался реализовать ввод как и с обычными переменными.

    можешь не ссылки кидать, а подсказать по сути?
    и что тебя так смутило? скажи, я для этого и обратился...учусь)
     
  13. R0nin

    R0nin Member

    Joined:
    11 Jul 2010
    Messages:
    261
    Likes Received:
    24
    Reputations:
    8
    Code:
    const int n = 256;
    [b]char *str   = new char[n];[/b]
    
    [b]cin.get(str, n - 1);[/b]
    cout << "Text: " << str << endl;
    
     
  14. masterlights

    masterlights New Member

    Joined:
    20 Oct 2011
    Messages:
    41
    Likes Received:
    0
    Reputations:
    0
    да, ты прав, я не так понял тему указателей и получилась каша в голове(

    теперь правильно написал?
    спасибо, та ссылочка помогла ;)

    и ещё, что такое "new char[n]" ?
     
  15. R0nin

    R0nin Member

    Joined:
    11 Jul 2010
    Messages:
    261
    Likes Received:
    24
    Reputations:
    8
    Оператор new в C++ используется для динамической алокации памяти. Указатель вначале никуда не указывает, но он должен куда-то указывать(на то он и указатель), поэтому с помощью оператора new динамически (во время выполнения программы) занимается память в heap (не stack), в дальнейшем с этой памятью работаешь (в твоем случаи) как с обычным полем, только указываешь на область этой памяти через указатель. После использовании освобождаешь не нужную память с помощью оператора delete


    Занимаем память для 16 байтов (1 char == 1 byte).
    char *str = new char[16];​

    Освобождаем память, на которую указывает указатель str
    delete str;​


    p.s. Радует что поблагодарил, а то некоторые тут даже спасибо не могут написать (невоспитанные что ли). А так - не за что.
     
  16. R0nin

    R0nin Member

    Joined:
    11 Jul 2010
    Messages:
    261
    Likes Received:
    24
    Reputations:
    8
    Code:
    char* sub,* str;
    char subt[80], strt[80];
    cout<<"subt\n";
    cin.getline(subt,[b]79[/b]);
    cout<<"strt\n";
    cin.getline(strt,[b]79[/b]);
    sub=&subt[0];
    str=&strt[0];
    
    Правильно, только про null байт не забудь (код исправил).

    И еще, вместо этого:
    Code:
    sub=&subt[0];
    str=&strt[0];
    можно сразу написать это:
    Code:
    sub = subt;
    str = strt;

    UPD:
    Насчет getline() дополнение - что касается именно этой функции, то можно задать сразу
    Code:
    char subt[80];
    cin.getline(subt,[b]80[/b]);
    в документации пишут :
    если я правильно понял, место для null байта останется. Но не все фукнция себя ведут подобно этой, поэтому всегда нужно вспоминать про этот последний нулевой байт.
     
    #7076 R0nin, 7 Mar 2012
    Last edited: 7 Mar 2012
  17. masterlights

    masterlights New Member

    Joined:
    20 Oct 2011
    Messages:
    41
    Likes Received:
    0
    Reputations:
    0
    блин, шикарно) очень удобно получается) этого в книжке нету)))
    за это ОГРОМНОЕ спасибо)
    удачи ;)
     
  18. masterlights

    masterlights New Member

    Joined:
    20 Oct 2011
    Messages:
    41
    Likes Received:
    0
    Reputations:
    0
     
  19. R0nin

    R0nin Member

    Joined:
    11 Jul 2010
    Messages:
    261
    Likes Received:
    24
    Reputations:
    8
    cin.get(char*, int) тоже учитывает, что есть нулевой байт, я думаю, многие C++ функция работают подобно этой, но есть "опасные" функция от C (не C++), которые часто используются именно в коде C++, поэтому лучше самому не забывать про этот нулевой байт.
     
  20. MTV

    MTV New Member

    Joined:
    16 Feb 2011
    Messages:
    180
    Likes Received:
    2
    Reputations:
    0
    Ребят,помогите.Вот код:
    Code:
    #include <winsock2.h>
    #include <stdio.h>
    #include <windows.h>
    #pragma comment(lib, "Ws2_32.lib")
    void main()
    {
    char buf[1024];
    char bufsend[256] = "GET /index.php HTTP/1.1\nHost:mail.ru\n\n";
    short port;
    WSADATA wsa;
    SOCKET hhsock;
    char lphost[20] ="94.100.191.203";
    SOCKADDR_IN s;
    int size;
    port = 80;
    
    WSAStartup(MAKEWORD(2,0),&wsa);
    
    hhsock = socket(AF_INET,SOCK_STREAM,0);
    
    
    s.sin_port = htons(port);
    s.sin_addr = inet_addr(lphost);//ВОТ НА ЭТУ СТРОЧКУ РУГАЕТСЯ
    s.sin_family = AF_INET;
    
    size = sizeof(s);
    
    Connect(hhsock,&s,&size);
    
    send(hhsock,bufsend,sizeof(bufsend),0);
    recv(hhsock,buf,sizeof(buf),0);
    
    closesocket(hhsock);
    WSACleanup();
    
    printf(buf);
    getchar();
    }
    Ругается на 23 строчку,я там ее отметил.Все никак не могу разобраться.
     
Thread Status:
Not open for further replies.