Tasarı (Project) Ödevleri
İlk çözümde bizden 2 zarı 36000 kere atmamızı istiyor. Zarı attıktan sonra zarların gelen yüzlerinin toplamını, yüzlerin toplamlarının kaç kere geldiğini ve yüzlerin toplamının yüzdelik olarak ortalaması.. Sorunun esası “C How to Program, Fourth Edition” kitabında sayfa 250 de 6.19. soru..
Çözümde diziler (arrays) kullanıldı.
Programı çalıştırdıktan sonra ekrana okutacağı yazılardan “Face” gelen zarların yüzlerinin toplamı, “Frequency” yüzlerin toplamlarının kaç kere geldiği, “Percentage” yüzdelik..
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 13
#define MAX 36000
int main() {
int face, roll;
float percentage[SIZE], frequency[ SIZE ] = { 0 };
srand( time( NULL ) );
for ( roll = 1; roll <= MAX; roll++ ) {
face = rand() % 11 + 2;
frequency[ face ]++;
}
for (face = 2 ; face <= 12 ; face++ ) {
percentage[face] = frequency[face] / 360;
}
printf( “%s%17s%17s\n”, “Face”, “Frequency”, “Percentage” );
for ( face = 2; face <= SIZE - 1; face++ )
printf( “%4d %.0f %.2f\n”, face, frequency[face], percentage[face] );
return 0;
}
—————————————————————————————
İkinci çözümde herhangi 20 tane sayı değeri giriyorsunuz. Program girdiğiniz aynı değerlerin toplamı tek ise sonuç olarak gösteriyor.
Aslında burada anahtar kelime “duplicate”. “Duplicate” kopyası, aynısı, benzeri, çift anlamındaymış. “unduplicate” de benzersiz, çifti olmayan şekli sanırım.. Neyse bir önceki cümlemden bişe anlamadığınızın farkındayım :) Programın ekran görüntüsünden daha iyi anlayabilirsiniz. Sorunun esası “C How to Program, Fourth Edition” kitabında sayfa 257 de 6.28. soru..
Not: Soru bizden 1 ile 20 arasında değer istiyordu fakat biz girilecek olan değerin 1 ile 20 arasında olmasını ayarlayamadık.. O yüzden ilk çalıştırdığınızda 1 ile 20 arasında girin diyecek.. Sizi yanıltmasın..
#include <stdio.h>
#define MAX 20
int main() {
int a[ MAX ] = { 0 };
int i;
int j;
int k = 0;
int duplicate;
int value;
printf( “Enter 20 integers between 1 and 20:\n” );
for ( i = 0; i <= MAX - 1; i++ ) {
duplicate = 0;
scanf( “%d”, &value );
for ( j = 0; j < k; j++ ) {
if ( value == a[ j ] ) {
duplicate = 1;
break;
}
}
if ( !duplicate ) {
a[ k++ ] = value;
}
}
printf( “\nThe nonduplicate values are:\n” );
for ( i = 0; a[ i ] != 0; i++ ) {
printf( “%d “, a[ i ] );
}
printf( “\n” );
return 0;
}
Üçüncü çözümde bir “palindromes” muhabbeti geçiyor. “Palindromes” bir kelimenin tersi olup olmaması konusu. Yani “annlat” kelimesini tersten okuduğunuzda gene aynı şekilde çıkıyorsa “palindromes” oluyor. Yok çıkmazsa “not palindromes” oluyor.
Programda önce size gireceğiniz kelimenin kaç harfli olacağını soracak. Rakam gireceksiniz. Rakamı girdikten sonra girdiğiniz rakam kadar harf giriniz.
Sonuç olarak ekrana size girdiğiniz değerin “palindromes” olup olmadığını belirtecektir.
#include <stdio.h>
int main(){
char arr[256];
int chr;
printf(”enter the number of words that your string got\n”);
scanf(”%d”,&chr);
if (chr>256){
printf(”too much words for program\n”);
scanf(”%d”,&chr);
}
printf(”Write your string\n”);
scanf(”%s”,&arr);
if(volki(chr,arr)==1){
printf(”palindromes”);
}
else{
printf(”not palindromes”);
}
return 0;
}
int volki( int strLength,char str [] ) {
int i;
for (i=0;i<strLength;i++){
if (str[i] != str[(strLength-1)-i]){
return 0;
break;
}
Sorunun esası “C How to Program, Fourth Edition” kitabında sayfa 257 de 6.33. soru..
Not: Resimleri en iyi şekilde görebilmek için üzerine tıklayınız. Veya bilgisayarınıza kaydedip oradan açın.



Yorum yapın