Προς το περιεχόμενο

απορια στην C


kousman

Προτεινόμενες αναρτήσεις

Δημοσ.

εχω μια ασκηση που λεει να της δοσουμε μια λεξη με κεφαλαια και το προγραμμα να βαζει τα κεφαλαια σε ενα νεο πινακα .Θα βρίσκει πρώτα όλα τα φωνήεντα του αλφαριθμητικού και θα αντιστρέφει τη σειρά τους και μετά θα βρίσκει όλα τα

σύμφωνα του αλφαριθμητικού και θα αντιστρέφει τη σειρά τους. Στο τέλος θα τυπώνει στην οθόνη το αποτέλεσμα. εγω εχω φτιαξει μια συναρτηση που να ελεγχει για κεφαλαια αλλη μια για την αντιστροφή των φωνηέντων και αλλη μια για την αντιστροφή των συμφώνων. εχω σκαλωσει και δεν μπορω να ενωσω του πινακες δλδ οταν δινω μονο φωνηεντα ή μονο συμφωνα δουλευει αν τα δωσω ολα μαζι δεν δουλευει...μπορειτε να βοηθήσετε?

 

#include<stdio.h>

#include<stdlib.h>

char x[128];

char isupper(char[],int k);

int pos_psifia,k,i,j,timi;

main()

{

printf("dose sim");

gets(x);

while(x) // find the length of the sting

{

i++;

}

pos_psifia=i;

printf("pos_psifia");

printf("%d",pos_psifia);

if(pos_psifia>128)

{

printf("dosate parapano xaraktires sto string"); //elegxos megethos sumvoloseiras

exit(0);

}

 

isupper(x,pos_psifia);

system("pause");

}

 

 

 

 

/********************************SINARTISEIS*****************************/

char isupper(char x[],int k)

{

void isvowels(char x[],int c);

char tiposi[128];

char kef[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";

char sim[]="BCDFGHGKLMNPQRSTVWXYZ";

int i,v=0;

char fon[]="AEOIU";

char sum[]="BCDFGHJKLMNPQRSTVWXYZ";

for(i=0;i<=pos_psifia;i++)

{ timi=0;

for(k=0;k<=26;k++)

{

if(x==kef[k])

{

tiposi=kef[k];

timi=1;

 

}

}

 

if (timi==0)

{

printf("oxi");

exit(0);

}

 

}

puts(tiposi);

isvowels(x,pos_psifia);

return(0);

}

 

 

 

 

 

void isvowels(char x[],int pos_psifia)

{

char kef[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";

char sim[]="BCDFGHGKLMNPQRSTVWXYZ";

int i,f,b,fo[128],thesi[128],j,orio,temp_1,m,z,pos_fo,v=0;

char fon[]="AEOIU";

char sum[]="BCDFGHJKLMNPQRSTVWXYZ";

char kai[128];

void iscon(char x[],int pos_psifia);

j=0;

f=0;

for(i=0;i<=pos_psifia;i++)

{

for(k=0;k<=4;k++)

{

if(x==fon[k])

{

fo[j]=i;

j++;

 

 

}

 

}

}

//EDO THA BEI IS CONSO

iscon(x,pos_psifia);

 

 

pos_fo=j;

printf("FONIENTA:%d",pos_fo);

 

 

 

for(i=0;i<pos_fo;i++)

{

thesi=fo;

}

 

 

if((pos_fo%2)==0)

{

orio=pos_fo/2;

for(i=0;i<orio;i++)

{

temp_1=fo;

fo=fo[pos_fo-i-1];

fo[pos_fo-i-1]=temp_1;

}

for(b=0;b<pos_fo;b++)

{

z=thesi;

m=fo;

kai[z]=x[m];

}

}

else if((pos_fo%2)!=0)

{

orio=pos_fo%2;

for(i=0;i<orio;i++)

{

temp_1=fo;

fo=fo[pos_fo-i-1];

fo[pos_fo-i-1]=temp_1;

}

for(b=0;b<pos_fo;b++)

{

z=thesi;

m=fo;

kai[z]=x[m];

}

}

 

 

for (b=0;b<pos_fo;b++)

printf("%c",kai);

 

 

}

 

 

 

 

void iscon(char x[],int pos_psifia)

{

char kef[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";

char sim[]="BCDFGHGKLMNPQRSTVWXYZ";

int i,f,s,b,thesi1[128],su[128],orio,temp_1,m,z,pos_su,v=0;

char fon[]="AEOIU";

char sum[]="BCDFGHJKLMNPQRSTVWXYZ";

char kai[128];

f=0;

for(i=0;i<=pos_psifia;i++)

{

 

for(s=0;s<=20;s++)

{

if(x==sum)

{

su[f]=i;

f++;

}

}

}

pos_su=f;

printf("sumfona:%d",pos_su);

 

 

for(i=0;i<pos_su;i++)

{

thesi1=su;

}

 

if((pos_su%2)==0)

{

orio=pos_su/2;

for(i=0;i<orio;i++)

{

temp_1=su;

su=su[pos_su-i-1];

su[pos_su-i-1]=temp_1;

}

for(b=0;b<pos_su;b++)

{

z=thesi1;

m=su;

kai[z]=x[m];

}

}

else if((pos_su%2)!=0)

{

orio=pos_su%2;

for(i=0;i<orio;i++)

{

temp_1=su;

su=su[pos_su-i-1];

su[pos_su-i-1]=temp_1;

}

for(b=0;b<pos_su;b++)

{

z=thesi1;

m=su;

kai[z]=x[m];

}

}

 

for (b=0;b<pos_su;b++)

printf("%c",kai);

 

}

Δημοσ.

Άσχετο με την ερώτηση αλλα έχω την αίσθηση οτι αν δώσεις παραπάνω απο 127 ψαρακτηρες θα πάει και θα γράψει στην επόμενη θέση στη μνήμη και δεν το θες αυτό. Επίσης δεν είμαι σίγουρος οτι δουλεύει ο έλεγχος μεγέθους έτσι (αν θα θεωρήσει το \0 ως εξοδο απο τη while).

Ας το κοιτάξει και κανας άλλος δεν έχω compiler μπροστα μου.

Δημοσ.

σορρυ αλλα δεν ξερω πως να το κανω με code tag το ψαχνω

 

---------- Το μήνυμα προστέθηκε στις 16:09 ----------

 

>#include<stdio.h>
#include<stdlib.h>
char x[128];
char isupper(char[],int k);
char iscon(char x[],int pos_psifia);
char isvowels(char x[],int pos_psifia);
int pos_psifia,k,i,j,timi;
main()
{
 printf("dose sim");
 gets(x);
 	while(x[i])		                                          // find the length of the sting
	{
		i++;
	}
		pos_psifia=i;
		printf("pos_psifia");
		printf("%d",pos_psifia);
if(pos_psifia>128)
{
	printf("dosate parapano xaraktires sto string");    //elegxos megethos sumvoloseiras
	exit(0);
}

isupper(x,pos_psifia);
   system("pause");
}




/********************************SINARTISEIS*****************************/
char isupper(char x[],int k)
{	
void isvowels(char x[],int c);
char tiposi[128];
char kef[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char sim[]="BCDFGHGKLMNPQRSTVWXYZ";
int i,v=0;
char fon[]="AEOIU";
char sum[]="BCDFGHJKLMNPQRSTVWXYZ";
for(i=0;i<=pos_psifia;i++)
{	timi=0;
for(k=0;k<=26;k++)
{
	if(x[i]==kef[k])
		{
			tiposi[i]=kef[k];
			timi=1;
		
		}
}
	
if (timi==0)
{
	printf("oxi");
	exit(0);
}

}
puts(tiposi);
isvowels(x,pos_psifia);
iscon(x,pos_psifia);
   return(0);
}





char isvowels(char x[],int pos_psifia)
{
	char kef[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char sim[]="BCDFGHGKLMNPQRSTVWXYZ";
int i,f,b,fo[128],thesi[128],j,orio,temp_1,m,z,pos_fo,v=0;
char fon[]="AEOIU";
char sum[]="BCDFGHJKLMNPQRSTVWXYZ";
char kai[128];
void iscon(char x[],int pos_psifia);
 j=0;
 f=0;
for(i=0;i<=pos_psifia;i++)
{
	for(k=0;k<=4;k++)
	{
		if(x[i]==fon[k])
		{
			fo[j]=i;
			j++;
		
		
		}
	
	}
}
	//EDO THA BEI IS CONSO
iscon(x,pos_psifia);


pos_fo=j;




for(i=0;i<pos_fo;i++)
{
	thesi[i]=fo[i];
}


if((pos_fo%2)==0)
{
	orio=pos_fo/2;
	for(i=0;i<orio;i++)
	{
		temp_1=fo[i];
		fo[i]=fo[pos_fo-i-1];
		fo[pos_fo-i-1]=temp_1;
	}
	for(b=0;b<pos_fo;b++)
	{
		z=thesi[b];
		m=fo[b];
		kai[z]=x[m];
	}
}
else if((pos_fo%2)!=0)
{
	orio=pos_fo%2;
		for(i=0;i<orio;i++)
	{
		temp_1=fo[i];
		fo[i]=fo[pos_fo-i-1];
		fo[pos_fo-i-1]=temp_1;
	}
	for(b=0;b<pos_fo;b++)
	{
		z=thesi[b];
		m=fo[b];
		kai[z]=x[m];
	}
}


for (b=0;b<pos_fo;b++)
	printf("%c",kai[b]);


}




char iscon(char x[],int pos_psifia)
{
char kef[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char sim[]="BCDFGHGKLMNPQRSTVWXYZ";
int i,f,s,b,thesi1[128],su[128],orio,temp_1,m,z,pos_su,v=0;
char fon[]="AEOIU";
char sum[]="BCDFGHJKLMNPQRSTVWXYZ";
char kai[128];
f=0;
for(i=0;i<=pos_psifia;i++)
{
	
		for(s=0;s<=20;s++)
	{
		if(x[i]==sum[s])
		{
			su[f]=i;
			f++;
		}
	}
}
pos_su=f;



for(i=0;i<pos_su;i++)
{
	thesi1[i]=su[i];
}

if((pos_su%2)==0)
{
	orio=pos_su/2;
	for(i=0;i<orio;i++)
	{
		temp_1=su[i];
		su[i]=su[pos_su-i-1];
		su[pos_su-i-1]=temp_1;
	}
	for(b=0;b<pos_su;b++)
	{
		z=thesi1[b];
		m=su[b];
		kai[z]=x[m];
	}
}
else if((pos_su%2)!=0)
{
	orio=pos_su%2;
		for(i=0;i<orio;i++)
	{
		temp_1=su[i];
		su[i]=su[pos_su-i-1];
		su[pos_su-i-1]=temp_1;
	}
	for(b=0;b<pos_su;b++)
	{
		z=thesi1[b];
		m=su[b];
		kai[z]=x[m];
	}

   
   }

for (b=0;b<pos_su;b++)
	printf("%c",kai[b]);

}

Δημοσ.

τι εννοείς θα αντιστρέφει τα φωνήεντα(την σειρά τους)?

 

αν δώσω δηλαδή το

 

abcdABEGHDYHIOPDPTHIBM

 

ποιο θα είναι το σωστό αποτέλεσμα?

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...