çokdüşünenbiri
Megapat
- Katılım
- 12 Aralık 2015
- Mesajlar
- 6.701
- Makaleler
- 9
- Çözümler
- 11
Daha fazla
- Sistem Özellikleri
- i7 10750H || GTX 1660 Ti 6 GB Mobile || 2x16 GB RAM || 512 GB NVMe M.2 SSD || 1080p 144 Hz IPS Panel || Windows 11-macOS Big Sur || Acer Nitro 5 AN515-55 2020 ||
- Cinsiyet
- Erkek
- Meslek
- Öğrenci
C:
#include <stdio.h>
#define size 10
int main() {
int a[size]={};
int b,c,d;
printf("Sayi giriniz, (-1 girilince biter...)");
for (b=0; b < 10; b++) {
scanf(" %d",&a[b]);
if (a[b]==-1) {
for (d=0; d < b ; d++) {
printf(" %d\n", a[d]*a[d]);
}
printf(" %d'ye kadarki sayilarin karesi usttedir...",b);
}
}
for (c=0; c < 10; c++) {
printf(" %d\n",a[c]*a[c]);
}
printf("10 tane sayiyi direkt girdiniz. (-1'e basilmadi) Sonuclar usttedir...");
return 0;
}
Soru: Klavyeden ''-1'' girilinceye kadarki değerleri diziye aktaran ve bu değerlerin karesini ekrana bastıran programı yazınız.
Böyle bir kod yazdım. 1'den 10 kadar hiç ''-1'' girmeyince ve 8 elemana kadar yazıp ardından ''-1'' yazınca çalışıyor. Ama soruya göre 9 eleman ve sonrasında ''-1'' girilince de hesaplayabilmesi lazım.
Bunun olma sebebi işlemi durdurmak için kullandığım ''-1'' in de diziye atanması ve 10. eleman olarak görünmesi ancak uğraştım ve bu problemi gideremedim.
''printf(" %d'ye kadarki sayilarin karesi usttedir...",b);'' bu satırdan sonra b=9 ise aşağıdaki adımlara inmesini engelleyecek bir kodu yazamadım kısaca.
Mümkünse yeni kod olmadan bu kodların üzerinde düzenleme ile bir çözüm tavsiyesi verebilirseniz çok memnun olurum.
Düzenleme: Sorunu dediğim satırın ardından
if (b==9) {
return 0;
kodu ile çözdüm.
Son düzenleme: