Arama butonu
Bu konudaki kullanıcılar: 3 misafir, 1 mobil kullanıcı
4171
Cevap
169726
Tıklama
3
Öne Çıkarma
Cevap: C/C++/C# Sorularınız Buraya. . .(GÜNCEL) (54. sayfa)
R
13 yıl
Yarbay

Arkadaşlar çok acil bir durum var soru ve proje aşağıda, kod hatasız ancak yazdıramıyoruz. Bunu halledebilecek biris var mı 1 gün süremiz var.

----------------------
Projede bir öğrenci işleri bilgi sistemi simülasyonunun yapılar (“struct”), bağlaçlı listeler (“linked list”) ve dosyalar (“file”) kullanılarak yapılması istenmektedir. Buna göre;

a) (20 Puan) course olarak adlandırılan bir yapı oluşturun. Bu yapının üyeleri, code, name, instructor, term (Spring veya Fall değerleri alabilir), year ve bir course işaretçisi olsun. Öğrencilerin aldıkları dersler bağlaçlı liste ile tutulmak istendiğinden course veri yapısı elemanları üzerinde işlem yapacak void insertCourse(CourseNodePtr* cr, CourseNodePtr* inscr, char* code), char* deleteCourse(CourseNodePtr* cr, CourseNodePtr* inscr, char* code) prototipine sahip fonksiyonları yazınız. insertCourse() fonksiyonunu yazarken aynı öğrencinin aynı dersi birden fazla kez almasını engelleyiniz.
b) (30 Puan) student olarak adlandırılan bir yapı oluşturun. Bu yapının üyeleri, id, name, surname, department, class (B.Sc., M.Sc., Ph.D. değerlerini alabilir), faculty, gpa, year, bir course işaretçisi ve bir student işaretçisi olsun. Öğrenciler bilgi sisteminde bağlaçlı liste ile tutulmak istendiğinden student veri yapısı elemanları üzerinde işlem yapacak void insertStudent(FILE* filePtr, StudentNodePtr* cr, int id), int deleteStudent(FILE* filePtr, StudentNodePtr* cr, int id) prototipine sahip fonksiyonları yazınız. insertStudent() fonksiyonunu yazarken aynı öğrencinin sisteme birden fazla kez girilmesini engelleyiniz. Hem insertStudent() fonksiyonunda hem de deleteStudent() fonksiyonlarında bağlaçlı listedeki elemanları filePtr ile işaret edilen main() fonksiyonu içinde açtığınız dosyanın içine yazınız. Böylece bağlaçlı listenizin en son hali bir dosya içinde de olacağından programınız farklı çalıştırmalarda da en son veritabanını kullanmış olacaktır.
c) (10 Puan) Girilen öğrenci id’sine göre sistemde arama yapan ve eğer öğrenci sistemde mevcutsa onunla ilgili bilgileri ekranda gösteren bir void displayStudent(FILE* filePtr, int id) fonksiyonu yazınız. Fonksiyonunuz öncelikle dosyadan okuma yaparak öğrencileri bir bağlaçlı liste içine yerleştirmelidir. Daha sonra bu bağlaçlı liste üzerinde id’ye göre arama yapmalıdır ve eğer öğrenci mevcutsa onunla ilgili bilgileri ekranda göstermelidir.
Örnek çıktı:
Öğrencinin id’sini giriniz?
2008199999
id Name Surname Department Class Faculty Gpa Year Recv. Courses
----------------------------------------------------------------------------------
2008199999 John White ICI M.Sc. Ege 82 2009 UBI501,UBI503,UBI505
d) (5 Puan) Her bir öğrenci class’ına ait sistemde mevcut kayıtlı kaç adet öğrencinin bulunduğunu hesaplayan ve bunu ekranda uygun şekilde gösteren bir void displayClassNumbers(FILE* filePtr, int id) fonksiyonu yazınız. Fonksiyonunuz öncelikle dosyadan okuma yaparak öğrencileri bir bağlaçlı liste içine yerleştirmelidir. Daha sonra bu bağlaçlı liste üzerinde class değerlerine göre hesaplama yapmalıdır.
Örnek çıktı:
Class Number of Students
---------------------------------
B.Sc. 120
M.Sc. 55
Ph.D. 18
e) (5 Puan) Girilen ders code’una, term değerine ve year değerine göre o dersi istenen dönem ve yıl içinde almış olan öğrencileri sistemde bulup ekranda gösteren bir void displayRecvCourse (FILE* filePtr, char* code, char* term, int year) fonksiyonu yazınız. Fonksiyonunuz öncelikle dosyadan okuma yaparak öğrencileri bir bağlaçlı liste içine yerleştirmelidir. Daha sonra bu bağlaçlı liste üzerinde değerlere göre arama yapmalıdır ve eğer öğrenci mevcutsa onunla ilgili bilgileri ekranda göstermelidir.
Örnek çıktı:
Dersin kodunu giriniz?
UBI503
Dönemi giriniz?
Fall
Yılı giriniz?
2008
id Name Surname
--------------------------
2008199999 John White
2008299999 Jeny McCain
2008599522 Gregory Whitehead
f) (20 Puan) a ve b şıkkında tanımlamış olduğunuz insertStudent(FILE* filePtr, StudentNodePtr* cr, int id) ve insertCourse(CourseNodePtr* cr, CourseNodePtr* inscr, char* code) fonksiyonunu kullanarak detaylı bir şekilde kullanıcıdan girdi alıp öğrenci kaydı yapan void registration(FILE* filePtr) fonksiyonu yazınız. Bu fonksiyon kullanıcıdan öğrenci ile ilgili bütün bilgileri aldıktan sonra onun kaydını gerçekleştirmelidir.
g) (10 Puan) Bundan önceki yazdığınız bütün şıklardaki fonksiyonları kullanarak bir menu oluşturunuz. Menünüzün öğrenci kaydı girişi, öğrenci kaydı silme, arama gibi temel özellikleri içermesi gerekmektedir.

Kodu aşağıya koyuyorum;






#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>
#include <string.h>
struct course {
char coursecode;
char name[10];
char instructor[30];
char term;
int year;
struct course *coursePtr;
};
typedef struct course *course_ptr;

struct student {
int idnum;
char name[15];
char surname[15];
char department[5];
int classs;
char faculty[10];
int gpa;
int year;
struct course *coursePtr;
struct student *studentPtr;
};
typedef struct student *student_ptr;

//prototypes
int instructions(void);
void insertCourse(FILE *filePtr,course_ptr *cr, char code);
char deleteCourse (course_ptr cr, char code);
void insertStudent(FILE *filePtr, student_ptr *cr, int idnum);
int deleteStudent (FILE *filePtr, student_ptr *cr, int idnum);
void displayStudent(FILE *filePtr, int idnum);
//void displayClassNumbers (FILE *filePtr, int id);
//void displayRecvCourse();// (FILE *filePtr, char *code, char *term, int year);
void registration (FILE *filePtr,student_ptr* cr);
FILE *filePtr;
int main (void)
{
FILE *filePtr; //student.dat file pointer

int choice; //user's choice

if ((filePtr=fopen("student.dat","w+"))==NULL)
{
printf("Error!There are no entry!\n");
exit (1);
}//end if
int id=0;
student_ptr *s=NULL;
printf("\t\t\t------------------------------------------------------\n");
printf("\t\t\t| ICI-STUDENT INFORMATION SYSTEM | \n");
printf("\t\t\t------------------------------------------------------\n\n");
while ((choice=instructions())!=6 )
{
switch (choice){
case 1: registration(filePtr,s);
break;
case 2: deleteStudent(filePtr, s,id);
break;
case 3: displayStudent(filePtr,id);
break;
//case 4: displayclassNumbers ();//filePtr);
break;
//case 5: displayRecvCourse();// (filePtr, char code, char term, int year);
break;
default: printf("Incorrect choice!\n");
instructions();
break;
}//end switch
printf("?");
scanf("%d",&choice);
}//end while

getch();
return 0;
}//end main
int instructions(void)
{
int choice;
printf("Please enter your choice:\n 1.New Registration\n2.Delete Student\n3.Search for student\n4.Search for class Numbers\n5.Search for Receiving course\n6.Exit\n");
scanf("%d",&choice);
return choice;
}//end fuction instructions

void registration (FILE *filePtr,student_ptr *cr)
{
char ans;
int idnum=0;

course_ptr *cs1;
printf("Enter id number: (1 to 100,0 to end input)");
scanf("%d", &idnum);

insertStudent(filePtr,cr, idnum);//FILE*filePtr, char currentPtr, int id);
// insertCourse(filePtr,cs1 , idnum);//(FILE*filePtr, char currentPtr,int id);


}//end function registration

void insertStudent (FILE *filePtr, student_ptr *cr, int idnum)
{
//FILE *filePtr;
struct student stu;
student_ptr newPtr=NULL; //pointeer to new node
student_ptr previousPtr=NULL; //pointer to previous node in list
student_ptr currentPtr=NULL; //pointer to current node in list
int b=0; //B.Sc counter
int m=0; //M.Sc counter
int p=0; //Ph.D counter


newPtr = (student_ptr)malloc(sizeof(struct student)); //create node


while (idnum!=0) {
stu.idnum=idnum;
if (newPtr !=NULL) { //is space available
newPtr->idnum=idnum; //placed in node
newPtr->studentPtr=NULL; //node does not link to another node

previousPtr=NULL;
//currentPtr=cr;
//loop to find the correct location in the list
while (currentPtr !=NULL && idnum>currentPtr->idnum){
previousPtr=currentPtr;
currentPtr=currentPtr->studentPtr;
}//end while

//insert new node at beginning of list
if (previousPtr == NULL){
newPtr->studentPtr=currentPtr;
currentPtr=newPtr;
}//end if
else {
previousPtr->studentPtr=newPtr;
newPtr->studentPtr=currentPtr;
}//end else

}//end if

stu.coursePtr=NULL;
printf("Enter name and surname:");
scanf("%s%s",&stu.name,&stu.surname);
printf("\nEnter department, faculty and class(B.Sc=1, M.Sc=2, Ph.D=3)");
scanf("%s%s%d",&stu.department,&stu.faculty,&stu.classs);
if ((stu.classs !=1) && (stu.classs !=2)&& (stu.classs !=3)){
printf("Invalid class! please enter 1,2 or 3:");
scanf("%d",&stu.classs);
} //end if
if (stu.classs == 1) {
b++; //B.Sc students
}
if (stu.classs == 2) {
m++; //M.Sc students
}
if (stu.classs == 3) {
p++; //Ph.D students
}
printf("\nEnter gpa and year:");
scanf("%d%d",&stu.gpa,&stu.year);

printf("Student has been inserted.");
printf("Enter id number: (1 to 100,0 to end input)");
scanf("%d", &idnum);

}//end while
printf("B.Sc students:%d", b);
printf("M.Sc students:%d", m);
printf("Ph.D students:%d\n", p);

//seek position in file to user specified record
fseek(filePtr,(stu.idnum-1)*sizeof (struct student), SEEK_SET);
//wriet user-specified information file
// fwrite(&student,sizeof(struct student),1,filePtr);
// if ((filePtr=fopen("student.dat","w+")==NULL){
//printf("Error!File could not be openedé\n");

// }//end if
while (currentPtr!=NULL){
fwrite(&stu, sizeof(struct student),1,filePtr);
// fwrite( &student, sizeof(struct student)-2*(currentPtr),1,filePtr);
currentPtr = currentPtr->studentPtr;
}//end while


fclose(filePtr);
}//end function insertStudent

void insertCourse(FILE *filePtr,course_ptr *cr, char code)//(CourseNodePtr current, CourseNodePtr *inscr, char *code)
{
struct course cour;
struct student stu;

course_ptr newPtr=NULL;
course_ptr previousPtr=NULL;
course_ptr currentPtr=NULL;
int response;
char ans,ccode;

newPtr=(course_ptr)malloc(sizeof(struct course));//create node

printf("Enter course?(1:YES 2:NO)");
scanf("%d",&response);
while (response==1){

printf("Enter course code: (UBI501,UBI503,UBI505,UBI508)");
scanf("%s", &ccode);
printf("\Enter course name:");
scanf("%c",&cour.name);
printf("\Enter instructor:");
scanf("%c",&cour.instructor);
printf("\nEnter term:(S:Spring F:Fall)");
scanf("%c",&ans);
ans=toupper(ans);
if ((ans !='S') &&(ans!='F')) {
printf("Invalid term.Please enter S or F");
scanf("%c",&ans);
ans=toupper(ans);
}//end if

cour.term=ans;
printf("\nEnter course year:");
scanf("%d",&cour.year);

if(newPtr!=NULL) { //is space available
newPtr->coursecode=ccode;//place value in node
newPtr->coursePtr=NULL;


//loop to find the correct location in the list
while (currentPtr!= NULL && ccode>currentPtr->coursecode) {
previousPtr = currentPtr;
currentPtr = currentPtr->coursePtr;
}//end while

//insert new node at begining of list
if (previousPtr==NULL){
newPtr->coursePtr = currentPtr;
currentPtr = newPtr;
}//end if
else { //insert new node between previousPtr and currentPtr
previousPtr->coursePtr = newPtr;
newPtr->coursePtr = currentPtr;
}//end else

if (ccode == currentPtr->coursecode) { //not registered with same code
printf("Course has been inserted.Enter another course?(1:YES, 0:NO)");
scanf("%d",&response);
}//end if
}//end if
}//end while
// else {
// printf("Not inserted!No memory available\n");
// }//end else



//seek position in file to user-specified record
fseek(filePtr,(stu.idnum-1)*sizeof(struct course),SEEK_SET);
//write user-specified information
fwrite(&cour, sizeof(struct course),1,filePtr);


while (currentPtr!=NULL){
fwrite(&cour,sizeof(struct course),1,filePtr);
// fwrite(&course,sizeof (struct course)-2*sizeof(currentPtr),1,filePtr);
currentPtr=currentPtr->coursePtr;
}//end while
fclose(filePtr);
}//end function insertCourse


int deleteStudent (FILE *filePtr, student_ptr *cr, int idnum)
{
//FILE *filePtr;
struct student student;
student_ptr previousPtr;
student_ptr currentPtr;
student_ptr tempPtr;
int id;

printf("Enter the id number to be deleted:");
scanf("%d",&student.idnum);

//delete first node
if (id==(currentPtr)->idnum){
tempPtr=currentPtr;
currentPtr=(currentPtr)->studentPtr;
free(tempPtr);
return id;
} //end if
else {
previousPtr=currentPtr;
currentPtr=(currentPtr)->studentPtr;
}//end else
//loop to find the correct location in the list
while (currentPtr !=NULL && currentPtr->idnum !=id){
previousPtr=currentPtr;
currentPtr=currentPtr->studentPtr;

if (currentPtr !=NULL){
tempPtr=currentPtr;
previousPtr->studentPtr=currentPtr->studentPtr;
free(tempPtr);
return id;
}//end if
}//end while


//seek position in file to user specified record
fseek(filePtr,(student.idnum-1)*sizeof (student_ptr), SEEK_SET);
//wriet user-specified information file
fwrite (&student,sizeof(student_ptr),1,filePtr);
// if ((filePtr=fopen("student.dat","wb+")== NULL){
// printf("Error!File could not be opened\n");

// }//end if
while (currentPtr!=NULL){
//fwrite(&student, sizeof(struct student),1,filePtr);
fwrite(&student, sizeof(student_ptr),1,filePtr);
currentPtr=currentPtr-> studentPtr;
}//end while

return id;
}//end function deleteStudent

char deleteCourse(course_ptr cr, char code)
{
struct course course;
course_ptr previousPtr;
course_ptr currentPtr;
course_ptr tempPtr;
char ccode;

printf("Enter course code to be deleted:");
scanf("%d",&course.coursecode);

//delete first node
if(ccode==(currentPtr)->coursecode){
tempPtr=currentPtr;
currentPtr=(currentPtr)->coursePtr;
free(tempPtr);
return ccode;
}//edn if
else {
previousPtr=currentPtr;
currentPtr=(currentPtr)->coursePtr;

//loop to find the correct loaction in the list
while (currentPtr !=NULL && currentPtr->coursecode != ccode){
previousPtr=currentPtr;
currentPtr=currentPtr->coursePtr;
}//end while

//delete node at currentPtr
if(currentPtr !=NULL){
tempPtr=currentPtr;
previousPtr->coursePtr=currentPtr->coursePtr;
free(tempPtr);
return ccode;
}//end if
}//end else
return ccode;

}//end function deleteCourse

void displayStudent(FILE*filePtr, int idnum)
{
struct student stu;
struct course cour;

if ((filePtr=fopen("student.dat","rb"))==NULL){
printf("File could not be opened!\n");
}//end if
else {
printf("Enter id for display:");
scanf("%d",&idnum);
printf("%-10s%-15s%-15s%-5s%-5s%-10s%-5s%-7s%-20s\n","id","name","surname","department","class","faculty","Gpa","year","Recv.Courses");
printf("-----------------------------------------------------------------------------------------------------------------------\n\n");
while( (!feof(filePtr))) {

fread( &stu, sizeof(struct student),1,filePtr);
if(stu.idnum == idnum){
printf("%-10d%-15s%-15s%-5s%-5d%-10s%-5d%-7d%-20c\n",
stu.idnum, stu.name, stu.surname, stu.department,
stu.classs,stu.faculty, stu.gpa, stu.year);
if(stu.coursePtr!=NULL)
{
printf("-20c",stu.coursePtr->coursecode);
}
printf("\n");

} //end if
}
} //end else
fclose(filePtr);
}//end function displayStudent



//void displayRecvCourse (FILE* filePtr, char* code, char* term, int year)
//{

// FILE *filePtr;
// printf("Enter course code:");
// scanf("%c",&course.coursecode);
// printf("\Enter term:");
// scanf("%c",&course.term);
// printf("\nEnter year:");
// scanf("%d",&course.year);
//if ((filePtr=fopen("student.dat","rb"))==NULL){
// printf("File colud not be opened\n");
// }//end if
//else {
// while (!feof(filePtr)){
// fread(&course, sizeof(struct course),1,filePtr);



//}//end function displayRecvCourse





< Bu mesaj bu kişi tarafından değiştirildi Rockford Fosgate -- 14 Ocak 2013; 15:46:36 >

M
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: ThisisaNightmare

quote:

Orijinalden alıntı: MrOwl

quote:

Orijinalden alıntı: Haxenkoff

quote:

Orijinalden alıntı: erkin0007

quote:

Orijinalden alıntı: Haxenkoff

quote:

Orijinalden alıntı: erkin0007

quote:

Orijinalden alıntı: Haxenkoff

quote:

Orijinalden alıntı: erkin0007

dögüler,diziler,fonksyonlar,if else,swich case kullanılmıyıcak.operatörler kullanılcak,bool vs
1.kullanıcıdan 2 sayı girmesini isteyin.busayıların tek mi çift mi olduğunu bulun.eğer tek ise ekrana "ikiside tek",eğer ikiside cift ise ekrana"ikiside çift" eğer birisi çift birisi çift ise "farklı sonuç"ifadeleri yazılsın


2. 3 sayı isteyin .sayılardan küçük olanlardan2 tanesini toplayın.ve sonucu en büyü sayı ile karşılaştırın.eğer 2 sayının toplamı,en büyük sayıdan büyük ise ekrana"tebrikler" değilse "malesef "yazdırın

Muhammed Mastar'ın eğitim seti mi var sende?

evet hocam

Sorduğun soruların cevabı zaten var dvd içeriğinde.

pc de dvd yok.


Bu soru if else kullanılmadan yapılır mı ki?

Zamanı geçmiş tekrarda sorulmadığı için tam cevaplamayacağım fakat yapılabilir. Boolean bize iki değer döndürüyor. if yapısı da doğru olup olmaması veya koşullu seçenekleri.

bool cevap=(sayi>=0 && sayi<=10)

olması durumunda sayi 0 ile 10 arasında ise true sonucu dönecektir. Bu da bir çeşit karşılaştırma mekanizmasıdır.

Ben acikcasi bu ogretim bicimini begenmedim.

C'nin temelinde boolean diye birsey yok mesela. O yuzden boyle bir soru kesinlikle ogrenciyi limitlememeli.

Simdi soruyorum kim gercek hayatta:

#include "stdio.h" 
#include "stdbool.h"

int main()
{
int sayi = 5;
bool cevap=(sayi>=0 && sayi<=10);
printf("%s\n", cevap ? "dogru" : "yanlis");
return 0;
}


boyle birsey kullanir? Isim gucum yok, eski standartlarda olmayan library ekleyecegim, dogru syntaxini arastiracagim vsvs...

Vaktim kısa olduğu için bool'un if operatörü gibi karşılaştırma amaçlı işlemlerde kullanılabileceğine örnek verdim. Gittim programı yazmadım. Madem sizin vaktiniz var buyurun arkadaşı daha iyi biçimde aydınlatın, bana yazmanızın bir anlamı yok neticede. Yazım yanlış olmuş, yok o olmamış bir ifade etmiyor benim için, orada anlatmak istediğim if yapısının gerekmeyebileceği idi. Programı vermedim. Öğrencileri hazıra sevk etmeye karşıyım.

Günde 3-4 saat uyuyorum. Benim canım çıkıyor, geliyorum bizim ülkemizde arkadaşlara yardımcı olayım diye. Adamlar benim %10'um kadar efor sarf etmiyor. Açıkçası şu saatten sonra imzamı da sildim. Benim öğrenciliğimde bir kişiden dahi böyle yardım aldığımı hatırlamıyorum. Şu geçmişteki mesajlara bakılsa adam selam demeden soruyu yazmış gitmiş olan o kadar çok mesaj var ki... Kat kat daha iyi sonuçlarla, projelerle çalıştıydım. İnternet çok geniş imkanlar sunuyor, açıp bakacaksınız. Neticede bilgisayar mühendisliği bu. Patlatacaksınız kafanızı. Gelişim böyle oluyor.

Ayrıca C'ye bool sonradan eklendi.


Bu mesaja 1 cevap geldi.
M
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: Haxenkoff

quote:

Orijinalden alıntı: MrOwl

quote:

Orijinalden alıntı: Haxenkoff

quote:

Orijinalden alıntı: erkin0007

quote:

Orijinalden alıntı: Haxenkoff

quote:

Orijinalden alıntı: erkin0007

quote:

Orijinalden alıntı: Haxenkoff

quote:

Orijinalden alıntı: erkin0007

dögüler,diziler,fonksyonlar,if else,swich case kullanılmıyıcak.operatörler kullanılcak,bool vs
1.kullanıcıdan 2 sayı girmesini isteyin.busayıların tek mi çift mi olduğunu bulun.eğer tek ise ekrana "ikiside tek",eğer ikiside cift ise ekrana"ikiside çift" eğer birisi çift birisi çift ise "farklı sonuç"ifadeleri yazılsın


2. 3 sayı isteyin .sayılardan küçük olanlardan2 tanesini toplayın.ve sonucu en büyü sayı ile karşılaştırın.eğer 2 sayının toplamı,en büyük sayıdan büyük ise ekrana"tebrikler" değilse "malesef "yazdırın

Muhammed Mastar'ın eğitim seti mi var sende?

evet hocam

Sorduğun soruların cevabı zaten var dvd içeriğinde.

pc de dvd yok.


Bu soru if else kullanılmadan yapılır mı ki?

Zamanı geçmiş tekrarda sorulmadığı için tam cevaplamayacağım fakat yapılabilir. Boolean bize iki değer döndürüyor. if yapısı da doğru olup olmaması veya koşullu seçenekleri.

bool cevap=(sayi>=0 && sayi<=10)

olması durumunda sayi 0 ile 10 arasında ise true sonucu dönecektir. Bu da bir çeşit karşılaştırma mekanizmasıdır.

Teşekkürler. Özel mesaj attım bakabilir misiniz?

Mesajınız gelmemiş


Bu mesaja 1 cevap geldi.
R
13 yıl
Yarbay

Benim yukarıda koyduğum soru hakkında yardımcı olabilirmisiniz acaba size zahmet ve zaman kaybı olmayacaksa



M
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: seyfi84

quote:

Orijinalden alıntı: MrOwl

quote:

Orijinalden alıntı: ThisisaNightmare

quote:

Orijinalden alıntı: MrOwl

quote:

Orijinalden alıntı: Haxenkoff

quote:

Orijinalden alıntı: erkin0007

quote:

Orijinalden alıntı: Haxenkoff

quote:

Orijinalden alıntı: erkin0007

quote:

Orijinalden alıntı: Haxenkoff

quote:

Orijinalden alıntı: erkin0007

dögüler,diziler,fonksyonlar,if else,swich case kullanılmıyıcak.operatörler kullanılcak,bool vs
1.kullanıcıdan 2 sayı girmesini isteyin.busayıların tek mi çift mi olduğunu bulun.eğer tek ise ekrana "ikiside tek",eğer ikiside cift ise ekrana"ikiside çift" eğer birisi çift birisi çift ise "farklı sonuç"ifadeleri yazılsın


2. 3 sayı isteyin .sayılardan küçük olanlardan2 tanesini toplayın.ve sonucu en büyü sayı ile karşılaştırın.eğer 2 sayının toplamı,en büyük sayıdan büyük ise ekrana"tebrikler" değilse "malesef "yazdırın

Muhammed Mastar'ın eğitim seti mi var sende?

evet hocam

Sorduğun soruların cevabı zaten var dvd içeriğinde.

pc de dvd yok.


Bu soru if else kullanılmadan yapılır mı ki?

Zamanı geçmiş tekrarda sorulmadığı için tam cevaplamayacağım fakat yapılabilir. Boolean bize iki değer döndürüyor. if yapısı da doğru olup olmaması veya koşullu seçenekleri.

bool cevap=(sayi>=0 && sayi<=10)

olması durumunda sayi 0 ile 10 arasında ise true sonucu dönecektir. Bu da bir çeşit karşılaştırma mekanizmasıdır.

Ben acikcasi bu ogretim bicimini begenmedim.

C'nin temelinde boolean diye birsey yok mesela. O yuzden boyle bir soru kesinlikle ogrenciyi limitlememeli.

Simdi soruyorum kim gercek hayatta:

#include "stdio.h" 
#include "stdbool.h"

int main()
{
int sayi = 5;
bool cevap=(sayi>=0 && sayi<=10);
printf("%s\n", cevap ? "dogru" : "yanlis");
return 0;
}


boyle birsey kullanir? Isim gucum yok, eski standartlarda olmayan library ekleyecegim, dogru syntaxini arastiracagim vsvs...

Vaktim kısa olduğu için bool'un if operatörü gibi karşılaştırma amaçlı işlemlerde kullanılabileceğine örnek verdim. Gittim programı yazmadım. Madem sizin vaktiniz var buyurun arkadaşı daha iyi biçimde aydınlatın, bana yazmanızın bir anlamı yok neticede. Yazım yanlış olmuş, yok o olmamış bir ifade etmiyor benim için, orada anlatmak istediğim if yapısının gerekmeyebileceği idi. Programı vermedim. Öğrencileri hazıra sevk etmeye karşıyım.

Günde 3-4 saat uyuyorum. Benim canım çıkıyor, geliyorum bizim ülkemizde arkadaşlara yardımcı olayım diye. Adamlar benim %10'um kadar efor sarf etmiyor. Açıkçası şu saatten sonra imzamı da sildim. Benim öğrenciliğimde bir kişiden dahi böyle yardım aldığımı hatırlamıyorum. Şu geçmişteki mesajlara bakılsa adam selam demeden soruyu yazmış gitmiş olan o kadar çok mesaj var ki... Kat kat daha iyi sonuçlarla, projelerle çalıştıydım. İnternet çok geniş imkanlar sunuyor, açıp bakacaksınız. Neticede bilgisayar mühendisliği bu. Patlatacaksınız kafanızı. Gelişim böyle oluyor.

Ayrıca C'ye bool sonradan eklendi.

C'de bool yoktur, C99 ile macro olarak eklenmiştir. include ettiğin stdbool.h dosyasını aç da bak.
C++'taki bool built-in'dir, macro falan değil.

Ben de onu dedim zaten. Sonradan eklendi derken onu kastettim. Ayrıca yazdığım C# pseuducode uydu. System.Boolean adı altında





< Bu mesaj bu kişi tarafından değiştirildi MrOwl -- 14 Ocak 2013; 21:56:39 >
Bu mesaja 1 cevap geldi.
S
13 yıl
Yarbay

#include <iostream>
using namespace std;
int main()
{
cout << “Merhaba Bu Ilk Programimiz” << endl;
return 0;
}

bunun neresi hatalı


Bu mesaja 1 cevap geldi.
T
13 yıl
Yarbay

quote:

Orijinalden alıntı: MrOwl

quote:

Orijinalden alıntı: ThisisaNightmare

quote:

Orijinalden alıntı: MrOwl

quote:

Orijinalden alıntı: Haxenkoff

quote:

Orijinalden alıntı: erkin0007

quote:

Orijinalden alıntı: Haxenkoff

quote:

Orijinalden alıntı: erkin0007

quote:

Orijinalden alıntı: Haxenkoff

quote:

Orijinalden alıntı: erkin0007

dögüler,diziler,fonksyonlar,if else,swich case kullanılmıyıcak.operatörler kullanılcak,bool vs
1.kullanıcıdan 2 sayı girmesini isteyin.busayıların tek mi çift mi olduğunu bulun.eğer tek ise ekrana "ikiside tek",eğer ikiside cift ise ekrana"ikiside çift" eğer birisi çift birisi çift ise "farklı sonuç"ifadeleri yazılsın


2. 3 sayı isteyin .sayılardan küçük olanlardan2 tanesini toplayın.ve sonucu en büyü sayı ile karşılaştırın.eğer 2 sayının toplamı,en büyük sayıdan büyük ise ekrana"tebrikler" değilse "malesef "yazdırın

Muhammed Mastar'ın eğitim seti mi var sende?

evet hocam

Sorduğun soruların cevabı zaten var dvd içeriğinde.

pc de dvd yok.


Bu soru if else kullanılmadan yapılır mı ki?

Zamanı geçmiş tekrarda sorulmadığı için tam cevaplamayacağım fakat yapılabilir. Boolean bize iki değer döndürüyor. if yapısı da doğru olup olmaması veya koşullu seçenekleri.

bool cevap=(sayi>=0 && sayi<=10)

olması durumunda sayi 0 ile 10 arasında ise true sonucu dönecektir. Bu da bir çeşit karşılaştırma mekanizmasıdır.

Ben acikcasi bu ogretim bicimini begenmedim.

C'nin temelinde boolean diye birsey yok mesela. O yuzden boyle bir soru kesinlikle ogrenciyi limitlememeli.

Simdi soruyorum kim gercek hayatta:

#include "stdio.h" 
#include "stdbool.h"

int main()
{
int sayi = 5;
bool cevap=(sayi>=0 && sayi<=10);
printf("%s\n", cevap ? "dogru" : "yanlis");
return 0;
}


boyle birsey kullanir? Isim gucum yok, eski standartlarda olmayan library ekleyecegim, dogru syntaxini arastiracagim vsvs...

Vaktim kısa olduğu için bool'un if operatörü gibi karşılaştırma amaçlı işlemlerde kullanılabileceğine örnek verdim. Gittim programı yazmadım. Madem sizin vaktiniz var buyurun arkadaşı daha iyi biçimde aydınlatın, bana yazmanızın bir anlamı yok neticede. Yazım yanlış olmuş, yok o olmamış bir ifade etmiyor benim için, orada anlatmak istediğim if yapısının gerekmeyebileceği idi. Programı vermedim. Öğrencileri hazıra sevk etmeye karşıyım.

Günde 3-4 saat uyuyorum. Benim canım çıkıyor, geliyorum bizim ülkemizde arkadaşlara yardımcı olayım diye. Adamlar benim %10'um kadar efor sarf etmiyor. Açıkçası şu saatten sonra imzamı da sildim. Benim öğrenciliğimde bir kişiden dahi böyle yardım aldığımı hatırlamıyorum. Şu geçmişteki mesajlara bakılsa adam selam demeden soruyu yazmış gitmiş olan o kadar çok mesaj var ki... Kat kat daha iyi sonuçlarla, projelerle çalıştıydım. İnternet çok geniş imkanlar sunuyor, açıp bakacaksınız. Neticede bilgisayar mühendisliği bu. Patlatacaksınız kafanızı. Gelişim böyle oluyor.

Ayrıca C'ye bool sonradan eklendi.

Ben size birsey demedim ki, sorunun kendisini elestirdim. Sonucta programlamayi ogretiyorsa limitlememeli diye dusunuyorum...

Bende su an 2. sinifta okuyan ogrenciyim. Ayni zamanda full time developer olarak calisiyorum. Dediginiz gibi hic bir zaman buraya gelip soru yazmadim. Buraya yazip bekleyenleri de hicbir zaman anlamadim internette azicik arastirma yapsalar hepsinin cevabi var.

C'de onceden bool vardi demedim ki ben zaten. Temelinde yok dedim yani C89 gibi eski standartlarda yok demek istedim.


Bu mesaja 2 cevap geldi.
K
13 yıl
Çavuş

Arkadaşlar selamlar,

Öncelikle belirteyim ki C'de yeniyim. Herangi bir yazılım geçmişim olmadığından dolayı haliyle zorlanıyorum. Size bir sorum olacak, kaynaklarda da anlatılıyor ama anlayamıyorum bir türlü. Belki siz daha açıklayıcı ve anlayacağım gibi anlatabilirsiniz. Finalim var ona hazırlanıyorum, algoritma'da ve akış şeması çıkarmada oldukça kötüyüm. akış şemasını çıkarmada bana yardımcı olabilecek var mı acaba?

Sorularımı programda comment ( // ) olarak yazdım.

Aşağıdaki program üslü sayının sonucunu veriyor (taban ve üs girilerek):

#include <stdio.h>

int main (void)

{
int taban;
int us;
int product;
int counter = 1; // burada neden counter'a 1 verdik?

printf("Tabanı girin: ");
scanf("%d", &taban); // burada ve diğer scanf'lerde anlamadığım yer şu "%d" yi neden kullanıyoruz? sayıyı okuması sanırım ama neden %d ?

printf("Ussu girin: ");
scanf("%d", &us);

product = taban

while (counter < us) {
product = product * taban
counter = counter + 1
}

printf("Sonuc: " "%d\n", product);

system("PAUSE");
return 0;
}

Şimdiden zaman ayırdığınız için çok teşekkür ederim.





< Bu mesaj bu kişi tarafından değiştirildi koline -- 15 Ocak 2013; 12:48:02 >
Bu mesaja 1 cevap geldi.
H
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: koline

Arkadaşlar selamlar,

Öncelikle belirteyim ki C'de yeniyim. Herangi bir yazılım geçmişim olmadığından dolayı haliyle zorlanıyorum. Size bir sorum olacak, kaynaklarda da anlatılıyor ama anlayamıyorum bir türlü. Belki siz daha açıklayıcı ve anlayacağım gibi anlatabilirsiniz. Finalim var ona hazırlanıyorum, algoritma'da ve akış şeması çıkarmada oldukça kötüyüm. akış şemasını çıkarmada bana yardımcı olabilecek var mı acaba?

Sorularımı programda comment ( // ) olarak yazdım.

Aşağıdaki program üslü sayının sonucunu veriyor (taban ve üs girilerek):

#include <stdio.h>

int main (void)

{
int taban;
int us;
int product;
int counter = 1; // burada neden counter'a 1 verdik?

printf("Tabanı girin: ");
scanf("%d", &taban); // burada ve diğer scanf'lerde anlamadığım yer şu "%d" yi neden kullanıyoruz? sayıyı okuması sanırım ama neden %d ?

printf("Ussu girin: ");
scanf("%d", &us);

product = taban

while (counter < us) {
product = product * taban
counter = counter + 1
}

printf("Sonuc: " "%d\n", product);

system("PAUSE");
return 0;
}

Şimdiden zaman ayırdığınız için çok teşekkür ederim.

İlk sorunla başlayayım.

1-) Eğer counter değişkenine herhangi bir deger atamadan kullanmaya kalkışırsan hata alırsın, çünkü değişkeni oluşturduğun zaman bellekte bir bölüm açılır ve bu bölümün içi tamamen boştur yani null dur. Genelde buralarda yapılan hatalarda bilgisayarın tanımlanan değişkenin ilk değerini eğer hiç bir değer atanmamışsa 0 kabul edeceği yöndedir ancak bu yanlıştır.

Yani sen while(counter<us) yazıpta counter değişkenine bir değer atamamış olsaydın bilgisayar burada şöyle düşünürdü " 'hiçbirşey' us değişkeninden küçük olduğunda şu komutları çalıştır." Yani tamamen hatalı bir kullanım olurdu.

2-)%d kullanımını derste görmüş olman gerekiyordu. Kısaca değineyim %d, %lf, %c gibi ifadeler genellikle scanf ve printf fonksiyonlarıyla birlikte kullanılır. Amaçları alınacak veya yazılacak şeyin hangi tipte olduğunu belirtmektir. Sen %d dediğin zaman bir tamsayı okuyacağım veya tamsayı yazdıracağım demektir. Reel sayılar içinse %lf veya %f kullanılır bunlar böyle devam eder. Daha detaylı kullanımını buradan öğrenebilirsin.Link.


Bu mesaja 3 cevap geldi.
A
13 yıl
Er

100 adet sayı giriliyor kaç adet pozitif sayı vardır

klavyeden 2 kelime girliyor 2 kelimenin harf sayılarının ortalaması?

klavyeden 10 vize sonucu gir en yuksek notu goster?

c++ göre bunları cevaplaya bilir misiniz lütfen?



M
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: ThisisaNightmare

quote:

Orijinalden alıntı: MrOwl

quote:

Orijinalden alıntı: ThisisaNightmare

quote:

Orijinalden alıntı: MrOwl

quote:

Orijinalden alıntı: Haxenkoff

quote:

Orijinalden alıntı: erkin0007

quote:

Orijinalden alıntı: Haxenkoff

quote:

Orijinalden alıntı: erkin0007

quote:

Orijinalden alıntı: Haxenkoff

quote:

Orijinalden alıntı: erkin0007

dögüler,diziler,fonksyonlar,if else,swich case kullanılmıyıcak.operatörler kullanılcak,bool vs
1.kullanıcıdan 2 sayı girmesini isteyin.busayıların tek mi çift mi olduğunu bulun.eğer tek ise ekrana "ikiside tek",eğer ikiside cift ise ekrana"ikiside çift" eğer birisi çift birisi çift ise "farklı sonuç"ifadeleri yazılsın


2. 3 sayı isteyin .sayılardan küçük olanlardan2 tanesini toplayın.ve sonucu en büyü sayı ile karşılaştırın.eğer 2 sayının toplamı,en büyük sayıdan büyük ise ekrana"tebrikler" değilse "malesef "yazdırın

Muhammed Mastar'ın eğitim seti mi var sende?

evet hocam

Sorduğun soruların cevabı zaten var dvd içeriğinde.

pc de dvd yok.


Bu soru if else kullanılmadan yapılır mı ki?

Zamanı geçmiş tekrarda sorulmadığı için tam cevaplamayacağım fakat yapılabilir. Boolean bize iki değer döndürüyor. if yapısı da doğru olup olmaması veya koşullu seçenekleri.

bool cevap=(sayi>=0 && sayi<=10)

olması durumunda sayi 0 ile 10 arasında ise true sonucu dönecektir. Bu da bir çeşit karşılaştırma mekanizmasıdır.

Ben acikcasi bu ogretim bicimini begenmedim.

C'nin temelinde boolean diye birsey yok mesela. O yuzden boyle bir soru kesinlikle ogrenciyi limitlememeli.

Simdi soruyorum kim gercek hayatta:

#include "stdio.h" 
#include "stdbool.h"

int main()
{
int sayi = 5;
bool cevap=(sayi>=0 && sayi<=10);
printf("%s\n", cevap ? "dogru" : "yanlis");
return 0;
}


boyle birsey kullanir? Isim gucum yok, eski standartlarda olmayan library ekleyecegim, dogru syntaxini arastiracagim vsvs...

Vaktim kısa olduğu için bool'un if operatörü gibi karşılaştırma amaçlı işlemlerde kullanılabileceğine örnek verdim. Gittim programı yazmadım. Madem sizin vaktiniz var buyurun arkadaşı daha iyi biçimde aydınlatın, bana yazmanızın bir anlamı yok neticede. Yazım yanlış olmuş, yok o olmamış bir ifade etmiyor benim için, orada anlatmak istediğim if yapısının gerekmeyebileceği idi. Programı vermedim. Öğrencileri hazıra sevk etmeye karşıyım.

Günde 3-4 saat uyuyorum. Benim canım çıkıyor, geliyorum bizim ülkemizde arkadaşlara yardımcı olayım diye. Adamlar benim %10'um kadar efor sarf etmiyor. Açıkçası şu saatten sonra imzamı da sildim. Benim öğrenciliğimde bir kişiden dahi böyle yardım aldığımı hatırlamıyorum. Şu geçmişteki mesajlara bakılsa adam selam demeden soruyu yazmış gitmiş olan o kadar çok mesaj var ki... Kat kat daha iyi sonuçlarla, projelerle çalıştıydım. İnternet çok geniş imkanlar sunuyor, açıp bakacaksınız. Neticede bilgisayar mühendisliği bu. Patlatacaksınız kafanızı. Gelişim böyle oluyor.

Ayrıca C'ye bool sonradan eklendi.

Ben size birsey demedim ki, sorunun kendisini elestirdim. Sonucta programlamayi ogretiyorsa limitlememeli diye dusunuyorum...

Bende su an 2. sinifta okuyan ogrenciyim. Ayni zamanda full time developer olarak calisiyorum. Dediginiz gibi hic bir zaman buraya gelip soru yazmadim. Buraya yazip bekleyenleri de hicbir zaman anlamadim internette azicik arastirma yapsalar hepsinin cevabi var.

C'de onceden bool vardi demedim ki ben zaten. Temelinde yok dedim yani C89 gibi eski standartlarda yok demek istedim.

Ben seni yanlış anladım öyleyse kusuruma bakma, bu aralar öylesine yoğun geçiyor ki bazen olmayan mesajları görünce tepem atıyor. Ülkedeki bu rezalet durumu görünce... Soruya yaptığın yorum konusunda katılıyorum ve başarını da takdir ediyorum. Yeni başlayan birini bu derece kısıtlandırmanın bir mantığı yok, ben bile ilk başta nasıl yapılacağını hatırlayamadım. Kaldı ki bahsettiğimiz gibi bool C99'da var.

Son soruyu yazan arkadaş gibi işi son zamana bırakan, google'da arayıp direkt bulunabilecek, artık yüzlerce farklı çözümünü ezberlediğim soruların bile çözülmeye tenezzül edilmeden bilen birinden beklenmesine çok kızıyorum. Bu arkadaşlara söyleyeyim, boşuna okuyorsunuz. Gidin başka meslek seçin. Bu kadar açık konuşuyorum. Yani şu en baştaki basit konular için bile kendinizi oturduğunuz yerden kaldıramayıp bunun çözümünü bulamıyorsanız, hiç bir şey yapamazsınız bilgisayar mühendisliğinde. Zamanınızı boşa harcamaktan başka bir şey yapmıyorsunuz.



K
13 yıl
Çavuş

quote:

Orijinalden alıntı: Honey Badger

quote:

Orijinalden alıntı: koline

Arkadaşlar selamlar,

Öncelikle belirteyim ki C'de yeniyim. Herangi bir yazılım geçmişim olmadığından dolayı haliyle zorlanıyorum. Size bir sorum olacak, kaynaklarda da anlatılıyor ama anlayamıyorum bir türlü. Belki siz daha açıklayıcı ve anlayacağım gibi anlatabilirsiniz. Finalim var ona hazırlanıyorum, algoritma'da ve akış şeması çıkarmada oldukça kötüyüm. akış şemasını çıkarmada bana yardımcı olabilecek var mı acaba?

Sorularımı programda comment ( // ) olarak yazdım.

Aşağıdaki program üslü sayının sonucunu veriyor (taban ve üs girilerek):

#include <stdio.h>

int main (void)

{
int taban;
int us;
int product;
int counter = 1; // burada neden counter'a 1 verdik?

printf("Tabanı girin: ");
scanf("%d", &taban); // burada ve diğer scanf'lerde anlamadığım yer şu "%d" yi neden kullanıyoruz? sayıyı okuması sanırım ama neden %d ?

printf("Ussu girin: ");
scanf("%d", &us);

product = taban

while (counter < us) {
product = product * taban
counter = counter + 1
}

printf("Sonuc: " "%d\n", product);

system("PAUSE");
return 0;
}

Şimdiden zaman ayırdığınız için çok teşekkür ederim.

İlk sorunla başlayayım.

1-) Eğer counter değişkenine herhangi bir deger atamadan kullanmaya kalkışırsan hata alırsın, çünkü değişkeni oluşturduğun zaman bellekte bir bölüm açılır ve bu bölümün içi tamamen boştur yani null dur. Genelde buralarda yapılan hatalarda bilgisayarın tanımlanan değişkenin ilk değerini eğer hiç bir değer atanmamışsa 0 kabul edeceği yöndedir ancak bu yanlıştır.

Yani sen while(counter<us) yazıpta counter değişkenine bir değer atamamış olsaydın bilgisayar burada şöyle düşünürdü " 'hiçbirşey' us değişkeninden küçük olduğunda şu komutları çalıştır." Yani tamamen hatalı bir kullanım olurdu.

2-)%d kullanımını derste görmüş olman gerekiyordu. Kısaca değineyim %d, %lf, %c gibi ifadeler genellikle scanf ve printf fonksiyonlarıyla birlikte kullanılır. Amaçları alınacak veya yazılacak şeyin hangi tipte olduğunu belirtmektir. Sen %d dediğin zaman bir tamsayı okuyacağım veya tamsayı yazdıracağım demektir. Reel sayılar içinse %lf veya %f kullanılır bunlar böyle devam eder. Daha detaylı kullanımını buradan öğrenebilirsin.Link.


Hocam gerçekten çok çok teşekkür ederim, 1. sorunun mantığını bir türlü anlayamamıştım, sayende anlayabildim. diğerine gelince %d nin anlamını bilmiyordum, yani tam sayı okuyacağın veya yazdıracağın zaman kullanılacağını. bilgilendirdiğin için çok çok teşekkür ediyorum


Bu mesaja 1 cevap geldi.
H
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: koline



Önemli değil.



-
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: Honey Badger

quote:

Orijinalden alıntı: koline

Arkadaşlar selamlar,

Öncelikle belirteyim ki C'de yeniyim. Herangi bir yazılım geçmişim olmadığından dolayı haliyle zorlanıyorum. Size bir sorum olacak, kaynaklarda da anlatılıyor ama anlayamıyorum bir türlü. Belki siz daha açıklayıcı ve anlayacağım gibi anlatabilirsiniz. Finalim var ona hazırlanıyorum, algoritma'da ve akış şeması çıkarmada oldukça kötüyüm. akış şemasını çıkarmada bana yardımcı olabilecek var mı acaba?

Sorularımı programda comment ( // ) olarak yazdım.

Aşağıdaki program üslü sayının sonucunu veriyor (taban ve üs girilerek):

#include <stdio.h>

int main (void)

{
int taban;
int us;
int product;
int counter = 1; // burada neden counter'a 1 verdik?

printf("Tabanı girin: ");
scanf("%d", &taban); // burada ve diğer scanf'lerde anlamadığım yer şu "%d" yi neden kullanıyoruz? sayıyı okuması sanırım ama neden %d ?

printf("Ussu girin: ");
scanf("%d", &us);

product = taban

while (counter < us) {
product = product * taban
counter = counter + 1
}

printf("Sonuc: " "%d\n", product);

system("PAUSE");
return 0;
}

Şimdiden zaman ayırdığınız için çok teşekkür ederim.

İlk sorunla başlayayım.

1-) Eğer counter değişkenine herhangi bir deger atamadan kullanmaya kalkışırsan hata alırsın, çünkü değişkeni oluşturduğun zaman bellekte bir bölüm açılır ve bu bölümün içi tamamen boştur yani null dur. Genelde buralarda yapılan hatalarda bilgisayarın tanımlanan değişkenin ilk değerini eğer hiç bir değer atanmamışsa 0 kabul edeceği yöndedir ancak bu yanlıştır.

Yani sen while(counter<us) yazıpta counter değişkenine bir değer atamamış olsaydın bilgisayar burada şöyle düşünürdü " 'hiçbirşey' us değişkeninden küçük olduğunda şu komutları çalıştır." Yani tamamen hatalı bir kullanım olurdu.

2-)%d kullanımını derste görmüş olman gerekiyordu. Kısaca değineyim %d, %lf, %c gibi ifadeler genellikle scanf ve printf fonksiyonlarıyla birlikte kullanılır. Amaçları alınacak veya yazılacak şeyin hangi tipte olduğunu belirtmektir. Sen %d dediğin zaman bir tamsayı okuyacağım veya tamsayı yazdıracağım demektir. Reel sayılar içinse %lf veya %f kullanılır bunlar böyle devam eder. Daha detaylı kullanımını buradan öğrenebilirsin.Link.


1. sorunun cevabı kısmen yanlış verilmiş.
"Eğer counter değişkenine herhangi bir deger atamadan kullanmaya kalkışırsan hata alırsın"
Bir değişkene değer vermeden yani ilklendirmeden tanımlarsan hata almazsın ve kullanabilirsin. Tabi derleyiciye göre farklılık gösterebilir.

"değişkeni oluşturduğun zaman bellekte bir bölüm açılır ve bu bölümün içi tamamen boştur yani null dur."
Değişkenin içinde çöp değer olur. Yani o an çalışan programların oluşturduğu değerlerden rastgele birini atar o bölüme.

int counter; şeklinde tanımlasaydın counter'ın içinde 3124123 de olabilirdi 1 de olabilirdi. Yani ne geleceğini bilemezsin o yüzden ilklendirilir.
Genelde değişkenler tanımlanırkan 0 atanarak ilklendirilir.
int taban = 0; // şeklinde


Bu mesaja 1 cevap geldi.
H
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: -Source-

quote:

Orijinalden alıntı: Honey Badger

quote:

Orijinalden alıntı: koline

Arkadaşlar selamlar,

Öncelikle belirteyim ki C'de yeniyim. Herangi bir yazılım geçmişim olmadığından dolayı haliyle zorlanıyorum. Size bir sorum olacak, kaynaklarda da anlatılıyor ama anlayamıyorum bir türlü. Belki siz daha açıklayıcı ve anlayacağım gibi anlatabilirsiniz. Finalim var ona hazırlanıyorum, algoritma'da ve akış şeması çıkarmada oldukça kötüyüm. akış şemasını çıkarmada bana yardımcı olabilecek var mı acaba?

Sorularımı programda comment ( // ) olarak yazdım.

Aşağıdaki program üslü sayının sonucunu veriyor (taban ve üs girilerek):

#include <stdio.h>

int main (void)

{
int taban;
int us;
int product;
int counter = 1; // burada neden counter'a 1 verdik?

printf("Tabanı girin: ");
scanf("%d", &taban); // burada ve diğer scanf'lerde anlamadığım yer şu "%d" yi neden kullanıyoruz? sayıyı okuması sanırım ama neden %d ?

printf("Ussu girin: ");
scanf("%d", &us);

product = taban

while (counter < us) {
product = product * taban
counter = counter + 1
}

printf("Sonuc: " "%d\n", product);

system("PAUSE");
return 0;
}

Şimdiden zaman ayırdığınız için çok teşekkür ederim.

İlk sorunla başlayayım.

1-) Eğer counter değişkenine herhangi bir deger atamadan kullanmaya kalkışırsan hata alırsın, çünkü değişkeni oluşturduğun zaman bellekte bir bölüm açılır ve bu bölümün içi tamamen boştur yani null dur. Genelde buralarda yapılan hatalarda bilgisayarın tanımlanan değişkenin ilk değerini eğer hiç bir değer atanmamışsa 0 kabul edeceği yöndedir ancak bu yanlıştır.

Yani sen while(counter<us) yazıpta counter değişkenine bir değer atamamış olsaydın bilgisayar burada şöyle düşünürdü " 'hiçbirşey' us değişkeninden küçük olduğunda şu komutları çalıştır." Yani tamamen hatalı bir kullanım olurdu.

2-)%d kullanımını derste görmüş olman gerekiyordu. Kısaca değineyim %d, %lf, %c gibi ifadeler genellikle scanf ve printf fonksiyonlarıyla birlikte kullanılır. Amaçları alınacak veya yazılacak şeyin hangi tipte olduğunu belirtmektir. Sen %d dediğin zaman bir tamsayı okuyacağım veya tamsayı yazdıracağım demektir. Reel sayılar içinse %lf veya %f kullanılır bunlar böyle devam eder. Daha detaylı kullanımını buradan öğrenebilirsin.Link.


1. sorunun cevabı kısmen yanlış verilmiş.
"Eğer counter değişkenine herhangi bir deger atamadan kullanmaya kalkışırsan hata alırsın"
Bir değişkene değer vermeden yani ilklendirmeden tanımlarsan hata almazsın ve kullanabilirsin. Tabi derleyiciye göre farklılık gösterebilir.

"değişkeni oluşturduğun zaman bellekte bir bölüm açılır ve bu bölümün içi tamamen boştur yani null dur."
Değişkenin içinde çöp değer olur. Yani o an çalışan programların oluşturduğu değerlerden rastgele birini atar o bölüme.

int counter; şeklinde tanımlasaydın counter'ın içinde 3124123 de olabilirdi 1 de olabilirdi. Yani ne geleceğini bilemezsin o yüzden ilklendirilir.
Genelde değişkenler tanımlanırkan 0 atanarak ilklendirilir.
int taban = 0; // şeklinde

Evet şimdi denedim null olarak değil de dediğiniz gibi tamamen rastgele bir değer çıkıyor.


Bu mesaja 1 cevap geldi.
E
13 yıl
Binbaşı

selamlar, c# ta yeni sayılırım. bir ödev var. ödev şu textbox'tan aldığımız bir sayının 11'e tam bölünüp böülenemdiğini bulacağız.

11'e bölünebilme kuralı, sayının son rakamından başlayarak bunları+,-,+,- olarak işaretlendirmek ve sonrasında bunları toplama..eğer sıfır ve 11 in katıs ise tam bölünür.

nasıl yapabiliriz. aldığım string uzunluguna göre dizi yaptım. ama sndan başlayıp nasıl bir for döngüsü ile +,- olarak alıancak bunlar.. şimdiden teşerkküler


Bu mesaja 2 cevap geldi.
-
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: espanolun

selamlar, c# ta yeni sayılırım. bir ödev var. ödev şu textbox'tan aldığımız bir sayının 11'e tam bölünüp böülenemdiğini bulacağız.

11'e bölünebilme kuralı, sayının son rakamından başlayarak bunları+,-,+,- olarak işaretlendirmek ve sonrasında bunları toplama..eğer sıfır ve 11 in katıs ise tam bölünür.

nasıl yapabiliriz. aldığım string uzunluguna göre dizi yaptım. ama sndan başlayıp nasıl bir for döngüsü ile +,- olarak alıancak bunlar.. şimdiden teşerkküler

Sayımız 152347 olsun. Ve senin bunu aşağıdaki gibi diziye attığını varsayıyorum.
Kod açık ama flag kısmını açıklayım.
Döngüye ilk girdiğinde flag = false bu yüzden else düşecek ve flag'ı true yapacak. Yani 7'e bir nevi + koymuş olduk. Şimdi sıra 4'e - koymada. 2. döngüde flag = true bu yüzden if'e girdik içindeki değeri -1 ile çarptık. Böylece bir onu da - ledik ve flag'ı false yaptık. Bir sonraki for'un dönüşünde else düşüp 3'ü + olarak işaretmesi için. Ve böyle devam ediyor.
Sonra foreach ile dizideki sayıları toplattım. Sen sonra bu toplamın 11 in katı olup olmadıgına bakacaksın.
int[] dizi = new int[6] {1,5,2,3,4,7 };
bool flag = false; // False ise + gelecek, True ise -

for(int i = dizi.Length - 1; i >= 0; i--)
{
if(flag)
{
dizi *= -1;
flag = false;
}
else
flag = true;
}

int toplam = 0;
foreach(int sayi in dizi)
toplam += sayi;


Bu mesaja 2 cevap geldi.
E
13 yıl
Binbaşı

teşekkürler, bir ikiz düzeltme ile işimi çözdüm...
bir soru daha var aslında..

soru: textbox'tan bir string alıyoruz...örneğin KELEBEK olsun..(listboxa bunun her karakterini sırayla atıyoruzz ama snucta bir kelebek şekl çıkacak biçimde..altta görüntü ekledim.
kelebegin sol kanadını yaptım ama sağ kanadını yapamadım.



< Resime gitmek için tıklayın >


Bu mesaja 2 cevap geldi.
G
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: espanolun

teşekkürler, bir ikiz düzeltme ile işimi çözdüm...
bir soru daha var aslında..

soru: textbox'tan bir string alıyoruz...örneğin KELEBEK olsun..(listboxa bunun her karakterini sırayla atıyoruzz ama snucta bir kelebek şekl çıkacak biçimde..altta görüntü ekledim.
kelebegin sol kanadını yaptım ama sağ kanadını yapamadım.



< Resime gitmek için tıklayın >

Sol kanadin nerede goster icine ekleniverir sag kanat :)


Bu mesaja 1 cevap geldi.
E
13 yıl
Binbaşı

quote:

Orijinalden alıntı: garui

quote:

Orijinalden alıntı: espanolun

teşekkürler, bir ikiz düzeltme ile işimi çözdüm...
bir soru daha var aslında..

soru: textbox'tan bir string alıyoruz...örneğin KELEBEK olsun..(listboxa bunun her karakterini sırayla atıyoruzz ama snucta bir kelebek şekl çıkacak biçimde..altta görüntü ekledim.
kelebegin sol kanadını yaptım ama sağ kanadını yapamadım.



< Resime gitmek için tıklayın >

Sol kanadin nerede goster icine ekleniverir sag kanat :)

alttaki kod ile sol kanadı oldu ama sağ olmadı

  
private void btnKelebek_Click(object sender, EventArgs e)
{
string yazi = txtYazi.Text;
string c = "";

for (int i = 0; i < yazi.Length; i++)
{
for (int j = 0; j <= i; j++)
{
c = yazi.Substring(0, j + 1).ToString();
}

lsbListe.Items.Add(c);

string[] ters1 = new string[yazi.Length];
for (int k = 0; k < yazi.Length; k++)
{
ters1[k] = c;
}
c = "";
}


for (int i = 0; i < yazi.Length; i++)
{
for (int j = 0; j < yazi.Length-i; j++)
{
c = yazi.Substring(0, j).ToString();
}
lsbListe.Items.Add(c);
c = "";
}
}


Bu mesaja 1 cevap geldi.