我正在寻找一个简单的电子表格应用程序,允许用户根据输入内容自定义行和列。
例如用户输入, newSS 10 9
这意味着用户想要创建一个10列9行的新SpreadSheet。
应该创建一个空的电子表格,并将其显示在控制台窗口中。
这里要注意的是,总是会有额外的行和列供用户输入,因为多余的行和列是标题。
因此10列和9行将在3D数组中存储11列和10行,因为每个列和行的第一个索引都是标题。它应该看起来像这样。
第一行将显示:A B C D E F G H I J
第一列将显示:1 2 3 4 5 6 7 8 9
作为标签
之间的空格是它们的特殊索引,例如A1,A2,B4等。用户可以在其中编辑其中的值。
有人可以教我如何入门吗?是一个非常新的C程序员。正面临着一些代码问题。能够创建一个2d数组,但是我需要根据用户想要的行数和列数来更改第一行和第一列以将其打印为标题。因此,如果有5列,则为(A-E)
WORKSHEET *ws_new(int cols, int rows) {
//return NULL;
int r;
int c;
int n[rows][cols];
for (r=1;r<=rows;r++)
{
for(c=1;c<=cols;c++)
{
//printf("%d",cols);
n[r][c]=0;
printf("%d", n[r][c]);
}
printf("\n");
}
}
答案 0 :(得分:1)
我正在寻找一个简单的电子表格应用程序
Spreadsheets不能是简单应用程序。它们具有两个相关的复杂组件:
一个不错的GUI,它显示一个单元格表(您也可以考虑使用诸如ncurses之类的终端接口,但这不会比提供一个简单的GUI更简单)。如果您的程序没有提供表格形式的界面,请不要将其称为电子表格。
一个懒惰的“功能性”解释器,在每个电子表格单元格中运行(或解释二维公式数组);您涉及某种脚本语言,并且您的电子表格在概念上具有formula e的某种矩阵。
您可以(出于启发目的)查看现有free software电子表格的源代码,例如Gnumeric
对于GUI部分,请使用一些现有的GUI工具箱。由于您要使用C编写代码,因此请考虑使用GTK。
对于解释器部分,首先阅读Dragon Book(在阅读SICP之后),类似Programming Languages Pragmatics,甚至可能是Lisp In Small Pieces。如果您想解析自己的公式语言,请详细了解parsing技术recursive descent parsing,并以野牛infix calc为例。
您至少需要几个月,甚至几年的时间。
您可能会嵌入一些现有解释器(而不是设计和实现自己的解释器)。考虑使用Lua或Guile。
您不完整的代码在概念上是错误的:电子表格需要的是一些公式矩阵,而不仅仅是数字(例如您的n
数组)。每个单元格都包含一个公式(或公式和纯数字的tagged union),并且您想保留该公式的AST。显然包含数字的单元格是公式简化为常数的简并情况。
此answer显示了如何将数字矩阵实现为某种抽象数据类型。它可能会启发您将电子表格表示为某些公式矩阵。当然,您还需要为公式的AST指定一个类型。