944,156 Members | Top Members by Rank

Ad:
  • C Discussion Thread
  • Unsolved
  • Views: 1896
  • C RSS
Apr 6th, 2006
0

string problem (IMPORTANT) :((

Expand Post »
this problem ask the student name and the grades and keep them in string array. but I have to list all of them in the end of program like this:

Number of students to be entered : 4

1. Student name? Jane
1. Student’s grade? 65
2. Student name? Adam
2. Student’s grade? 85
3. Student name? Jash
3. Student’s grade? 75
4. Student name? Mark
4. Student’s grade? 95

Student List in Name Order
===========================
Adam 75
Jane 85
Jash 95
Tom 65



#include <stdio.h>
#include <conio.h>
#include <string.h>

int mystrcmp(char word[], int counter);

int main()
{
int i, n;
char names[100][20] ={ 10 };
int grades[100] = { 0 };

char tmpName[50] = {40};
char *result;

n = 4;
for( i = 0; i < n; i++ )
{
printf( "Student name? " );
tmpName[0] = 40;

result = _cgets(tmpName);

strcpy(names[i],result);


printf( "Student's grade? " );
scanf ( "%d", &grades[i] );
}

mystrcmp(names,n)

for( i = 0; i < n; i++ )
{
printf( "%s\t%d\n", names[i], grades[i] );
}

return 0;

}
int mystrcmp(char word[][20], int counter)
{
char words[counter][20];
int i,c;

for (i=0; i<counter; i++)
{
while (words[i][c] !=NULL && Words[i+1][c] != NULL)
{
if (words[i][c] > words[i+1][c])
{
// I cant complete the function from here.

I want use buble sort but I cant it. someone can help me for this?
Similar Threads
Reputation Points: 10
Solved Threads: 0
Newbie Poster
la_scala is offline Offline
2 posts
since Mar 2006
Apr 6th, 2006
0

Re: string problem (IMPORTANT) :((

The functions in conio.h are non-standard and not supported by very many compilers. Just a warning because your teacher may not be able to compile your program if he/she uses a compiler that does not support those functions. Most new programmers should not use them so that you learn the generally accepted way to program.

>>char names[100][20] ={ 10 };

what is the significance of 10? why not simply initialize it to 0 like most programmers do?


>>char tmpName[50] = {40};
ditto

>>tmpName[0] = 40;
tmpName is a character array of 40 characters, not an array of pointers. Why are you setting the first element of tempName to 40? What good will that do? _cgets() will just ignore it anyway and fill the buffer with whatever you type, even if you type too many characters. fgets() is a better (and standard) function because it will not overflow the input buffer.
  1. fgets(tmpName,sizeof(tmpName), stdin);


If function mystrcmp() is going to sort the array, then you should name the function that is more descriptive of its true purpose. It contains many uninitialized variables and array. what is the purpose of word array? It isn't initiailized to anything but yet you are attempting to sort it.

There are several variations of the bubble sort, here is the one I use probably because it was the first one I learned. Using the two parameters to the function you posted:
  1. int i,j;
  2. for(i = 0; i < counter-1; i++)
  3. {
  4. char hold[20];
  5. for(j = (i+1); j < counter; j++)
  6. {
  7. if( strcmp(words[i],words[j]) < 0)
  8. {
  9. strcpy(hold,words[i]);
  10. strcpy(words[i], words[j]);
  11. strcpy(words[j],hold);
  12. }
  13. }
  14. }
Sponsor
Team Colleague
Featured Poster
Reputation Points: 5608
Solved Threads: 2283
Retired and Enjoying Life
Ancient Dragon is offline Offline
21,963 posts
since Aug 2005

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in C Forum Timeline: recursion problem
Next Thread in C Forum Timeline: Checking for file differences





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC