Perfekte Zahlen berechnen

RedWing hat gesagt.:
Code:
hallo, danke für deine hilfe aber ich muss in c programmieren.
dein ansatz ist für c++

Dann nimm halt anstatt <iostream> <stdio.h> daher
und dementsprechend für cout eine printf() Funktion


Gruß

RedWing
so einfach geht das nicht. der compiler meldet 20fehler.
 
hab nicht mehr viel zeit.
Code:
#include <stdio.h>

int main(void) { /* Parameter müssen wir nicht verarbeiten, also brauchen wir argc und argv nicht */
  int zahl, i, j, summe;
long s=0;

  printf("Geben Sie bitte eine Zahl ein: ");
  scanf("%d", &zahl);

  for(i = 1; i < zahl; ++i) {
	summe = 0;
	for(j = 1; j < i; ++j) {
		 s = i -1;
			 for (j=1;j<=s;j++)

	  if (i % j == 0)
	{
	 summe = i%j + j;
	}
	}
	if (i % j == i)
	{
		printf("%d\n",i%j);
	}
	/* Wenn summe und i gleich sind, ist i eine perfekte Zahl */
  }

  return 0;
}

mein ansatz ist dieser, aber der geht nicht!
 
Hallo!

versuchs mal damit:

Code:
#include <stdio.h>

int main(int argc, char* argv[]){
	printf("Geben Sie bitte eine Zahl ein bis zu der alle perfekten \nZahlen errechnet werden sollen: ");
	int zahl,erg = 0;
	scanf("%d",&zahl);

	if(zahl <= 0){
		return 0;
	}

	for(int j = 1; j <= zahl;++j){
	   int summe = 0;
	   for(int i = 1; i < j; ++i){
		   summe += (((j%i) == 0) ? i : 0);
	   }
	   if(summe == j){
	      printf("Zahl: %d ist perfekt!\n",j);
	   }
	}

	return 0;
}

Gruß Tom
 
Beutzt du einen C Compiler oder einen C++ Compiler?

Wenn es reiner C Code ist solltest du folgendes abändern:

Code:
for(int i = 1; i*i < j; ++i)

in


Code:
int i = 1;
for( ; i*i < j; ++i)

Dasselbe natürlich auch mit der aüsseren Schleife

Gruß

RedWing
 
so sieht das jetzt aus:

Code:
if(zahl <= 0){
return 0;
}
int i = 1;
for( ; i*i < j; ++i){
	int summe = 0;
	int i = 1;
for( ; i*i < j; ++i){
	summe += (((j%i) == 0) ? i + j/i: 0;
	}
	if(summe == j){
	 printf("Zahl: %d ist perfekt!\n",j);
	}
}
return 0;
}

12 fehler
ist ein c compiler
 
Der Code sollte auch unter deinem C Compiler laufen:

Code:
      1 #include <stdio.h>
      2 
      3 int main(int argc, char* argv[]){ 
      4         printf("Geben Sie bitte eine Zahl ein bis zu der alle perfekten \nZahlen errechnet werden sollen: ");
      5         int zahl,erg = 0,i = 1, j = 1;
      6         scanf("%d",&zahl);
      7 
      8         if(zahl <= 0){
      9                 return 0;
     10         }
     11 
     12         for(; j <= zahl;++j){
     13            int summe = 0;
     14            for(; i*i < j; ++i){
     15                    summe += (((j%i) == 0) ? i + j/i : 0);
     16            }
     17            if(summe == j){
     18               printf("Zahl: %d ist perfekt!\n",j);
     19            }
     20         }
     21 
     22         return 0;
     23 }

//edit Ohne die Zeilennummern natürlich ;)
Gruß

RedWIng
 
Syntaxfehler : Fehlendes ';' vor 'type'
wo ist aber type?


edit:

ich habs mal so umgeändert, damit der syntaxfehler nicht mehr kommt.

Code:
#include <stdio.h>
	
int main(void){
 int zahl,erg = 0,i = 1, j = 1;
  
		   printf("Geben Sie bitte eine Zahl ein bis zu der alle perfekten \nZahlen errechnet werden sollen: ");
		
		 scanf("%d", &zahl);
 
	if(zahl <= 0){
				  return 0;
		 }
	
		  for(; j <= zahl;++j){
			 int summe = 0;
		  for(; i*i < j; ++i){
			summe += (((j%i) == 0) ? i + j/i : 0);
  }
if(summe == j){
printf("Zahl: %d ist perfekt!\n", j);
  }
  }
return 0;
}

0 fehler aber da tut sich nichts. es wird nichts berechnet
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück