Matrix * init(){ int num=0,mx=1,my=1;//个数,行数,列数 int value,index=0;//值,索引 char c=' '; printf("--------生成稀疏矩阵--------\n"); printf("请输入矩阵第一行,空格+分号 ;结束\n"); Matrix * m = malloc(sizeof(Matrix)); while (c!=';'){ scanf("%d",&value); if(value!=0){ m->data[num].i = mx; m->data[num].j = my; m->data[num].value = value; num++;//元素数量自加1 } my++;//列自加1 scanf("%c",&c); } m->mx = mx; m->my = my-2; m->num = num-1; printf("----矩阵列数为%d----\n",m->my); printf("请输入更多行,每一行以空格加分号 ;分割,e结束\n"); mx = 2;my = 1; char s = ' '; while (s!='e'){ init_row(m,mx); mx++; scanf("%c",&s); } return m; }
board init_board(int height, int width) { board b = malloc(sizeof(struct board_t)); b->width = width; b->height = height; /* since cells is a 2d array of cells, each element of cells is an array of cells, or, cell*. so we initialize cells memory to be the size of an array of cells multiplied by the number of rows there are */ b->cells = malloc(sizeof(cell*)*height); int i; for(i = 0; i < height; i++) { b->cells[i] = init_row(width); } return b; }
RelTable::RelTable(QWidget * parent, ClassInstanceData * inst, bool visit) : MyTable(parent) { const QList<SlotRel> & rels = inst->get_relations(); setRowCount(rels.count()); setColumnCount((visit) ? 5 : 6); setSelectionMode(QTableWidget::SingleSelection); //setSortingEnabled(true); setHorizontalHeaderLabel(0, tr("Class Inst.")); setHorizontalHeaderLabel(1, tr("Role")); setHorizontalHeaderLabel(2, tr("kind")); setHorizontalHeaderLabel(3, tr("Role")); setHorizontalHeaderLabel(4, tr("Class Inst.")); setHorizontalHeaderLabel(5, tr("Delete")); QString role = inst->get_browser_node()->get_name() + QString(":") + inst->get_class()->get_name(); int row = 0; QList<SlotRel>::ConstIterator it; for (it = rels.begin(); it != rels.end(); ++it) init_row(*it, row++, role, visit); setColumnStretchable(1, TRUE); setColumnStretchable(3, TRUE); adjustColumn(0); adjustColumn(2); adjustColumn(4); if (! visit) adjustColumn(5); connect(this, SIGNAL(pressed(int, int, int, const QPoint &)), this, SLOT(button_pressed(int, int, int, const QPoint &))); }
int main(int argc, char **argv) { if (argc > 1 && strcmp(argv[1], "--help") == 0) { printf("Help!\n"); exit(0); } if (argc > 1 && strcmp(argv[1], "--version") == 0) { pq_display_version(); exit(0); } int i; int frm_multi; const char *cmd_defaults; struct SWrap Stat; void (*swrap_init)(struct SWrap *, int); frm_multi = PQ_PNDS_FRMT; swrap_init = PQ_PNDS_INIT; cmd_defaults = PQ_PNDS_DEFS; char *fname_aa; char *fname_syn; char default_fname_aa[] = "codon2aa"; char default_fname_syn[] = "codon2syn"; char default_fullpath_aa[1028]; char default_fullpath_syn[1028]; sprintf(default_fullpath_aa, "%s/%s", DATADIR, default_fname_aa); sprintf(default_fullpath_syn, "%s/%s", DATADIR, default_fname_syn); fname_aa = default_fullpath_aa; fname_syn = default_fullpath_syn; file2charHash(fname_aa, 128); file2doubleHash(fname_syn, 128); FILE *fp; int nargs; char **def_array; char defaults[128]; int ncols; int nalleles; char buffer[PQ_LWIDTH]; char delim = '\t'; char chr[PQ_LCOL]; char factor[PQ_LCOL]; unsigned long long int startpos; unsigned long long int stoppos; unsigned long long int start_region; unsigned long long int stop_region; struct GenericRow row; int argc_wo_file; fp = stdin; argc_wo_file = argc; if (argc > 1 && access(argv[argc - 1], F_OK) != -1) { fp = fopen(argv[argc - 1], "r"); argc_wo_file = argc - 1; } fgets(buffer, sizeof(buffer), fp); // add defaults but with dummy -k variable sprintf(defaults, cmd_defaults, 6); nargs = pq_countcols(defaults, " "); def_array = calloc(nargs, sizeof(char *)); pq_str2array(def_array, defaults, nargs, " "); pq_init_args(); pq_update_args(nargs, def_array); pq_update_args(argc_wo_file-1, argv+1); // space delimeters must be escaped on the command line (i.e. -d '\ ') delim = ((char *)pq_lookup_hash(&ARGHASH, "-d"))[1]; ncols = pq_countcols(buffer, &delim); sprintf(defaults, cmd_defaults, ncols); pq_str2array(def_array, defaults, nargs, " "); pq_update_args(nargs, def_array); pq_update_args(argc_wo_file-1, argv+1); free(def_array); init_row(&row, ncols, CHROM, POS, FCOL); nalleles = frm_multi * NKARGS; swrap_init(&Stat, nalleles); row.update(&row, buffer, &delim); strcpy(chr, row.chrom(&row)); strcpy(factor, row.factor(&row)); start_region = row.pos(&row) - 1; goto POST_INIT; while (fgets(buffer, sizeof(buffer), fp)) { row.update(&row, buffer, &delim); POST_INIT: stoppos = row.pos(&row); startpos = stoppos - 1; if (strcmp(row.factor(&row), factor) != 0) { Stat.write(&Stat); printf("%s\t%llu\t%llu\t%s", chr, start_region, stop_region, factor); for (i = 0; i < Stat.nouts; i++) { printf("\t%s", (char *)Stat.outs[i]); } printf("\n"); Stat.clear(&Stat); strcpy(factor, row.factor(&row)); start_region = startpos; stop_region = stoppos; } Stat.update(&Stat, row.array); stop_region = stoppos; strcpy(chr, row.chrom(&row)); } Stat.write(&Stat); printf("%s\t%llu\t%llu\t%s", chr, start_region, stop_region, factor); for (i = 0; i < Stat.nouts; i++) { printf("\t%s", (char *)Stat.outs[i]); } printf("\n"); Stat.clear(&Stat); pq_free_hash(&CODON_TO_NSYN); pq_free_hash(&CODON_TO_AMINO); pq_free_args(); pq_swfree(&Stat); free_row(&row); fclose(fp); return 0; }