假设客车的座位数是9行4列,使用二维数组在控制台应用程序中实现简单的客车售票系统。

具体要求为:

使用一个二维数组记录客车售票系统中的所有座位号,并在每个座位号上都显示有票,然后用户输入一个坐标位置,按Enter键,即可将该座位号显示为已售。

首先我定义的输入格式为:1,2

个人认为主要知识点伪代码如下

1.字符串分割

char[] separator = { ‘,‘ }; 

splitstrings = str.Split(separator);

2.字符串前后去空

str.Trim()

3.转换类型,如果不是int类型则为false,可以处理异常情况。

int columnNum = 0;
bool isColumn = int.TryParse(column, out columnNum);

先创建如下脚本,然后在Main函数中直接调用即可。

 1 public class TicketingSystem
 2     {
 3         int[,] seatCount = new int[9, 4];
 4
 5         public void CheckTicketCount()
 6         {
 7             bool res = true;
 8             String[] splitstrings = { "row", "col"};
 9             char[] separator = { ‘,‘ };
10             while (res)
11             {
12                 Console.WriteLine("请输入座位号:");
13                 string str = Console.ReadLine();
14                 splitstrings = str.Split(separator);
15                 if (str.Trim() == "Quit")
16                 {
17                     res = false;
18                     Console.WriteLine("结束购票");
19                     return;
20                 }
21
22                 if (splitstrings.Length < 2)
23                 {
24                     Console.WriteLine("输入的格式不正确");
25                     continue;
26                 }
27                 string row = splitstrings[0].Trim();
28                 string column = splitstrings[1].Trim();
29
30                 int rowNum = 0;
31                 bool isRow = int.TryParse(row, out rowNum);
32                 if (!isRow || rowNum >= seatCount.GetLength(0))
33                 {
34                     Console.WriteLine("输入的行不正确");
35                     continue;
36                 }
37
38                 int columnNum = 0;
39                 bool isColumn = int.TryParse(column, out columnNum);
40                 if (!isColumn || columnNum >= seatCount.GetLength(1))
41                 {
42                     Console.WriteLine("输入的列不正确");
43                     continue;
44                 }
45                 if (seatCount[rowNum, columnNum] == 1)
46                 {
47                     Console.WriteLine("该座位已经被购买!");
48                     continue;
49                 }
50                 seatCount[rowNum, columnNum] = 1;
51                 Console.WriteLine(rowNum + "行" + columnNum + "列车票售出");
52                 bool isEmptySeat = false;
53                 for (int i = 0; i < seatCount.GetLength(0); i++)
54                 {
55                     for (int j = 0; j < seatCount.GetLength(1); j++)
56                     {
57                         if (seatCount[i, j] == 0)
58                         {
59                             isEmptySeat = true;
60                             break;
61                         }
62                     }
63                     if (isEmptySeat)
64                     {
65                         break;
66                     }
67                 }
68
69                 if (!isEmptySeat)
70                 {
71                     res = false;
72                     Console.WriteLine("车票售完!");
73                     return;
74                 }
75                 Console.WriteLine();
76                 Console.WriteLine();
77             }
78         }
79     }

原文地址:https://www.cnblogs.com/erdiba/p/12531557.html

时间: 2024-10-11 00:36:56

假设客车的座位数是9行4列,使用二维数组在控制台应用程序中实现简单的客车售票系统。的相关文章

编写一段代码,打印一个M行N列的二维数组转置。(交换行和列)

import edu.princeton.cs.algs4.*; public class No_1_1_13 { public static void main(String[] args) { int m=4; int n=3; int [][] a = new int[m][n]; for(int i=0;i<m;i++) { for(int j=0;j<n;j++) { a[i][j]=i+j; StdOut.print(a[i][j]); } StdOut.println(); }

C#中如何获取一个二维数组的两维长度,即行数和列数?以及多维数组各个维度的长度?

如何获取二维数组中的元素个数呢? int[,] array = new int[,] {{1,2,3},{4,5,6},{7,8,9}};//定义一个3行3列的二维数组int row = array.Rank;//获取维数,这里指行数int col = array.GetLength(1);//获取指定维度中的元素个数,这里也就是列数了.(0是第一维,1表示的是第二维)int col = array.GetUpperBound(0)+1;//获取指定维度的索引上限,在加上一个1就是总数,这里表示

获取二维数组里面实际存有数据的行数

写程序时遇到需要获取二维数组里面实际存有数据的行数,看到几篇博客中获取数组行数用的居然是array.Rank方法.这是获取维度的方法啊,我在下面贴出了我找到的正确的方法,很实用. /// <summary> /// 获取二维数组里面实际存有数据的行数 /// </summary> public static List<int> GetHasValueRowIndex(string[,] arr) { var hasValueRowIndex = new List<

【c语言】二维数组中的查找,杨氏矩阵在一个二维数组中,每行都依照从左到右的递增的顺序排序,输入这种一个数组和一个数,推断数组中是否包括这个数

// 二维数组中的查找,杨氏矩阵在一个二维数组中.每行都依照从左到右的递增的顺序排序. // 每列都依照从上到下递增的顺序排序.请完毕一个函数,输入这种一个数组和一个数.推断数组中是否包括这个数 #include <stdio.h> #define col 4 #define rol 4 int yang(int(*p)[col], int num) { int i = 0; int j = col - 1; while (j+1) { int *q = &(p[i][j]); if

44.从键盘输入12个数存入二维数组a[3][4]中,编写程序求出最大元素的值及它所在的行号和列号

//1.建立二维数组 //2.运用循环,将内容输入到数组中 //3.求出最大元素,并输出行号和列号 #include<iostream> using namespace std; int main() { int a[3][4]; int Max=0;//赋值之前需要先置为0 cout<<"please input 12 numbers: "<<endl; for(int i=0;i<3;i++)//嵌套循环,用于向二维数组中输入内容 { fo

python 按二维数组的某行或列排序 (numpy lexsort)

lexsort支持对数组按指定行或列的顺序排序:是间接排序,lexsort不修改原数组,返回索引. 默认按最后一行元素有小到大排序, 返回最后一行元素排序后索引所在位置. 设数组a, 返回的索引ind, a可以是1维或2维数组,ind返回的是一维数组 对于一维数组, a[ind]就是排序后的数组. 对于二维数组下面会详细举例. import numpy as np >>> a array([[ 2,  7,  4,  2], [35,  9,  1,  5], [22, 12,  3, 

Java读取excel指定sheet中的各行数据,存入二维数组,包括首行,并打印

1. 读取 //读取excel指定sheet中的各行数据,存入二维数组,包括首行 public static String[][] getSheetData(XSSFSheet sheet) throws IOException { String[][] testArray = new String[sheet.getPhysicalNumberOfRows()][]; for(int rowId =0;rowId<sheet.getPhysicalNumberOfRows();rowId++)

剑指offer系列——二维数组中,每行从左到右递增,每列从上到下递增,设计一个算法,找其中的一个数

题目:二维数组中,每行从左到右递增,每列从上到下递增,设计一个算法,找其中的一个数 分析: 二维数组这里把它看作一个矩形结构,如图所示: 1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15 在做这道题的时候我最先考虑的是每次比较对角线上的元素可能可以取得较好的效果, 以查找9为例, 从1(0,0)开始,1<10,可以得出结论,10在1的右侧或下侧: 1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15 然后看4(1,1),4<9, 1 2 8 9 2

C#读txt文件并写入二维数组中(txt数据行,列未知)

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace 二维数组 { class Program { static void Main(string[] args) { int row = 0;//行 int col = 0;//lie FileStream fs; string path = @"C:\Documents an