Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2013, 12:43   #1
Надинка
Новичок
Джуниор
 
Регистрация: 22.05.2013
Сообщений: 1
По умолчанию Проверить код на С

Помогите, пожалуйста, проверить код на С (именно на С, не С++).

1 Написать программу, которая по номеру дня недели (целому числу от 1 до 7) выдает в качестве результата количество уроков в вашей группе в этот день.
#include < stdio.h >
void main ()
{
int i;
рrintf("Введите день недели от 1 до 7. \n");
scanf(“%d”,&i);

switch (i)
{
case 1:
printf("segodna 4 uroka\n");
break;
case 2:
printf ("segodna 5 uroka\n");
break;
case 3:
printf ("segodna 2 uroka\n");
break;
case 4:
printf ("segodna 3 uroka\n");
break;
case 5:
printf ("segodna 4 uroka\n");
break;
case 6:
printf ("segodna net urokov\n");
break;
case 7:
printf ("segodna net urokov\n");
default : printf ("net takogo dny\n");
}


2 Определить, сколько раз в массиве встречается последовательность 123.
#include <stdio.h>
#include <conio.h>
void main()
{
int massive[10];
int lenght = 0, counter = 0;
printf("Vvedite posledovatelnost'\n");
scanf("%s", massive);
fflush(stdin);
lenght = strlen(massive);
for( i = 0; i < lenght; i++)
{
if(i < lenght-2)
{ if(massive[i] == 1)
{ if(massive[i+1] == 2)
{ if(massive[i+2] == 3)
{ i += 2;
counter++; } } } }
}
printf("\nKolichestvo povtorenii '123': %d", counter);
getch(); }


3 Написать программу, которая анализирует данные о возрасте и относит человека к одной из групп: дошкольник, ученик, работник, пенсионер.

#include <stdio.h>
#include <conio.h>
void main ()
{
int a; char b;
printf("enter the value:\n");
scanf("%d %c",&a,&b);
if (a<6)
printf(“doshkolnik”);
else
{
if (a<17)
printf(“shkolnik”);
else
{
if ((a<55)&&(b==’f’) || (b==’m’)&&(a<66)
printf(“rabotnik”);
else printf(“pensioner”);
}
}
getch();
}


4 Определить, сколько процентов от всего количества элементов массива составляют отрицательные элементы.

#include <stdio.h>
void main ()
{
int i, n ;
float kol=0;
printf("Введите размерность массива N\n");
scanf("%d",&n);
int a[n];
printf("Введите массив a\n");
for (i=0; i<n; i++)
{
if(a[i] < 0) {kol++; }
}
printf ("Процент отрицательных элементов в массиве kol\n", n*100\kol);
return 0;
}


5 Подсчитать количество положительных среди чисел а, b, с…

#include <stdio.h>
int main ()
{
int i, n,kol=0;
printf("Введите размерность массива N\n");
scanf("%d",&n);
int а[n];
printf("Введите массив a\n");
for (i=0; i<n; i++)
{
if(a[i] >0)
{
kol ==kol++
printf(" %d\n", &kol);
}
}
getch ();
}

6 Напечатать элементы массива, индексы которых являются степенями двойки.

#include <stdio.h>
#include <math.h>
void main()
{
int i, n ;
printf ( "Enter integer value: ");
scanf("%d",&n);
int a[n];
printf("Введите массив a\n");
for (i = 0; i < n; i++)
{
a[i]=i;
if(logb==i)
printf(" %d\n", & a[i]);
}
getch ();
}
Надинка вне форума Ответить с цитированием
Старый 22.05.2013, 12:53   #2
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

В 1 не закрыта скобка main. Пробелы при включении заголовочного файла не нужны: <stdio.h>

В 2 выход за пределы массива. Переменная i не объявлена. scanf("%s", massive);
ошибочно - лучше заполнить в цикле по одному.

В 5 ошибка - нет точки с запятой в конце : достаточно kol++; В printf(" %d\n", &kol); символ & является ненужным.

В 6 ошибка if(logb==i) т. к logb не объявлено. Если это функция то b должно быть в скобках. В printf(" %d\n", & a[i]); не нужен &
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 22.05.2013, 12:57   #3
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

1) Управление "проваливается" сквозь метки в отсутствие break, так что при i==7, будет выведено "segodna net urokov\nnet takogo dny\n";
2) В условии не сказано, что последовательность не длиннее 10 символов;
3) Не сбалансированы скобки в if в конце... и Вы уверены, что пенсионный возраст мужчин - с 66?
4) Должна быть ошибка компиляции. Как минимум из-за "знака деления" \. Массив a нигде в коде не заполняется (да и, собственно, не нужен).
5) Та же претензия. Также, неверное использование printf.
6) Кто такой logb? Массив a заполняется числами от 0 до n-1, это явно не то, что требуется в задании.
Abstraction вне форума Ответить с цитированием
Старый 22.05.2013, 13:59   #4
Че Гевара
Форумчанин
 
Аватар для Че Гевара
 
Регистрация: 25.09.2012
Сообщений: 182
По умолчанию

№2
Цитата:
Код:
if(i < lenght-2)
 { if(massive[i] == 1)
 { if(massive[i+1] == 2)
 { if(massive[i+2] == 3)
 { i += 2;
 counter++; } } } }
Вот такого месива в коде лучше не допускать, приучайтесь сразу писать красивей не плодить пятиуровневые системы условий или циклов
Этот кусок вполне можно реализовать так:
Код:
  if(i < lenght-2 && massive[i] == 1 && massive[i+1] == 2 && massive[i+2] == 3)
  { i += 2;
  counter++;}
Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать.
Brian W. Kernighan.
Че Гевара вне форума Ответить с цитированием
Старый 22.05.2013, 16:36   #5
revizor
Форумчанин
 
Аватар для revizor
 
Регистрация: 20.01.2013
Сообщений: 146
По умолчанию

5-ая задача скомпилировалась? Ведь размер массива должен быть константой

Цитата:
printf("Введите размерность массива N\n");
scanf("%d",&n);
int а[n];
revizor вне форума Ответить с цитированием
Старый 24.05.2013, 16:32   #6
Jim Hart
 
Аватар для Jim Hart
 
Регистрация: 14.01.2012
Сообщений: 3
По умолчанию

Я так понял что нужно переделать код с С++ на Си.
Вот как мне кажется решение задачи №3
3 Написать программу, которая анализирует данные о возрасте и относит человека к одной из групп: дошкольник, ученик, работник, пенсионер.
Код HTML:
#include<stdio.h>
void main()
{  
	int x;
	printf("vvedite vozrast:");
	scanf("%d",&x);
	if(x<=6)
		printf("Doshkolnik\n");
	if(x>=6||x<=17)
		printf("ychenik\n");
	if(x>=17||x<=60)
		printf("rabotnik\n");
	else
		printf("pensioner\n");
}
по идее так должно быть на Си
Jim Hart вне форума Ответить с цитированием
Старый 24.05.2013, 16:38   #7
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
по идее так должно быть на Си
Ага, хорошее краткое справочное руководство "как не надо писать программы".
Код:
	if(x>=6||x<=17)
Эквивалентно
Код:
if(true)
Ну, и женщины и мужчины у нас вроде пока что выходят на пенсию в разном возрасте, нет?
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверить код Artem131 Общие вопросы C/C++ 0 29.04.2013 22:47
Надо проверить код. С++ . Kirill_Y Помощь студентам 4 28.10.2012 10:59
проверить код и защита cargo29 PHP 5 24.10.2012 11:55
проверить код delfin07 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 21.02.2012 13:58
Прошу проверить код pandaaaaa Паскаль, Turbo Pascal, PascalABC.NET 6 14.12.2011 01:58