Pagini recente » Cod sursa (job #2240624) | Cod sursa (job #1541302) | Cod sursa (job #1753976) | Cod sursa (job #1587868) | Cod sursa (job #739855)
Cod sursa(job #739855)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 64
char ***s;
void create(int nv,int lv)
{
int i,j;
s = (char***) malloc((nv+1) * sizeof(char**));
for (i = 1; i <= nv; i++)
{
s[i] = (char **) malloc((lv+1) * sizeof(char*));
for (j = 1; j <= lv; j++)
s[i][j] = (char*) malloc(16 * sizeof(char));
}
}
void delete_s(int nv,int lv)
{
int i,j;
for(i = 1; i <= nv; i++)
{
for(j = 1; j <= lv; j++)
free(s[i][j]);
free(s[i]);
}
free(s);
}
int convertStringToInt(char *ss)
{
int x = 0, flag = 0, i;
if(ss[0]=='-')
flag = 1;
for(i=flag;i<strlen(ss);i++)
{
x*=10;
x+=ss[i] - '0';
}
if(flag)
x*=-1;
return x;
}
char* convertIntToString(int x)
{
char p[16]="0\0",q[16]="";
int i=0;
if(x<0)
{
q[0]='-';
x*=-1;
}
while(x)
{
p[++i] = x%10 + '0';
x/=10;
}
strrev(p);
strcat(q,p);
q[strlen(q)-1]='\0';
if(strcmp(q,"")==0)
strcpy(q,"0");
return q;
}
int check(char *ss)
{
int i;
if((ss[0]-'0' < 0 || ss[0]-'0' > 9) && ss[0]!='-')
return 0;
for(i=1;i<strlen(ss);i++)
if(ss[i]-'0' < 0 || ss[i]-'0' > 9)
return 0;
return 1;
}
void vector(int lv, char **a, char **b)
{
int i,aux;
for(i=1;i<=lv;i++)
{
aux = convertStringToInt(a[i]) + convertStringToInt(b[i]);
strcpy(a[i],convertIntToString(aux));
}
}
void read(int nv, int lv)
{
int i,j,flag=1;
char blank[5];
gets(blank); //in gol
for(i=1;i<=nv;i++)
{
for(j=1;j<=lv;j++)
{
printf("sir%d[%d] = ",i,j);
gets(s[i][j]);
if(!check(s[i][j]))
{
flag = 0;
printf("\nERROR - %s is NaN", s[i][j]);
break;
}
}
if(!flag) break;
if(i!=1)
vector(lv,s[i-1],s[i]);
}
}
void print(int nv, int lv)
{
int i,j;
for(i=1;i<nv;i++)
{
printf("\nsir%d-sir%d: ",i,i+1);
for(j=1;j<=lv;j++)
printf("%s ", s[i][j]);
}
}
int main()
{
int lv,nv;
printf("Lungimea vectorilor: ");
scanf("%d",&lv);
printf("Numarul vectorilor: ");
scanf("%d",&nv);
create(nv,lv);
read(nv,lv);
print(nv,lv);
delete_s(nv,lv);
return 0;
}