Нужно вывести все совершенные числа от 1 до 10000
#include <stdio.h>
#include <conio.h>
void main (void)
{ int a,i,sum=0;
for (i=1, i=<10000,i++)
{ for(a=1; a<i; a++)
{
if (i%a==0)
{sum+=a;}}
if (i==sum)
printf("%d", i);}
_getch();
}
Другие языки программирования и технологии
Найти ошибки в коде. Язык си
Не увлекайся "{}" с выносом каждого чиха на отдельную строку. кроме случаев когда платят за число строк.
при разработке и правке обычно удобнее "одна строка - один смысловой блок".
переписываю предложенное в этом стиле:
void main (void){
int a,i,sum=0;
for (i=1, i=<10000,i++){
for(a=1; a<i; a++)if (i%a==0)sum+=a;
if (i==sum)printf("%d", i);
}
_getch();
}
Сходу видимые Бяки:
В
for (i=1; i=<10000;i++){ // надо ";", а не ","
В
for(a=1; a<i; a++)if (i%a==0)sum+=a;
нет обнуления суммы перед проверкой очередного числа
Стоит глянуть на
for(a=1,sum=0; a<i; a++)if (i%a==0)sum+=a;
да и крутить этот цикл дальше половины "а" смысла нет - всё равно на то не делится.
при разработке и правке обычно удобнее "одна строка - один смысловой блок".
переписываю предложенное в этом стиле:
void main (void){
int a,i,sum=0;
for (i=1, i=<10000,i++){
for(a=1; a<i; a++)if (i%a==0)sum+=a;
if (i==sum)printf("%d", i);
}
_getch();
}
Сходу видимые Бяки:
В
for (i=1; i=<10000;i++){ // надо ";", а не ","
В
for(a=1; a<i; a++)if (i%a==0)sum+=a;
нет обнуления суммы перед проверкой очередного числа
Стоит глянуть на
for(a=1,sum=0; a<i; a++)if (i%a==0)sum+=a;
да и крутить этот цикл дальше половины "а" смысла нет - всё равно на то не делится.
>> Найти ошибки в коде
Это задача не для человека, а для компилятора.
>> Лиля Калиде: одна строка - один смысловой блок
А вы попробуйте в этом выражении
for(a=1; a<i; a++)if (i%a==0)sum+=a;
Поставить точку останова на sum+=a. Я бы разбил на 3 строки.
Это задача не для человека, а для компилятора.
>> Лиля Калиде: одна строка - один смысловой блок
А вы попробуйте в этом выражении
for(a=1; a<i; a++)if (i%a==0)sum+=a;
Поставить точку останова на sum+=a. Я бы разбил на 3 строки.
сам делай придурь а еще на програмиста учиться
позорище
позорище
то стоит скобка, то не стоит, то есть \n, то нету. . .зачем так быдлокодить?
#include <stdio.h>
#include <conio.h>
void main(){ //(void) идет лесом: ток подумайте о функции, которая принимает параметр, который не является парамемтром! и вы еще называете себя программыстом?
int a,i,sum=0;
for (i=1; i=<10000;i++){//, заменены на ;
for(a=1; a<i; a++)if (i%a==0)sum+=1;//не понял алгоритма, так должно стать лучше
if (sum==0)printf("%d", i);}//тут продолжение пред. строки
_getch();
}
#include <stdio.h>
#include <conio.h>
void main(){ //(void) идет лесом: ток подумайте о функции, которая принимает параметр, который не является парамемтром! и вы еще называете себя программыстом?
int a,i,sum=0;
for (i=1; i=<10000;i++){//, заменены на ;
for(a=1; a<i; a++)if (i%a==0)sum+=1;//не понял алгоритма, так должно стать лучше
if (sum==0)printf("%d", i);}//тут продолжение пред. строки
_getch();
}
Похожие вопросы
- помогите найти ошибку в коде на Си
- Я начинающий программист, так что пока не очень смыслю в этом деле. Помогите плиз найти ошибки в коде. Язык php.
- Помогите пожалуйста найти ошибку в задаче (Язык программирования Си)
- Помогите найти ошибку в коде
- Помогите найти ошибку в коде. делфи
- Помогите найти ошибку в коде с++. Скорее всего ошибка в сравнении строк.
- Помогите найти ошибки в коде (паскаль)
- Не могу найти ошибку в коде с++
- помогите найти ошибку в коде VBA exel !
- (PASCAL)помогите найти ошибку в коде задачи, и исправить
в длинной проге это удобнее одной строкой. (один СМЫСЛОВОЙ блок окидывается одним взглядом и проще отслеживать алгоритм как целое, особенно если он из сотни таких блоков, и надо мотать экран до посинения пока найдешь границы охватывающего блока, забыв с чего он начинался)
когда глючащий блок пойман для отладки по стопам его действительно удобнее поделить на строки (подблоки) для отлова конкретной конструкции. А после выправления конкретной точки опять собрать в одну строку, чтоб не загромождал экран
Компилятор не ловит ошибки в логике (типа забытого обнуления) .
он только проверяет на соответствие своим правилам