Jump to content


Photo
- - - - -

need help


  • Please log in to reply
17 replies to this topic

#1 oleksa

oleksa

    Advanced Member

  • True Members
  • PipPipPip
  • 41 posts
0
Обычный

Posted 26 September 2009 - 16:16

как сделать
===================================

#include<stdio.h>
main()
{

int i, sum, N;

i = 0;
sum = 0;

printf("Введите число\n");
scanf("%d", & N);

while(i <= N) {

sum = sum + i;
i++;
}

printf("сумма =%d\n", sum);

}

===================================

цикл в цикле с контрольным значением, например, (-1) : чтобы программа заканчивала работу при вводе -1
  • 0

#2 лайт

лайт

    iddqd

  • True Members
  • PipPipPipPipPip
  • 3,843 posts
9
Обычный
  • Пол:Мужчина

Posted 26 September 2009 - 16:51

А зачем делать цикл в цикле?

// вставить после scanf
if(N == -1)
  return 0; // или что там программу в шарпе завершает?

  • 0

#3 fiXXXer

fiXXXer

    Super True Member

  • True Members
  • PipPipPipPipPip
  • 411 posts
0
Обычный
  • Пол:Мужчина
  • Город:Saint-Petersburg, Russia
  • Интересы:Sex, Drugs, Rock'n'Roll ;)

Posted 26 September 2009 - 18:47

Задание сформулируй нормально. А по тому, что сказано, - пост#2 решает проблему выхода [встаить строчку надо после scanf'а] (только при чем там шарп неясно =)))
  • 0

From: 2:5030/659

http://medved.kicks-ass.net


#4 лайт

лайт

    iddqd

  • True Members
  • PipPipPipPipPip
  • 3,843 posts
9
Обычный
  • Пол:Мужчина

Posted 26 September 2009 - 21:15

Задание сформулируй нормально. А по тому, что сказано, - пост#2 решает проблему выхода (только при чем там шарп неясно =)))

C# = Си шарп = http://ru.wikipedia.org/wiki/C_Sharp.
  • 0

#5 Veline

Veline

    Super True Member

  • Moderators
  • PipPipPipPipPip
  • 759 posts
2
Обычный
  • Пол:Мужчина
  • Город:SPB

Posted 26 September 2009 - 21:34

при чем здесь шарп?
  • 0

#6 лайт

лайт

    iddqd

  • True Members
  • PipPipPipPipPip
  • 3,843 posts
9
Обычный
  • Пол:Мужчина

Posted 26 September 2009 - 22:08

при чем здесь шарп?

Кстати, да. Это совсем не шарп.
  • 0

#7 oleksa

oleksa

    Advanced Member

  • True Members
  • PipPipPip
  • 41 posts
0
Обычный

Posted 27 September 2009 - 16:35

это я нубаска перепутала, это просто код С. задача посчитать сумму первых N чисел, и сделать так чтобы прога не заканчивала работу после ввода N, а давала ответ и делала запрос на следующее число N и тд пока не наберу -1
а цикл в цикле надо сделать по заданию
  • 0

#8 Serge

Serge

    Одмин

  • Admin
  • PipPipPipPipPip
  • 7,118 posts
9,045
Очень хороший
  • Пол:Мужчина
  • Город:Питер

Posted 27 September 2009 - 16:57

ну как вариант, перед первым printf -- while(1) {
после последнего printf -- }
после scanf -- if (N == -1) break;
  • 0
ftp://10.128.1.5 (новый мега сервер на 38TB)

#9 fiXXXer

fiXXXer

    Super True Member

  • True Members
  • PipPipPipPipPip
  • 411 posts
0
Обычный
  • Пол:Мужчина
  • Город:Saint-Petersburg, Russia
  • Интересы:Sex, Drugs, Rock'n'Roll ;)

Posted 27 September 2009 - 18:19

после последнего printf -- }

Для сохранения логики программы, перед "}" нужно обнулить "i" и "sum".

Вкратце, как-то так:
int main(int argc, char ** argv)
{
	int i = 0, 
		sum = 0, 
		N;

	while (printf("Введите число: ") && scanf("%d", &N) && N!=-1)
	{
		while(i <= N) 
			sum += i++;
		printf("Сумма = %d\n", sum);
		sum = i = 0;
	}

	return 0;
}

  • 0

From: 2:5030/659

http://medved.kicks-ass.net


#10 лайт

лайт

    iddqd

  • True Members
  • PipPipPipPipPip
  • 3,843 posts
9
Обычный
  • Пол:Мужчина

Posted 27 September 2009 - 18:37

Для сохранения логики программы, перед "}" нужно обнулить "i" и "sum".

Вкратце, как-то так:

int main(int argc, char ** argv)
{
	int i = 0, 
		sum = 0, 
		N;

	while (printf("Введите число: ") && scanf("%d", &N) && N!=-1)
	{
		while(i <= N) 
			sum += i++;
		printf("Сумма = %d\n", sum);
		sum = i = 0;
	}

	return 0;
}

int argc, char ** argv - зачем?
printf("Введите число: ") в while не нужен.
  • 0

#11 fiXXXer

fiXXXer

    Super True Member

  • True Members
  • PipPipPipPipPip
  • 411 posts
0
Обычный
  • Пол:Мужчина
  • Город:Saint-Petersburg, Russia
  • Интересы:Sex, Drugs, Rock'n'Roll ;)

Posted 27 September 2009 - 18:46

int argc, char ** argv - зачем?
printf("Введите число: ") в while не нужен.


1. Можно и просто int main() оставить. А вообще они - для доступа к параметрам, с которыми запускается программа.
2. printf нужен. Откуда еще пользователь узнает, что ему надо именно число ввести (или вообще, что-то ввести).
  • 0

From: 2:5030/659

http://medved.kicks-ass.net


#12 лайт

лайт

    iddqd

  • True Members
  • PipPipPipPipPip
  • 3,843 posts
9
Обычный
  • Пол:Мужчина

Posted 27 September 2009 - 21:18

1. Можно и просто int main() оставить. А вообще они - для доступа к параметрам, с которыми запускается программа.
2. printf нужен. Откуда еще пользователь узнает, что ему надо именно число ввести (или вообще, что-то ввести).

1. Нужно. Которые в этой программе вообще не используются.
2. В while не нужен, т.к. усложняет конструкцию. После while.
  • 0

#13 Veline

Veline

    Super True Member

  • Moderators
  • PipPipPipPipPip
  • 759 posts
2
Обычный
  • Пол:Мужчина
  • Город:SPB

Posted 27 September 2009 - 22:14

лайт, ты уже определился на чем пишем-то? на Си или Си шарпе? :)

1. Нужно. Которые в этой программе вообще не используются.
2. В while не нужен, т.к. усложняет конструкцию. После while.


1. Нет, не нужно. При компиляции они будут исключены и память под них (8 байт) выделяться не будет.
2. См. код.
  • 0

#14 лайт

лайт

    iddqd

  • True Members
  • PipPipPipPipPip
  • 3,843 posts
9
Обычный
  • Пол:Мужчина

Posted 28 September 2009 - 00:31

лайт, ты уже определился на чем пишем-то? на Си или Си шарпе? :)
1. Нет, не нужно. При компиляции они будут исключены и память под них (8 байт) выделяться не будет.
2. См. код.

Я определился в 6-м посте. И я ничего не писал про Си, покажи мне то предложение, где это написано с моего акканута.
1. Что не нужно? Ты внимательно прочитал пост? С цитатой? Нет, прочти ещё раз.
2. И что я там увижу? while (printf("Введите число: ") && scanf("%d", &N) && N!=-1)?
То же самое даст while (scanf("%d", &N) && N!=-1) {
printf("Введите число: ");
} и будет более читабельно.
  • 0

#15 Veline

Veline

    Super True Member

  • Moderators
  • PipPipPipPipPip
  • 759 posts
2
Обычный
  • Пол:Мужчина
  • Город:SPB

Posted 28 September 2009 - 00:42

Я определился в 6-м посте. И я ничего не писал про Си, покажи мне то предложение, где это написано с моего акканута.
1. Что не нужно? Ты внимательно прочитал пост? С цитатой? Нет, прочти ещё раз.
2. И что я там увижу? while (printf("Введите число: ") && scanf("%d", &N) && N!=-1)?
То же самое даст while (scanf("%d", &N) && N!=-1) {
printf("Введите число: ");
} и будет более читабельно.


вот внимательно и прочитай всё с цитатами, а потом прочитай как работает scanf и не забудь завтра сходить в школу :)
  • 0

#16 лайт

лайт

    iddqd

  • True Members
  • PipPipPipPipPip
  • 3,843 posts
9
Обычный
  • Пол:Мужчина

Posted 28 September 2009 - 00:48

вот внимательно и прочитай всё с цитатами, а потом прочитай как работает scanf и не забудь завтра сходить в школу :)

При чем здесь scanf? Я писал про printf, а если ты про второй пост, то нажми F5 и прочти его ещё раз.
  • 0

#17 Veline

Veline

    Super True Member

  • Moderators
  • PipPipPipPipPip
  • 759 posts
2
Обычный
  • Пол:Мужчина
  • Город:SPB

Posted 28 September 2009 - 01:09

При чем здесь scanf? Я писал про printf, а если ты про второй пост, то нажми F5 и прочти его ещё раз.


при том, что scanf блокирующий и твой printf здесь
while (scanf("%d", &N) && N!=-1) 
{
printf("Введите число: ");
}
будет выведен после того, как будет что-то введено с клавы.
  • 0

#18 лайт

лайт

    iddqd

  • True Members
  • PipPipPipPipPip
  • 3,843 posts
9
Обычный
  • Пол:Мужчина

Posted 28 September 2009 - 01:28

при том, что scanf блокирующий и твой printf здесь

while (scanf("%d", &N) && N!=-1) 
{
printf("Введите число: ");
}
будет выведен после того, как будет что-то введено с клавы.

Ну это да, косяк. Но ты не сразу о нем написал.
  • 0


1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users