C++的一个问题,求助大神

设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。
template
class Queue//循环队列
{
public:
Queue()
{//构造空队列
maxSize = MAX_PASS_SIZE + 1;
queue = new T[maxSize];
front = rear = 0;
}
~Queue() { delete[]queue; }
bool isEmpty()
{//判断队列是否为空
return front == rear;
}
bool isFull()
{//判断队列是否满
if ((rear + 1) % maxSize == front) return true;
else return false;
}
T first()
{//返回对首元素
if (isEmpty())cout << "队列为空" << endl;
else return queue[(front + 1) % maxSize];

}
T last()
{//返回队尾元素
if (isEmpty())cout << "队列为空" << endl;
else return queue[rear];
}
Queue&push(T &x)
{//入队
if (isFull()) cout << "队列已满" << endl;
else
{
queue[rear] = x;
rear = (rear + 1) % maxSize;

}return *this;
}
Queue&pop(T &x)
{//出队
if (isEmpty())cout << "队列为空" << endl;
else
{
x = queue[front];
front = (front + 1) % maxSize;

}return *this;
}
//private:
int front;//队首
int rear;//队尾
int maxSize;//队列大小
T*queue;
};

template
class Stack
{
public:
Stack()
{//构造空栈
maxTop = MAX_PARKING_SIZE - 1;
stack = new T[MAX_PARKING_SIZE];
top = -1;
}
~Stack() { delete[]stack; }
bool isEmpty()
{//判断栈是否为空
return top == -1;
}
bool isFull()
{//判断栈是否满
return top == maxTop;
}
T getTop()
{//返回栈顶元素
if (isEmpty()) cout << "栈为空" << endl;
else return stack[top];
}
Stack&push(T &x)
{//入栈
if (isFull()) cout << "栈已满" << endl;
else
{
top++;
stack[top] = x;
}
return *this;
}
Stack&pop(T &x)
{//出栈
if (isEmpty())cout << "栈为空" << endl;
else
{
x = stack[top];
top--;

}
return *this;
}
//private:
int top;//栈顶
int maxTop;//最大栈顶值
T*stack;//动态数组存储元素
};

#include
#include
#include"stack.h"
#include"queue.h"
using namespace std;
const int MAX_PARKING_SIZE = 5;
const int MAX_PASS_SIZE = 5;
class Car
{
public:

void createArriveCar()
{
cout << "请输入车牌号:";
cin >> carNumber;
status = true;
cout << "请输入到达的时间:";
cin >> hour >> minute;
}
void createLeaveCar()
{
cout << "请输入车牌号:";
cin >> carNumber;
status = false;
cout << "请输入离开的时间:";
cin >> hour >> minute;
}
void print()
{
if (status)
cout << "车牌号:" << carNumber << " 到达时间" << hour << ":" << minute << endl;
else cout << "空" << endl;

}
string carNumber;//车牌号
int hour;
int minute;//到达的时间
bool status = false;//true代表进入停车场,false代表出停车场

};
class Parking
{
public:
void carArrive(Car car)
{
if (!parkingStack.isFull())
{
parkingStack.push(car);
cout << "车辆进入停车场,在停车场的位置为:" << parkingStack.top + 1 << endl;
}
else if (parkingQueue.isFull())
cout << "停车场和通道中都没有位置" << endl;
else if (parkingStack.isFull())
{
parkingQueue.push(car);
cout << "停车场已满,车辆进入等待通道,在通道中的位置为:" << parkingQueue.rear << endl;
}
}
void carLeave(Car car)
{
Car leaveCar;
Car temporaryCar;
int time;//以分钟记的停留时间
double money;//收费
Stack temporaryStack; //临时栈
while (car.carNumber != parkingStack.getTop().carNumber)
{
parkingStack.pop(leaveCar);
temporaryStack.push(leaveCar);
if (parkingStack.isEmpty())
{
cout << "车站中没有这辆车" << endl;
break;
}

}
if (!parkingStack.isEmpty())
{
parkingStack.pop(leaveCar);
time = (car.hour - leaveCar.hour) * 60 + (car.minute - leaveCar.minute);
money = time * 1;
cout << "离开的车辆在停车场里停留了" << time << "分钟,需付费用:" << money << endl;
}

while (!temporaryStack.isEmpty())
{
temporaryStack.pop(temporaryCar);
parkingStack.push(temporaryCar);
}

while (!parkingStack.isFull() && !parkingQueue.isEmpty())//在通道中的车辆进入停车场,时间改为进入的时间
{
parkingQueue.pop(temporaryCar);
temporaryCar.hour = car.hour;
temporaryCar.minute = car.minute;
parkingStack.push(temporaryCar);
}

}
void listshow()
{
for (int i = 0; i<MAX_PARKING_SIZE; i++)
{

cout << "第" << i + 1 << "号停车位:";
parkingStack.stack[i].print();

}
}
private:
Stack parkingStack;
Queue parkingQueue;
};
int main()
{
Parking parking;
int option;
while(1)
{
try {
cout << "欢迎使用本停车管理系统" << endl;
cout << "1. 车辆到达,2. 车辆离开,3. 列表显示,4.退出系统" << endl;
cin >> option;
switch (option)
{
case 1:
{
Car aParkingCar;
aParkingCar.createArriveCar();
parking.carArrive(aParkingCar);
break;
}
case 2:
{
Car aLeaveCar;
aLeaveCar.createLeaveCar();
parking.carLeave(aLeaveCar);
break;
}
case 3:
{
parking.listshow();
break;
}
case 4:return 0;
default:
{
cout << "命令错误" << endl;
break;
}
}
}
catch (exception e) {
break;
}
}
}

我进入2辆车然后把第1辆,删了结果输出的时候 ,第2辆车占了2个位置

图片说明.csdn.net/upload/201706/04/1496557088_650510.png)

c++

2个回答

图片说明

图片说明

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于c++问题求助各位大神
![图片说明](https://img-ask.csdn.net/upload/202002/26/1582693107_599502.png) ```#include<stdio.h>![图片说明](https://img-ask.csdn.net/upload/202002/26/1582693066_35433.png) #include "pch.h" #include<stdlib.h> #include<time.h> #include<stdlib.h> #include<conio.h> #include<iostream> using std::endl; using std::cout; using std::cin; #define ERROR 0 #define FALSE 0 #define OVERFLOW -1 #define TRUE 1 #define OK 1 #define RANGE 10 #define h 12 #define w 12 #pragma warning(disable:4996) typedef struct { int r, c; }PosType; // 坐标r表示行,c表示列 typedef struct { PosType seat; int d; }ElemType;//seat表示当前坐标,d表示当前要转的方向序号 typedef struct { ElemType data[1000]; int top; }SqStack;//栈元素类型,含有一个三元组, top 表示该数组的元素个数 ```
C#算法问题求助大神帮忙
请教大神一个算法问题,把数字字符串11 13 15 17 13 14 15"分组,每组数字都不同,得到结果是11 13 15 17,13 14 15两个数组
求助大神,关于如何实现消消乐三连消的问题
今天做测试题,要求实现二维数组相同数字的连续消除,类似于消消乐里面的规则,求助大神指点一下思路,
C++的一个问题,求助大神
设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。 template<class T> class Queue//循环队列 { public: Queue() {//构造空队列 maxSize = MAX_PASS_SIZE + 1; queue = new T[maxSize]; front = rear = 0; } ~Queue() { delete[]queue; } bool isEmpty() {//判断队列是否为空 return front == rear; } bool isFull() {//判断队列是否满 if ((rear + 1) % maxSize == front) return true; else return false; } T first() {//返回对首元素 if (isEmpty())cout << "队列为空" << endl; else return queue[(front + 1) % maxSize]; } T last() {//返回队尾元素 if (isEmpty())cout << "队列为空" << endl; else return queue[rear]; } Queue<T>&push(T &x) {//入队 if (isFull()) cout << "队列已满" << endl; else { queue[rear] = x; rear = (rear + 1) % maxSize; }return *this; } Queue<T>&pop(T &x) {//出队 if (isEmpty())cout << "队列为空" << endl; else { x = queue[front]; front = (front + 1) % maxSize; }return *this; } //private: int front;//队首 int rear;//队尾 int maxSize;//队列大小 T*queue; }; template <class T> class Stack { public: Stack() {//构造空栈 maxTop = MAX_PARKING_SIZE - 1; stack = new T[MAX_PARKING_SIZE]; top = -1; } ~Stack() { delete[]stack; } bool isEmpty() {//判断栈是否为空 return top == -1; } bool isFull() {//判断栈是否满 return top == maxTop; } T getTop() {//返回栈顶元素 if (isEmpty()) cout << "栈为空" << endl; else return stack[top]; } Stack<T>&push(T &x) {//入栈 if (isFull()) cout << "栈已满" << endl; else { top++; stack[top] = x; } return *this; } Stack<T>&pop(T &x) {//出栈 if (isEmpty())cout << "栈为空" << endl; else { x = stack[top]; top--; } return *this; } //private: int top;//栈顶 int maxTop;//最大栈顶值 T*stack;//动态数组存储元素 }; #include <iostream> #include<string> #include"stack.h" #include"queue.h" using namespace std; const int MAX_PARKING_SIZE = 5; const int MAX_PASS_SIZE = 5; class Car { public: void createArriveCar() { cout << "请输入车牌号:"; cin >> carNumber; status = true; cout << "请输入到达的时间:"; cin >> hour >> minute; } void createLeaveCar() { cout << "请输入车牌号:"; cin >> carNumber; status = false; cout << "请输入离开的时间:"; cin >> hour >> minute; } void print() { if (status) cout << "车牌号:" << carNumber << " 到达时间" << hour << ":" << minute << endl; else cout << "空" << endl; } string carNumber;//车牌号 int hour; int minute;//到达的时间 bool status = false;//true代表进入停车场,false代表出停车场 }; class Parking { public: void carArrive(Car car) { if (!parkingStack.isFull()) { parkingStack.push(car); cout << "车辆进入停车场,在停车场的位置为:" << parkingStack.top + 1 << endl; } else if (parkingQueue.isFull()) cout << "停车场和通道中都没有位置" << endl; else if (parkingStack.isFull()) { parkingQueue.push(car); cout << "停车场已满,车辆进入等待通道,在通道中的位置为:" << parkingQueue.rear << endl; } } void carLeave(Car car) { Car leaveCar; Car temporaryCar; int time;//以分钟记的停留时间 double money;//收费 Stack<Car> temporaryStack; //临时栈 while (car.carNumber != parkingStack.getTop().carNumber) { parkingStack.pop(leaveCar); temporaryStack.push(leaveCar); if (parkingStack.isEmpty()) { cout << "车站中没有这辆车" << endl; break; } } if (!parkingStack.isEmpty()) { parkingStack.pop(leaveCar); time = (car.hour - leaveCar.hour) * 60 + (car.minute - leaveCar.minute); money = time * 1; cout << "离开的车辆在停车场里停留了" << time << "分钟,需付费用:" << money << endl; } while (!temporaryStack.isEmpty()) { temporaryStack.pop(temporaryCar); parkingStack.push(temporaryCar); } while (!parkingStack.isFull() && !parkingQueue.isEmpty())//在通道中的车辆进入停车场,时间改为进入的时间 { parkingQueue.pop(temporaryCar); temporaryCar.hour = car.hour; temporaryCar.minute = car.minute; parkingStack.push(temporaryCar); } } void listshow() { for (int i = 0; i<MAX_PARKING_SIZE; i++) { cout << "第" << i + 1 << "号停车位:"; parkingStack.stack[i].print(); } } private: Stack <Car> parkingStack; Queue<Car> parkingQueue; }; int main() { Parking parking; int option; while(1) { try { cout << "欢迎使用本停车管理系统" << endl; cout << "1. 车辆到达,2. 车辆离开,3. 列表显示,4.退出系统" << endl; cin >> option; switch (option) { case 1: { Car aParkingCar; aParkingCar.createArriveCar(); parking.carArrive(aParkingCar); break; } case 2: { Car aLeaveCar; aLeaveCar.createLeaveCar(); parking.carLeave(aLeaveCar); break; } case 3: { parking.listshow(); break; } case 4:return 0; default: { cout << "命令错误" << endl; break; } } } catch (exception e) { break; } } } 我进入2辆车然后把第1辆,删了结果输出的时候 ,第2辆车占了2个位置 ![图片说明](http://img.ask![图片说明](https://img-ask.csdn.net/upload/201706/04/1496557112_563229.png).csdn.net/upload/201706/04/1496557088_650510.png)
C语言的相关问题,求助大神们。
![图片说明](https://img-ask.csdn.net/upload/201612/08/1481206905_905931.png)原题如图所示。C语言中,设计函数:search(),用折半查找法在已排序的n个数种查找指定的数据,若存在,返回其所处的位置,否则,将其插入适当位置使数据仍有序。 这个程序我已经写完了前半段,但是后半段的那个插入其中使其保持原来的顺序,我的是从大到小排列,不知道后半段代码该如何写了。求助大神们。 int search (int *d,int n,int key){ int low,high,mid,i; low=0; high=n-1; while( low <= high){ mid=(low+high)/2; if(key==d[mid]) return mid; else if(key>d[mid]) high=mid-1; else low = mid + 1; } return 0; }
C++无法执行求助大神帮忙
求助大神,为何经常编写程序无法执行呢?比如判断素数。 int main(){int n; Cout<<"input number"<<endl; Cin>>n; For (int i=2;i<=sqrt(n);i++) {if((n%i)==0) break; else cout<<n<<"bushi sushu"<<endl;}} Rerurn 0;
求助大神,一道题简单的题
本题要求编写程序,统计并输出某给定字符在给定字符串中出现的次数。 输入格式: 输入第一行给出一个以回车结束的字符串(少于80个字符);第二行输入一个字符。 输出格式: 在一行中输出给定字符在给定字符串中出现的次数。 输入样例: programming is More fun! m 输出样例: 2 #include<iostream> using namespace std; #define max 80 int main() { char c[max],ch,ch1,i=0,j,count=0; do{ ch=cin.get(); c[i]=ch; i++; }while(ch!='\n'); cin>>ch1; for(j=0;j<i;j++) { if(c[j]==ch1) count++; } cout<<count; }
关于js ajax json的问题 求助大神
其实就是个post php返回json数组 因为用到的地方比较多,我就写了个函数 比如说: function a (b,c){ post.send(b,c,'post','json'); …… return eval("("+data+")"); //data是返回的数据 } var d = a(e.php , actime=f'); 结果报错:TypeError: d is null 不管怎样输出都报错,这是个数组 d[0] 也报错 但是直接把函数里的return eval("("+data+")") 改成 return "123" 又是正常的 我也直接试过请求代码,确实能取到数据, 本人小白,求教各位大神,问题出在哪?该怎么解决? 本人小白,有代码才能摸得懂
求助大神,c#dll调用问题,详细信息看下面
写了个程序和仪器通讯的,但需要调用厂商提供的3个dll,在我写的程序中,已经引用了一个dll,假设它叫a.dll,但是程序运行时a需要调用b.dll和c.dll中的方法进行计算,a/b/c都是厂商封装好的,我看不到,而且我用的话只需要引入a(厂商的参考例子就是这么写的,跑起来也没问题),但是我运行的时候显示找不到b。 Detail: Additionalinformation: 未能加载文件或程序集“c, Version=8.9.35.246,Culture=neutral, PublicKeyToken=18cbae0f9955702a”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040) 错误类型: System.IO.FileloadException 我觉得,只引入a的话,那么a找b和c肯定是通过配置文件或者其他方式来获取路径,要是那样的话,怎么写呢 大神帮忙,小弟搞了好几天了,现在数据还读不出来
大神求助一个highcharts 饼图的 c#处理下载的demo
大神求助一个highcharts 饼图的 c#处理下载的demo , 数据处理希望能更清晰 最近用highcharts绘制饼图,发现其自带的下载功能是 highcharts请求的官网服务器 希望能够把下载服务移到自己这,在网上也搜索了一下,但发现下载的图片都数据处理有点错位, 原图 ![图片说明](https://img-ask.csdn.net/upload/201503/04/1425435465_929411.png) 官网下载的 ![图片说明](https://img-ask.csdn.net/upload/201503/04/1425435520_209336.png) 但是网上的下载demo 处理数据 label数据 没那么清晰还很重复了 ![图片说明](https://img-ask.csdn.net/upload/201503/04/1425435482_808416.png) 大神求助一个.net的下载方法,demo也可以
求助,新手遇到一个C/OC问题不会,求助大神
你使用C或者OC设计一个能接受任何类型的参数,并且还回interger结果的函数吗?请写出声明方法
求助大神用C#win from 怎么写QQ联系人界面
我们学校现在要我们写一个小项目,由于我是小白,所以一些东西不太懂,我想写一个类似于QQ聊天的小项目,但是我现在不知道用什么去显示联系人界面求助大神
求助大神,一道题简单的题希望帮忙改改
6-3 函数重载实现两数相加 (15分) 设计一个重载函数add,该函数有两个参数,可以实现两个类型相同的参数相加的操作,函数返回相加的结果。两个参数可以是整数、实数和字符串,但必须保证两个参数类型相同。 裁判测试程序样例: #include <iostream> #include <string> #include <iomanip> using namespace std; /* 请在这里填写答案 */ int main() { int a, b; double c, d; string s1, s2; cin >> a >> b; cin >> c >> d; cin >> s1 >> s2; cout << add(a, b) << endl; cout << fixed << setprecision(2) << add(c, d) << endl; cout << add(s1, s2) << endl; 输入样例: 3 5 3.3333 5.555555 hello world 输出样例: 8 8.89 helloworld 字符串的add函数不大懂 char add(char *s1,char *s2) { return strcat(s1,s2); }
求助Fortran大神们,我读文件遇到了很奇怪的问题,百思不得其解,求助啦!
我的程序是读文件,然后将文件里的数据赋值给数组,再统计每一列数据中不同数字的个数,所以单独写了个子程序计算每一列中不同数据中的个数;我的程序一直到把文件中的数据赋值给数组都是对的,偏偏子程序那儿就出错了,就是统计出来这个文件有117行,并且我的数据里是没有0的,但是同列中不同数字出现的数量之和却不等于117,我一直找不到问题在哪里,但是之前我发现直接T=A(I,J),DAAN(J,T)=DAAN(J,T)+1,就回报错显示我DAAN越界了,说是T=0,但是我DAAN下届最小为1,即表示我A(I,J)有数字0,可是我不论是文件里还是屏幕输出的数组里,都没有0啊,求助大神呀! 附上我的代码: ```PROGRAM pichuli IMPLICIT NONE INTEGER::I,J,K,B,T INTEGER,DIMENSION(1:200,1:11)::WEN INTEGER,DIMENSION(1:11,1:11)::DAAN CHARACTER FNAME(11)*4 OPEN(10,FILE='list.txt') READ(10,*)(FNAME(I),I=1,11) WRITE(*,*)(FNAME(I),I=1,11) K=1 DAAN=0 DO 111 WHILE(K<12) !从DO开始循环,到语句111为1个循环,循环1-11次 OPEN(11,FILE=FNAME(K)//'.txt') !!!!!输入原始数据 B=0 DO 10 WHILE(.NOT.EOF(11)) !当文件不在末尾的时候执行此循环,从DO到10语句为一个循环。 B=B+1 READ(11,*) 10 CONTINUE CLOSE(11) B=B WRITE(*,*)B !B计算读的这个文件有多少行 OPEN(1,FILE=FNAME(K)//'.txt') !!!!输入原始数据 OPEN(2,FILE='JISHU.TXT')!!!生成新文件 T=0 DO 11 WHILE(.NOT.EOF(1)) !当文件不在末尾的时候执行此循环,从DO到11语句为一个循环。 IF(T==0)THEN READ(1,*) ELSE READ(1,*)(WEN(T,J),J=1,11) WRITE(*,100)(WEN(T,J),J=1,11) END IF T=T+1 11 CONTINUE CALL JISHU(WEN,DAAN,B) WRITE(2,102) DO J=1,11 !第J问 WRITE(2,101)(DAAN(J,I),I=1,11) !第J问选每个答案的人数 END DO K=K+1 100 FORMAT(11I3) 101 FORMAT(11(I6,2X)) 102 FORMAT(4X,'一',6X,'二',6X,'三',6X,'四',6X,'五',6X,'六',6X,'七',6X,'八',6X,'九',5X,'十',4X,'十一') 111 CONTINUE CLOSE(1) CLOSE(2) CLOSE(11) END SUBROUTINE JISHU(A,DAAN,B) INTEGER::I,J,T,B INTEGER,DIMENSION(1:11,1:11)::DAAN INTEGER,DIMENSION(1:B-1,1:11)::A DAAN=0 DO J=1,11 !第J题 DO I=1,B-1 !第I个答题人 IF(A(I,J)/=0)THEN T=A(I,J)!将第I个答题人的第J问的选项赋值给T DAAN(J,T)=DAAN(J,T)+1!第J问的第T选项+1 END IF END DO END DO END ``` ```
求助大神,关于C语言数据结构中栈的问题
为什么我的代码的p->next不能指向NULL? ``` #include <stdio.h> #include <stdlib.h> typedef struct T_Node{ int d; struct T_Node *next; } Node, *List; void createlink(List *pf) { int i; Node *p; *pf = (Node *)malloc(sizeof(Node)); p = *pf; for(i = 1; i <= 99; i++) { p->d = i; p->next = (Node *)malloc(sizeof(Node)); p = p->next; } p->d = 100; p->next = NULL; //为什么编辑器上面报错Use of undeclared identifier 'NULL' } double getaverage(List f, int *nodenum){ return 0; } int main(int argc, char* argv[]) { int n; List f; double a; createlink(&f); a = getaverage(f, &n); printf("%d %lf\n",n, a); return 0; } ``` ![图片说明](https://img-ask.csdn.net/upload/201910/15/1571115756_783108.png)
求助大神,一道题简单的题,希望帮忙改改,非常感谢
本题要求提取一个字符串中的所有数字字符('0'……'9'),将其转换为一个整数输出。 输入格式: 输入在一行中给出一个不超过80个字符且以回车结束的字符串。 输出格式: 在一行中输出转换后的整数。题目保证输出不超过长整型范围。 输入样例: free82jeep5 输出样例: 825 以下是我的代码 #include<iostream> using namespace std; #include<string.h> #define max 81 int sum(int *,int); int main() { char a[max],*a1=a; int i=0,b,c[max],j=0,s; cin.get(a1,80); b=strlen(a1); while(i<=b) { if(a[i]>='0'&&a[i]<='9')//我的思路是把这些数字存在另一个数组c里 { c[j]=a[i]; j++; } i++; } s=sum(&c,j-1); cout<<s; } int sum(int c[],int j) { int t=1,num,i=0,sum=0; while(i<=j) { num=c[i]*t; t*=10; i++; sum+=num; cout<<sum; } return sum; }
C++套接字编程遇到问题,求助大神
小弟大学党,操作系统老师布置作业,写一个可以实现收发报文的小程序,要求使用socket套接字。自己去网上查找资料,尝试写了一个,开始单独收或者单独发的时候都没问题,但是想把收发的功能整合到一个程序里面的时候遇到问题。 我用的是UDP点对点通信机制,测试的时候,用了寝室同学的电脑,两台电脑在相同平台下(vc++ 6.0)编译运行,在编译之前把接收绑定的地址和发送地址对调(我这里的发送地址对应他那边的接收地址,地址都是在本地连接上查看的)。但是我发现,我给他发报文都没问题,他可以接收,但是他给我发就不可以了。我去网上查询,说是可能是防火墙的原因,但是我查询了没有拦截记录(查的杀毒软件自带的防火墙的拦截记录),仔细看了看代码也没觉得哪里有错,小弟没有系统地学过这个,都是自己找的一点资料和一些实例代码,模仿着写的,实在不知道问题出在哪,求助各位大神,不胜感激。 ps:我在建立套接字变量的时候,同一socket环境下建立了两个,sock和clientsock分别用于发和收,找的实例里面好像都没有这么写的,不知道是不是这里出了问题(自己猜的)。 下面是代码: #include<iostream.h> #include<winsock2.h> #include<stdio.h> void main() { SOCKET sock,clientsock; char szmsg[256]; //1)启动socket库,版本为2.0 WORD versionrequested; WSADATA wsadata; versionrequested=MAKEWORD(2,0); int err=WSAStartup(versionrequested,&wsadata); if(err!=0) { cout<<"socket2.0 初始化失败"<<endl; return; } //2)检查版本号 if(LOBYTE(wsadata.wVersion)!=2||HIBYTE(wsadata.wVersion)!=0) { WSACleanup(); return; } //3)创建socket sock=socket(AF_INET,SOCK_DGRAM,0); clientsock=socket(AF_INET,SOCK_DGRAM,0); if(INVALID_SOCKET==sock||INVALID_SOCKET==clientsock) { cout<<"创建套接字失败"<<endl; return; } //4)设置该套接字为广播类型 bool opt=true,opt1=true; setsockopt(sock,SOL_SOCKET,SO_BROADCAST,(char FAR *)(&opt),sizeof(opt)); setsockopt(clientsock,SOL_SOCKET,SO_BROADCAST,(char FAR *)(&opt1),sizeof(opt1)); //5)设置发送地址 sockaddr_in addrto; memset(&addrto,0,sizeof(addrto)); addrto.sin_family=AF_INET; addrto.sin_addr.s_addr=inet_addr("***.***.***.***"); addrto.sin_port=htons(6888); int nlen=sizeof(addrto); //6)设置接收地址 sockaddr_in from; memset(&from,0,sizeof(from)); from.sin_family=AF_INET; from.sin_addr.s_addr=inet_addr("***.***.***.***"); from.sin_port=htons(6888); //7)绑定接受地址 bind(clientsock,(sockaddr*)&from,sizeof(from)); memset(&from,0,sizeof(from)); int fromlength=sizeof(SOCKADDR); char buf[256]; memset(buf,0,sizeof(buf)); long number=0; //8)设置超时 int timeout=1000; setsockopt(clientsock,SOL_SOCKET,SO_RCVTIMEO,reinterpret_cast<char FAR *>(&timeout),sizeof(timeout)); int counters=0,temp=0; //9)开始收发 while(1) { temp=0; if(counters++==0) { while(recv(clientsock,buf,256,0)>0) { if(temp++==0) { Beep(1000,1000); cout<<"收到信息:"; } cout<<buf; memset(buf,0,256); } cout<<endl; counters++; } else { while(1) { if(recv(clientsock,buf,256,0)>0) { if(temp++==0) { Beep(1000,1000); cout<<"收到信息:"; } cout<<buf; memset(buf,0,256); break; } } cout<<endl; } cout<<"发送消息:"<<endl; gets(szmsg); if(sendto(sock,szmsg,strlen(szmsg),0,(sockaddr*)&addrto,nlen)==SOCKET_ERROR) cout<<WSAGetLastError()<<endl; else cout<<"(a message was sended)"<<endl; } if(!closesocket(sock)||!closesocket(clientsock))//关闭套接字 { WSAGetLastError(); return; } if(!WSACleanup())//关闭Socket库 { WSAGetLastError(); return; } return; } /////////////////////////////////////////////////////////////////////////////////////////// //如果是直接写cpp文件(没有建库),点击:工程->设置->链接,在对象/库模块后面加入"ws2_32.lib"
小白求助大神!!关于读取文本文件到数组的问题。
![图片说明](https://img-ask.csdn.net/upload/201906/04/1559631295_113408.png)c小白,最近在写大作业,在读取文本文件数据到结构体数组遇到问题,出此下策,先输入,再读出来(--!)这个程序没有办法写入文件,在scanf输入的时候,第一行数据完毕,回车会没反应,然后就自己直接退出了,求助大神。
求助大神,一道题,做的不对,希望帮忙改改代码
7-5 类的定义与对象使用 (15分) 请定义一个学生类(Student),包含学号、姓名、年龄(7-60岁)三个私有成员。从键盘输入学生的成员值后生成对象,并按要求输出相应的结果。 输入格式: 第一行一个整数k,代表后面要生成的学生人数。 从第二行开始的连续k行,每行3个数据,分别表示一个学生的学号、姓名和年龄。 输出格式: 输出每个学生的基本情况。如果数据不符合要求则输出"bad" 输入样例: 3 20174042001 zhangsan 20 20174042030 lisi 2 20174042050 wangwu 17 输出样例: zhangsan 20174042001 20 bad wangwu 20174042050 17 #include<iostream> using namespace std; class Student{ private: long int number; char name[10]; int age; public: void Init(int k); void print(int k); }; Student stu[100]; void Student::Init(int k) { for(int i=0;i<k;i++) { cin>>stu[i].number>>stu[i].name>>stu[i].age; } } void Student::print(int k) { for(int i=0;i<k;i++) { if(stu[i].age<7&&stu[i].age>60){ cout<<"bcd"<<endl; continue; } cout<<stu[i].number<<" "<<stu[i].name<<" "<<stu[i].age<<endl; } } int main() { int k; cin>>k; stu[100].Init(k); stu[100].print(k); }
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
复习一周,京东+百度一面,不小心都拿了Offer
京东和百度一面都问了啥,面试官百般刁难,可惜我全会。
Java 14 都快来了,为什么还有这么多人固守Java 8?
从Java 9开始,Java版本的发布就让人眼花缭乱了。每隔6个月,都会冒出一个新版本出来,Java 10 , Java 11, Java 12, Java 13, 到2020年3月份,...
达摩院十大科技趋势发布:2020 非同小可!
【CSDN编者按】1月2日,阿里巴巴发布《达摩院2020十大科技趋势》,十大科技趋势分别是:人工智能从感知智能向认知智能演进;计算存储一体化突破AI算力瓶颈;工业互联网的超融合;机器间大规模协作成为可能;模块化降低芯片设计门槛;规模化生产级区块链应用将走入大众;量子计算进入攻坚期;新材料推动半导体器件革新;保护数据隐私的AI技术将加速落地;云成为IT技术创新的中心 。 新的画卷,正在徐徐展开。...
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
讲真,这两个IDE插件,可以让你写出质量杠杠的代码
周末躺在床上看《拯救大兵瑞恩》 周末在闲逛的时候,发现了两个优秀的 IDE 插件,据说可以提高代码的质量,我就安装了一下,试了试以后发现,确实很不错,就推荐给大家。 01、Alibaba Java 代码规范插件 《阿里巴巴 Java 开发手册》,相信大家都不会感到陌生,其 IDEA 插件的下载次数据说达到了 80 万次,我今天又贡献了一次。嘿嘿。 该项目的插件地址: https://github....
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
2020 年,大火的 Python 和 JavaScript 是否会被取而代之?
Python 和 JavaScript 是目前最火的两大编程语言,但是2020 年,什么编程语言将会取而代之呢? 作者 |Richard Kenneth Eng 译者 |明明如月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: Python 和 JavaScript 是目前最火的两大编程语言。然而,他们不可能永远屹立不倒。最终,必将像其他编程语言一...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
Idea 中最常用的10款插件(提高开发效率),一定要学会使用!
学习使用一些插件,可以提高开发效率。对于我们开发人员很有帮助。这篇博客介绍了开发中使用的插件。
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
立即提问