PDA

View Full Version : حرفه ای: رفع مشکل این برنامه (C)



download69
چهارشنبه 07 دی 1390, 00:49 صبح
سلام دوستان

دارم روی یک برنامه کار می کنم که اطلاعاتی هم چون اسم،شماره کارمندی،میزان حقوق و تاریخ استخدام حداکثر 6 کارمند را دریافت میکند و طبق یک منو که به کاربر داده می شود برنامه به درخواست کاربر عمل میکنه
که 5 دستور هستند
من این برنامه رو نوشتم ولی به مشکل برخوردم
اگر کسی میتونه کمک کنه یا علی
مشکلش اینه که به دلیل خطاهایی که در برنامه نویسیش هست اجرا نمیشه منم چون در زبان سی تازه کارم نتونستن برطرفشون کنم

#include<stdio.h>
#include<math.h>
#include<conio.h>
#include<string>
char name_p;
main(){
int sum_salary=0;
const int n=6;
struct personel{
char name[n];
int num_p[n];
int salary[n];
int day_p[n];
int month_p[n];
int year_p[n];
}c1;
for (int i=0;i<n;i++)
{
printf("please enter name of personel:\n");
scanf("%c",c1.name[i]);

printf("please enter number of personel:\n");
scanf("%d",&c1.num_p[i]);

printf("please enter day of recuitment personel");
scanf("%d",&c1.day_p[i]);

printf("please enter month of recuitment personel");
scanf("%d",&c1.month_p[i]);

printf("please enter year of recuitment personel");
scanf("%d",&c1.year_p[i]);
printf("pleas enter value of salary");
scanf("%d",&c1.salary[i]);
}

printf("1=avrage of salary of personels\n2=specs of all personels\n");
printf("3=find a personel by personel number\n4=print date of recuitment personel by name of c1.\n");
printf("4=Exit\n\n please select a number of 1 to 5:\n");
int x;
scanf("%d",&x);
while (x<1 || x>5)
{
printf("This number undefinet,please enetr a number of 1 to 5:\n");

scanf("%d",&x);
}
switch (x){
case 1:
for (int j=0;j<n;j++){
sum_salary+=c1.salary[j];
}
printf("avrage of salary is = %d\n",sum_salary/n);
break;
case 2:
for (int j=0;j<n;j++){
printf("name=%c personel number=%d salary=%d date of recuitment=%d/%d/%d\n",c1.name[j],c1.num_p[j],c1.salary[j],c1.day_p[j],c1.month_p[j],c1.year_p[j]);
}
break;
case 3:
printf("please enter personel number :\n");
int n_p;
scanf("%d",&n_p);
printf("%c\n",c1.name[n_p]);
break;
case 4:
scanf("%s",name_p);
for (int k=0;k<n;k++)
{
if (strcmp(c1.name[k],name_p)==0)
{
printf("date of recuitment=%d/%d/%d\n",c1.day_p[k],c1.month_p[k],c1.year_p[k]);
}
}
break;
case 5:
printf("for Exiting press Enter");
break;
}
}

b.saminjad
چهارشنبه 07 دی 1390, 10:54 صبح
سلام

تو این برنامه فقط تو تابع مقایسه(strcmp) پارمترهارو اشتباه نوشته دراین تابع باید پارمترها از نوع رشته باشند نه کارکتر (خط 70)

download69
چهارشنبه 07 دی 1390, 14:15 عصر
فکر کنم مربوط به switch باشه چون به کیس 2 به بعد گیر میده
چون دستورات کیس 1 رو پاک کردم و دبدم که به کیس 3 به بعد گیر داد
حالا نمیدونم چیکارش کنم

b.saminjad
چهارشنبه 07 دی 1390, 14:59 عصر
سلام
من به این صورت درستش کردم در vs اجرا شد



#include<stdio.h>
#include<math.h>
#include<conio.h>
#include<string>
char name_p[10];
void main(){
int sum_salary=0;
const int n=6;
struct personel{
char name[n];
int num_p[n];
int salary[n];
int day_p[n];
int month_p[n];
int year_p[n];
}c1;
for (int i=0;i<n;i++)
{
printf("please enter name of personel:\n");
scanf("%c",c1.name[i]);

printf("please enter number of personel:\n");
scanf("%d",&c1.num_p[i]);

printf("please enter day of recuitment personel");
scanf("%d",&c1.day_p[i]);

printf("please enter month of recuitment personel");
scanf("%d",&c1.month_p[i]);

printf("please enter year of recuitment personel");
scanf("%d",&c1.year_p[i]);
printf("pleas enter value of salary");
scanf("%d",&c1.salary[i]);
}

printf("1=avrage of salary of personels\n2=specs of all personels\n");
printf("3=find a personel by personel number\n4=print date of recuitment personel by name of c1.\n");
printf("4=Exit\n\n please select a number of 1 to 5:\n");
int x;
scanf("%d",&x);
while (x<1 || x>5)
{
printf("This number undefinet,please enetr a number of 1 to 5:\n");

scanf("%d",&x);
}
switch (x){
case 1:
for (int j=0;j<n;j++){
sum_salary+=c1.salary[j];
}
printf("avrage of salary is = %d\n",sum_salary/n);
break;
case 2:
for (int j=0;j<n;j++){
printf("name=%c personel number=%d salary=%d date of recuitment=%d/%d/%d\n",c1.name[j],c1.num_p[j],c1.salary[j],c1.day_p[j],c1.month_p[j],c1.year_p[j]);
}
break;
case 3:
printf("please enter personel number :\n");
int n_p;
scanf("%d",&n_p);
printf("%c\n",c1.name[n_p]);
break;
case 4:
scanf("%s",name_p);
for (int k=0;k<n;k++)
{
if (strcmp(c1.name,name_p)==0)
{
printf("date of recuitment=%d/%d/%d\n",c1.day_p[k],c1.month_p[k],c1.year_p[k]);
}
}
break;
case 5:
printf("for Exiting press Enter");
break;
}
}