139 help
Posted: Sat Jul 13, 2002 10:28 am
[c]/* @JUDGE_ID: 17563KJ 139 C */
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
main()
{
struct sample
{
char head[20];
char name[30];
float cost;
char T;
}sample[3000];
int s_n;
int i,j;
char newstr[300];
char *p;
int loc;
char num[20];
int done;
int num_s;
int len;
int k;
int find;
char call[30];
int min;
char sub[30];
float y,z;
char temp[300];
char *q;
int result;
#ifndef ONLINE_JUDGE
close (0); open ("in", O_RDONLY);
#endif
s_n = -1;
while(gets(newstr) && (newstr[0]!='0' ||newstr[1]!= '0'
||newstr[2]!= '0' ||newstr[3]!= '0' || newstr[4] != '0' || newstr[5]!=
'0')){
s_n++;
sscanf(newstr,"%s",&sample[s_n].head);
for(i = strlen(sample[s_n].head)+1 ;i<=strlen(newstr);i++){
temp[i-strlen(sample[s_n].head)-1] = newstr;
}
/* printf("%s\n",temp);
*/ p = strstr(temp,"$");
result = p -temp;
/* printf("result %d\n",result);
*/ for(i = 0 ; i<25;i++){
num = '\0';
}
for(i = 0 ; i< result;i++){
sample[s_n].name = temp;
}
sample[s_n].name ='\0';
for(i = result+1 ; i<strlen(temp);i++){
num[i-result-1] = temp;
}
sscanf(num,"%f",&sample[s_n].cost);
sample[s_n].cost = sample[s_n].cost/100;
if((sample[s_n].head[0] == '0')&& (sample[s_n].head[1]=='0')){
sample[s_n].T = 'I';
}
if((sample[s_n].head[0] == '0')&& (sample[s_n].head[1]!='0')){
sample[s_n].T = 'S';
}
/* printf("%s\n",num);
printf("%s=%s\n",sample[s_n].head,sample[s_n].name);
printf("cost %.2f\n",sample[s_n].cost);
*/ }
while(scanf("%s %d",&call,&min) && call[0]!= '#'){
/* printf("%s\n",call);
*/ if(call[0] != '0'){
y = 0.00;
z = 0.00;
printf("%-16s%-20s%15s%5d%6.2f%7.2f\n",call,"Local",call,min,0.00,0.00);
}else{
/*----------------------------------------------------*/
find = 0;
for(i = 0 ; i<=s_n ;i++){
if(strstr(call,sample.head)!= NULL){
for(j = strlen(sample.head);j<=strlen(call) ;j++){
sub[j-strlen(sample.head)] = call[j];
}
if(sample.T == 'I'){
if(strlen(sub) >= 4 && strlen(sub)<=10){
find =1;
break;
}
}else if(sample[i].T =='S'){
if(strlen(sub) >= 4 && strlen(sub) <=7){
find =1;
break;
}
}
}
}
if(find == 1){
y = sample[i].cost;
z = y*min;
printf("%-16s%-25s%10s%5d%6.2f%7.2f\n",call,sample[i].name,sub,min,y,z);
}else if(find == 0){
printf("%-16s%-35s%5d%13.2f\nn",call,"Unknown",min,-1.00);
}
/*----------------------------------------------------*/
}
}
}
This is my code.......088925 Broad-wood$ 81
I got correct result for ..
03 Arrow.town$ 38
0061 Australia$ 140
0911 N
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
main()
{
struct sample
{
char head[20];
char name[30];
float cost;
char T;
}sample[3000];
int s_n;
int i,j;
char newstr[300];
char *p;
int loc;
char num[20];
int done;
int num_s;
int len;
int k;
int find;
char call[30];
int min;
char sub[30];
float y,z;
char temp[300];
char *q;
int result;
#ifndef ONLINE_JUDGE
close (0); open ("in", O_RDONLY);
#endif
s_n = -1;
while(gets(newstr) && (newstr[0]!='0' ||newstr[1]!= '0'
||newstr[2]!= '0' ||newstr[3]!= '0' || newstr[4] != '0' || newstr[5]!=
'0')){
s_n++;
sscanf(newstr,"%s",&sample[s_n].head);
for(i = strlen(sample[s_n].head)+1 ;i<=strlen(newstr);i++){
temp[i-strlen(sample[s_n].head)-1] = newstr;
}
/* printf("%s\n",temp);
*/ p = strstr(temp,"$");
result = p -temp;
/* printf("result %d\n",result);
*/ for(i = 0 ; i<25;i++){
num = '\0';
}
for(i = 0 ; i< result;i++){
sample[s_n].name = temp;
}
sample[s_n].name ='\0';
for(i = result+1 ; i<strlen(temp);i++){
num[i-result-1] = temp;
}
sscanf(num,"%f",&sample[s_n].cost);
sample[s_n].cost = sample[s_n].cost/100;
if((sample[s_n].head[0] == '0')&& (sample[s_n].head[1]=='0')){
sample[s_n].T = 'I';
}
if((sample[s_n].head[0] == '0')&& (sample[s_n].head[1]!='0')){
sample[s_n].T = 'S';
}
/* printf("%s\n",num);
printf("%s=%s\n",sample[s_n].head,sample[s_n].name);
printf("cost %.2f\n",sample[s_n].cost);
*/ }
while(scanf("%s %d",&call,&min) && call[0]!= '#'){
/* printf("%s\n",call);
*/ if(call[0] != '0'){
y = 0.00;
z = 0.00;
printf("%-16s%-20s%15s%5d%6.2f%7.2f\n",call,"Local",call,min,0.00,0.00);
}else{
/*----------------------------------------------------*/
find = 0;
for(i = 0 ; i<=s_n ;i++){
if(strstr(call,sample.head)!= NULL){
for(j = strlen(sample.head);j<=strlen(call) ;j++){
sub[j-strlen(sample.head)] = call[j];
}
if(sample.T == 'I'){
if(strlen(sub) >= 4 && strlen(sub)<=10){
find =1;
break;
}
}else if(sample[i].T =='S'){
if(strlen(sub) >= 4 && strlen(sub) <=7){
find =1;
break;
}
}
}
}
if(find == 1){
y = sample[i].cost;
z = y*min;
printf("%-16s%-25s%10s%5d%6.2f%7.2f\n",call,sample[i].name,sub,min,y,z);
}else if(find == 0){
printf("%-16s%-35s%5d%13.2f\nn",call,"Unknown",min,-1.00);
}
/*----------------------------------------------------*/
}
}
}
This is my code.......088925 Broad-wood$ 81
I got correct result for ..
03 Arrow.town$ 38
0061 Australia$ 140
0911 N