Musa B.
Kilopat
- Katılım
- 1 Ekim 2017
- Mesajlar
- 1.633
- Makaleler
- 4
- Çözümler
- 13
Daha fazla
- Cinsiyet
- Erkek
Merhaba, oldukça basit ve bu zamana kadar öğrenmiş olduğum bilgilerle bir program kodluyordum fakat programda 5x5 matrise sahip rastgele sayılar üreten kısımda tekrarsız olan bölüm çalışmıyor. While, do-while, iç içe 4 for döngüsüyle falan denedim fakat başaramadım. Kod;
Satı 61´den 86´ya kadar olan kısım düzgün çalışmıyor. 4-10-2 komutlarını sırayla girdiğimde ekrana bir şey yazdırmadan olduğu gibi duruyor. Kırılma noktası koyup denediğimde döngü içerisinde sürekli sayı üretildiği fakat dizi dışına çıkamadığını gördüm. Kontrol işlemini sağlayabileceğim bir fonksiyon vesaire var mıdır? Saygılarımla, teşekkürler.
C:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
int secimMenu(x) //menüdeki ifadeleri barındıran fonksiyon.
{
int sayi, sonuc, sayi2;
int sinir = 0, sec = 0, sayiUret = 0, j, i, kontrol = 0;
switch (x)
{
case 1: //Sayının karesini alma.
printf("Karesi alinacak sayi: ");
scanf_s("%d", &sayi);
sonuc = sayi * sayi;
printf("%d sayisinin karesi: %d", sayi, sonuc);
break;
case 2: // Sayının kübünü alma.
printf("Kubu alinacak sayi: ");
scanf_s("%d", &sayi);
sonuc = sayi * sayi * sayi;
printf("%d sayisinin kubu: %d", sayi, sonuc);
break;
case 3: //Üçgen alan hesaplama.
printf("Alani hesaplanacak olan ucgenin alt tabani: ");
scanf_s("%d", &sayi);
printf("Alani hesaplanacak olan ucgenin yuksekligi: ");
scanf_s("%d", &sayi2);
sonuc = (sayi * sayi2) / 2;
printf("Ucgenin alani: %d", sonuc);
break;
case 4: // 5X5 Matris oluşturma.
int dizi[5][5];
srand(time(NULL));
printf("Yazilabilecek en buyuk sayi kac olsun: ");
scanf_s("%d", &sinir);
printf("Sayilar tekrarli olabilir mi (1-Evet | 2- Hayir): ");
scanf_s("%d", &sec);
sinir = sinir + 1;
if (sec == 1)
{
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
sayiUret = rand() % sinir;
dizi[i][j] = sayiUret;
}
}
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
printf("%d\t", dizi[i][j]);
}
printf("\n");
}
break;
}
else if (sec == 2) //ÇALIŞMAYAN KISIM.
{
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
kontrol = dizi[i][j];
while (sayiUret != kontrol)
{
sayiUret = rand() % sinir;
}
dizi[i][j] = sayiUret;
}
}
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
printf("%d\t", dizi[i][j]);
}
printf("\n");
}
break;
}
else.
{
printf("Hatali sayi yazdin, program kendini kapatiyor. Kendine iyi bak.");
break;
}
default: //hatalı sayı yazılırsa.
printf("Yazilan sayi hatalidir!\n");
main();
}
}
int main() //ana fonksiyon.
{
int x;
printf("1- Sayinin Karesini Alma\n2- Sayinin kubunu alma\n3- Ucgen alani hesaplama\n4- 5X5lik rastgele sayilardan olusan dizi yap\n");
printf("Lutfen yapmak istediginiz islemin numarasini yaziniz: ");
scanf_s("%d", &x);
secimMenu(x);
return 0;
}
Satı 61´den 86´ya kadar olan kısım düzgün çalışmıyor. 4-10-2 komutlarını sırayla girdiğimde ekrana bir şey yazdırmadan olduğu gibi duruyor. Kırılma noktası koyup denediğimde döngü içerisinde sürekli sayı üretildiği fakat dizi dışına çıkamadığını gördüm. Kontrol işlemini sağlayabileceğim bir fonksiyon vesaire var mıdır? Saygılarımla, teşekkürler.