Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Нужна помощь. Не могу разобратся в коде

71K
01 июня 2011 года
Alex_V
1 / / 01.06.2011
Нужна помощь. Нашел код проги. но не могу полностью в ней разобраться. Интересует что выполняет функция convertRoll.
#include <stdio.h>
#include "mpi.h"
#include <mysql.h>
#include <string.h>

#define SERVER1 "10.255.2.61"
#define SERVER2 "10.255.2.63"
#define SERVER3 "10.255.2.60"
#define SERVER4 "10.255.2.34"



void convertRoll(int *b, int *c){
printf("Please enter the roll number: ");
int tempRoll;

scanf("%d", &tempRoll);
if (tempRoll<10)
{
*b=0;
*c=tempRoll;
}else if(tempRoll<19 && tempRoll>=10){
*b=1;
*c=tempRoll%10;

}else if(tempRoll <29 && tempRoll >=20){
*b = 2;
*c = tempRoll%10;
}else{
*b=3;
*c=0;
}


}



int main(int argc, char *argv[])
{

int myid,r,j;
int destiny;
float sum=0.0,cgpa=0.0;
MPI_Status status;


int roll[2];
roll[0]=0;
roll[1]=0;

int year[1];
char c;
char returnResult[40];
char returnName[20];
char returnGrade[5];

int i=0;
int one = 1, two = 2, three = 3, four = 4;
int numprocs;
int n = 0;

//mysql connection details

float temp;
char query[100];
char *username="mpiuser";
char *password="iit123";
// char *server = SERVER1;
char server[40];
char *database = "info";

//Mysql variables
MYSQL *conn;
MYSQL_RES *result;
MYSQL_ROW row;
int num_fields;


MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
MPI_Comm_rank(MPI_COMM_WORLD, &myid);

// while(1){
if (myid == 0)
{

for(r=1;r<6;r++){
//convertRoll(&roll[0], &roll[1]);


sum=0;
for(j=1; j<numprocs; j++)
{
temp = 0;
MPI_Send(roll, sizeof (roll), MPI_INT, j, 11, MPI_COMM_WORLD);

MPI_Recv(returnResult, 40, MPI_CHAR, j, 6, MPI_COMM_WORLD, &status);
temp = returnResult[0]-'0'+(returnResult[2] -'0' )*0.1;

sum = sum + temp;

}

cgpa = sum/4;
printf("CGPA : %.2f\n", cgpa);


returnResult[0]='\0';

}

}


else if (myid == 1)
{

//printf("\n%d\n",myid);
strcpy(server, SERVER1);

MPI_Recv(roll, sizeof (roll), MPI_INT, MPI_ANY_SOURCE, 11, MPI_COMM_WORLD, &status);

if(conn = mysql_init(NULL))
{

}

/* Connect to database */

if (!mysql_real_connect(conn, server, username, password, database, 0, NULL, 0))
{

fprintf(stderr, "%s\n", mysql_error(conn));

}
sprintf(query, "Select * from %s ;", "semester", roll[0], roll[1]);


mysql_query(conn, query);
result = mysql_store_result(conn);

num_fields = mysql_num_fields(result);

while ((row = mysql_fetch_row(result)))
{

strcat(returnResult, row[2]);



printf("\n");
}



MPI_Send(returnResult, 40, MPI_CHAR, 0, 6, MPI_COMM_WORLD);

returnResult[0]='\0';
mysql_free_result(result);

mysql_close(conn);

}

else if (myid == 2)
{ // printf("\n%d\n",myid);
strcpy(server, SERVER2);
MPI_Recv(roll, sizeof (roll), MPI_INT, MPI_ANY_SOURCE, 11, MPI_COMM_WORLD, &status);


if(conn = mysql_init(NULL))
{

}

/* Connect to database */

if (!mysql_real_connect(conn, server, username, password, database, 0, NULL, 0))
{

fprintf(stderr, "%s\n", mysql_error(conn));

}
sprintf(query, "Select * from %s ;", "semester");


mysql_query(conn, query);
result = mysql_store_result(conn);

num_fields = mysql_num_fields(result);

while ((row = mysql_fetch_row(result)))
{

strcat(returnResult, row[2]);

printf("\n");
}



MPI_Send(returnResult, 40, MPI_CHAR, 0, 6, MPI_COMM_WORLD);

returnResult[0]='\0';
mysql_free_result(result);

mysql_close(conn);


}
else if (myid == 3)
{ //printf("\n%d\n",myid);
strcpy(server, SERVER3);
MPI_Recv(roll, sizeof (roll), MPI_INT, MPI_ANY_SOURCE, 11, MPI_COMM_WORLD, &status);


if(conn = mysql_init(NULL))
{

}

/* Connect to database */

if (!mysql_real_connect(conn, server, username, password, database, 0, NULL, 0))
{

fprintf(stderr, "%s\n", mysql_error(conn));

}
sprintf(query, "Select * from %s;", "semester");
//printf("%s", query);

mysql_query(conn, query);
result = mysql_store_result(conn);

num_fields = mysql_num_fields(result);

while ((row = mysql_fetch_row(result)))
{

strcat(returnResult, row[2]);

printf("\n");
}



MPI_Send(returnResult, 40, MPI_CHAR, 0, 6, MPI_COMM_WORLD);

returnResult[0]='\0';
mysql_free_result(result);

mysql_close(conn);


}else if (myid == 4)
{ // printf("\n%d\n",myid);
strcpy(server, SERVER4);
MPI_Recv(roll, sizeof (roll), MPI_INT, MPI_ANY_SOURCE, 11, MPI_COMM_WORLD, &status);


if(conn = mysql_init(NULL))
{

}

/* Connect to database */

if (!mysql_real_connect(conn, server, username, password, database, 0, NULL, 0))
{

fprintf(stderr, "%s\n", mysql_error(conn));

}
sprintf(query, "Select * from %s ;", "semester");


mysql_query(conn, query);
result = mysql_store_result(conn);

num_fields = mysql_num_fields(result);

while ((row = mysql_fetch_row(result)))
{

strcat(returnResult, row[2]);

printf("\n");
}



MPI_Send(returnResult, 40, MPI_CHAR, 0, 6, MPI_COMM_WORLD);

returnResult[0]='\0';
mysql_free_result(result);

mysql_close(conn);


}



MPI_Finalize();
return 0;

}
278
01 июня 2011 года
Alexander92
1.1K / / 04.08.2008
Цитата: Alex_V
Интересует что выполняет функция convertRoll.



Что-то вроде целочисленного деления на 10 с остатком, причем достаточно криво реализованное. Принимает на вход два параметра (b и c). Запрашивает пользователя ввести некоторое число. Если оно лежит в промежутке от 0 до 9, то b = 0, c = (остаток от деления числа на 10). Если оно лежит в промежутке от 10 до 19, то b = 1, c = (остаток от деления числа на 10). Если оно лежит в промежутке от 20 до 29, то b = 2, c = (остаток от деления числа на 10). Если же оно больше либо равно 30, то b = 3, c = 0.

Более-менее нормальная реализация следующая:

Код:
void convertRoll(int *b, int *c) {
  unsigned int temp_roll = 0;

  printf("%s: \n", "Please enter the roll number");

  scanf("%d", &temp_roll);
  *b = temp_roll / 10;
  if (temp_roll < 30)
   *c = temp_roll % 10;
  else
   *c = 0;
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог