首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

怎么实现上下行交替输出

2012-02-23 
如何实现上下行交替输出请大虾帮忙:如何实现象下面输出:1(2)2(6)3(10)4(14)- 第一行1(4)2(8)3(12)4(16)-

如何实现上下行交替输出
请大虾帮忙:  
      如何实现象下面输出:  
    1(2)     2(6)     3(10)     4(14)-> 第一行
        1(4)     2(8)     3(12)       4(16)-> 下一行
()中数字表示时间的先后顺序
就是说先输出第一行的1,2秒后输出下一行的1
然后再输出第一行的2,2秒后输出下一行的2
如此循环下去

[解决办法]
程序就不写了,思路说一下,
主要用到的三个函数:
1.gotoxy——定位光标在屏幕的相应位置
2.cprintf——向屏幕当前位置输出
3.sleep——暂停相应秒数
[解决办法]
#include <map>
#include <fstream>
#include <sstream>
#include <string>
#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
multimap <int, int> intmap;
string line, tmp;
int key, value, time=0;

ifstream ifile( "data.txt ");
while(!ifile.eof())
{
getline(ifile, line);
istringstream str(line);
while(str> > tmp)
{
//cout < <tmp < <endl;
sscanf(tmp.c_str(), "%d(%d) ", &value, &key); //分解数据 和 时间
intmap.insert(make_pair(key, value)); //插入到map 中
}
}

multimap <int, int> ::iterator it;
for(it=intmap.begin(); it!=intmap.end(); it++)
{ //进行输出
cout < < "After " < <(it-> first - time) < < " second, output: " < <it-> second < <endl;
time = it-> first;
};

system( "PAUSE ");
return 0;
}

注意两点:
1 map自动根据 < 排序,所以直接顺序输出内容即可
2 由于数据有重复,时间无重复,所以使用 multimap, 时间为key, 数据为 value
[解决办法]
这样你必须试用控制台函数.
下面的你可以参考一下.写的不好,见笑了.
#include <stdio.h>
#include <curses.h>
main()
{
int i=1,j=1,flag1=0,flag2=0;
char buf[10];
int LINES=24;
initscr();
clear();
sprintf(buf, "%d ",LINES);
for(i=2;i <79;i++)
{
move(1,i);
addstr( "- ");
move(22,i);
addstr( "- ");
}
for(i=2;i <23;i++)
{
move(i,0);
addstr( "| ");
move(i,79);
addstr( "| ");
}
for(i=1;i <LINES;)
{
if(i> 20)flag1=1;
if(i <3)flag1=0;
if(j> 76)flag2=1;
if(j <3)flag2=0;
if(flag1==0)i++;
else i--;
if(flag2==0)j=j+1;
else j=j-1;
if(i%2==1)
standout();
move(i,j);
addstr( "v ");
if(i%2==1)
standend();
refresh();
usleep(100000);
move(i,j);
//addstr( " ");
}
}

makefile:
hello5:hello5.c
gcc -g hello5.c -lcurses -o hello5
clean:
rm -f *.c~ hello5

[解决办法]
#include <stdio.h>
#include <windows.h>

void display( const char * str1, int len1, const char * str2, int len2 )
{
int i = 0;

system( "cls " );

for ( i = 0; i < len1; i++ ) {
putchar( str1[i] );
}

putchar( '\n ' );
for ( i = 0; i < len2; i++ ) {
putchar( str2[i] );
}
putchar( '\n ' );


}

void main( )
{
const char * str1 = "1234567 ";
const char * str2 = "1234567 ";

int i = 0;
int len1 = strlen(str1);
int len2 = strlen(str2);
int loop = len1 > len2 ? len2 : len1;

for ( i = 1; i <= loop; i++ ) {
display( str1, i, str2, i - 1 );
Sleep( 1000 );
display( str1, i, str2, i );
Sleep( 1000 );
}
}

热点排行