G
Guest
Помогите пожалуйста найти ошибку в моей программе.Это универсальная программа тестирования.Вроде все должно работать но почему-то не работает.Вот код программы:[codebox]//универсальная программа тестирования
#include "stdio.h"
#include "conio.h"
#include "string.h"
void main (int arg,char*argv[])
{
char fname[40]; //имя файла текста
FILE*f; //файл текста
int VsegoVopr=0; //количество вопросов теста
int PravOtv=0; //кол-во правх отв.
//для текущего вопроса
int nOtv; //кол-во альтернативных ответов
int Prav; //номер правильного ответа
int Otv; //номер отв выбранного пользователем
int p;
char st[80]; //строка файла теста
int i; //счетчик циклов
//- if (!argc)
{
puts("\nNe zadan fail voprosov testa");
puts("komandnaia stroka: test Imafaila testa\n");
return;
}
strcpy(fname,argv[1]); //имя файла из командной строки
//Открыть файл в режиме чтения® текста (t)
if ((f=fopen(fname,"rt"))==NULL)
{
printf("Owibka otkritia faila %s",fname);
getch();
return;
}
//- clrscr();
puts("\nSe4as vam budet predlojen.");
puts("K kajdomu voprosu daetsia neskoliko \
variantov otveta.");
puts("Vi doljni vvesti nomer pravilinogo otveta.");
puts("i najati klavishu <Enter>\n");
printf("dlia na4ala testirovaniia najmite klavishu <Enter>");
getch();
//- textbackground(BLUE);
//- clrscr();
while (!feof(f))
{
VsegoVopr++;
fgets(st,80,f); //читаем из файла вопрос
printf("\n%s\n",st); //вопрос на экран
fscanf(f,"%i %i",&nOtv,Prav); //кол-во вариантов ответа
//и номер правильного ответа
fgets(st,80,f); //дочитать конец предыдущей строки
//читаем и выводим альтернативные ответы
for (i=1;i<=nOtv;i++)
{
fgets(st,80,f);
printf("%i. %s",i ,st);
}
printf("\nVash vibor->");
scanf("%i",&Otv);
if (Otv == Prav)
PravOtv ++;
}
//обработка рез-та тестирования
//вычислим процент правильных ответов
p = 100*PravOtv/VsegoVopr;
printf("\nVasha ocenka - ");
if (p==100)
puts("Krasav4ik!!!");
if (p>=80 && p<=99)
puts("Tak sebe!!");
if (p>=60 && p<=79)
puts("Slaba4ok!");
if (p<60)
puts("LUZER!!!\n");
puts("\nDlia zaversheniia najmite klavishu <Enter>");
getch();
}
[/codebox]
Вот она же но немного подредактирована.Все равно не выходит.
#include "stdio.h"
#include "conio.h"
#include "string.h"
void main (int arg,char*argv[])
{
char fname[40]; //имя файла текста
FILE*f; //файл текста
int VsegoVopr=0; //количество вопросов теста
int PravOtv=0; //кол-во правх отв.
//для текущего вопроса
int nOtv; //кол-во альтернативных ответов
int Prav; //номер правильного ответа
int Otv; //номер отв выбранного пользователем
int p;
char st[80]; //строка файла теста
int i; //счетчик циклов
//- if (!argc)
{
puts("\nNe zadan fail voprosov testa");
puts("komandnaia stroka: test Imafaila testa\n");
return;
}
strcpy(fname,argv[1]); //имя файла из командной строки
//Открыть файл в режиме чтения® текста (t)
if ((f=fopen(fname,"rt"))==NULL)
{
printf("Owibka otkritia faila %s",fname);
getch();
return;
}
//- clrscr();
puts("\nSe4as vam budet predlojen.");
puts("K kajdomu voprosu daetsia neskoliko \
variantov otveta.");
puts("Vi doljni vvesti nomer pravilinogo otveta.");
puts("i najati klavishu <Enter>\n");
printf("dlia na4ala testirovaniia najmite klavishu <Enter>");
getch();
//- textbackground(BLUE);
//- clrscr();
while (!feof(f))
{
VsegoVopr++;
fgets(st,80,f); //читаем из файла вопрос
printf("\n%s\n",st); //вопрос на экран
fscanf(f,"%i %i",&nOtv,Prav); //кол-во вариантов ответа
//и номер правильного ответа
fgets(st,80,f); //дочитать конец предыдущей строки
//читаем и выводим альтернативные ответы
for (i=1;i<=nOtv;i++)
{
fgets(st,80,f);
printf("%i. %s",i ,st);
}
printf("\nVash vibor->");
scanf("%i",&Otv);
if (Otv == Prav)
PravOtv ++;
}
//обработка рез-та тестирования
//вычислим процент правильных ответов
p = 100*PravOtv/VsegoVopr;
printf("\nVasha ocenka - ");
if (p==100)
puts("Krasav4ik!!!");
if (p>=80 && p<=99)
puts("Tak sebe!!");
if (p>=60 && p<=79)
puts("Slaba4ok!");
if (p<60)
puts("LUZER!!!\n");
puts("\nDlia zaversheniia najmite klavishu <Enter>");
getch();
}
[/codebox]
Вот она же но немного подредактирована.Все равно не выходит.
Код:
//универсальная программа тестирования
#include "stdio.h"
#include "conio.h"
#include "string.h"
#include "iostream.h"
void main (int argc,char*argv[])
{
char qqq[40]; //имя файла текста
FILE*f; //файл текста
int VsegoVopr=0; //количество вопросов теста
int PravOtv=0; //кол-во правельных отв.
//для текущего вопроса
int nOtv; //кол-во альтернативных ответов
int Prav; //номер правильного ответа
int Otv; //номер отв. выбранного пользователем
int p;
char st[80]; //строка файла теста
int i; //счетчик циклов
if (!argc)
{
puts("\nNe zadan fail voprosov testa");
puts("komandnaia stroka: test Imafaila testa\n");
return;
}
strcpy(qqq,argv[1]); //имя файла из командной строки
//Открыть файл в режиме чтения(r) текста (t)
if ((f=fopen("qqq","rt"))==NULL)
{
printf("Owibka otkritia faila %s",qqq);
getch();
return;
}
puts("\nSe4as vam budet predlojen.");
puts("K kajdomu voprosu daetsia neskoliko \
variantov otveta.");
puts("Vi doljni vvesti nomer pravilinogo otveta.");
puts("i najati klavishu <Enter>\n");
printf("dlia na4ala testirovaniia najmite klavishu <Enter>");
getch();
while (!feof(f))
{
VsegoVopr++;
fgets(st,80,f); //читаем из файла вопрос
printf("\n%s\n",st); //вопрос на экран
fscanf(f,"%i %i",&nOtv,Prav); //кол-во вариантов ответа
//и номер правильного ответа
fgets(st,80,f); //дочитать конец предыдущей строки
//читаем и выводим альтернативные ответы
for (i=1;i<=nOtv;i++)
{
fgets(st,80,f);
printf("%i. %s",i ,st);
}
printf("\nVash vibor->");
scanf("%i",&Otv);
if (Otv == Prav)
PravOtv ++;
}
//обработка рез-та тестирования
//вычислим процент правильных ответов
p = 100*PravOtv/VsegoVopr;
printf("\nVasha ocenka - ");
if (p==100)
puts("Otli4no!!!");
if (p>=80 && p<=99)
puts("horowo!!");
if (p>=60 && p<=79)
puts("Udovletvoritelino!");
if (p<60)
puts("PLOHO!!!\n");
puts("\nDlia zaversheniia najmite klavishu <Enter>");
getch();
}