открыл cmd, ввел DSA.exe Tom, а консоль мне выдаёт "DSA.exe"- не является внутренней или внешней командой...
Ты сначала перейди в директорию, где твоя программа лежит, с помощью команды cd. А потом уже выполняй ее.
Вроде решил... Вот что получилось в итоге: 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; }
Ребят, в чем трабла: 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?И почему в а выводится целое число?
Числа 10 и 16 целые, и соотвественно после операции (10/16) результат приводится на int. Остаток не 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 то остаток всегда будет А
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; }
Товарищ, я так понимаю вы понятия не имеете как работать с указателями, а без указателей почти невозможно программировать на C/C++. И тема - "указатели" довольно обширная, поэтому не стану вам здесь все объяснять и сразу скину ссылку, где вы можете прочитать об этом : http://www.codenet.ru/progr/visualc/vc/4.php
да нет, я знаю как пользоваться указателями, но с вводным потоком столкнулся впервые, поэтому и в замешательстве и пытался реализовать ввод как и с обычными переменными. можешь не ссылки кидать, а подсказать по сути? и что тебя так смутило? скажи, я для этого и обратился...учусь)
Code: const int n = 256; [b]char *str = new char[n];[/b] [b]cin.get(str, n - 1);[/b] cout << "Text: " << str << endl;
да, ты прав, я не так понял тему указателей и получилась каша в голове( теперь правильно написал? спасибо, та ссылочка помогла и ещё, что такое "new char[n]" ?
Оператор new в C++ используется для динамической алокации памяти. Указатель вначале никуда не указывает, но он должен куда-то указывать(на то он и указатель), поэтому с помощью оператора new динамически (во время выполнения программы) занимается память в heap (не stack), в дальнейшем с этой памятью работаешь (в твоем случаи) как с обычным полем, только указываешь на область этой памяти через указатель. После использовании освобождаешь не нужную память с помощью оператора delete Занимаем память для 16 байтов (1 char == 1 byte). char *str = new char[16]; Освобождаем память, на которую указывает указатель str delete str; p.s. Радует что поблагодарил, а то некоторые тут даже спасибо не могут написать (невоспитанные что ли). А так - не за что.
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 байта останется. Но не все фукнция себя ведут подобно этой, поэтому всегда нужно вспоминать про этот последний нулевой байт.
cin.get(char*, int) тоже учитывает, что есть нулевой байт, я думаю, многие C++ функция работают подобно этой, но есть "опасные" функция от C (не C++), которые часто используются именно в коде C++, поэтому лучше самому не забывать про этот нулевой байт.
Ребят,помогите.Вот код: 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 строчку,я там ее отметил.Все никак не могу разобраться.