atoi kullanımında hata!

cagataymy
09-10-2008, 19:19   |  #1  
OP Yeni Üye
Teşekkür Sayısı: 0
20 mesaj
Kayıt Tarihi:Kayıt: Eyl 2008

Arkadaşlar aşağıdaki programda girilen bir sayiyi (katar olarak) ve tabanını  aldıktan sonra bu sayının 10 luk tabandaki değerini hesaplamaya calıştım.
   Ama atoi nin kullanımında hata veriyor
   turbo c ve dev c++ da hata veriyor
   yardımcı olursanız sevinirim...

   Katar olarak kullanmaktaki amacım sayının kaç basamaklı olduğunun başta bilinmeyişi...

#include<stdio.h>
#include<stdlib.h>
int main(void)
{

         int dizi[10];
         int toplam=0;
         int carp=1;
         int i,k,taban;

         printf("sayiyi giriniz"); //sayiyi katar olrk al
         scanf("%s",dizi);

         printf("\ntabanini giriniz...");
         scanf("%d",&taban);

         for(i=0;dizi!='\n';i++); //boyut hesaplaniyor

         for(k=i;k>=0;k--)     
                {                          
                    toplam+=atoi(dizi)*carp;
                    carp*=taban;
                }

                printf("\n\n%d",toplam);

return 0;
}

cagataymy
13-10-2008, 16:33   |  #2  
OP Yeni Üye
Teşekkür Sayısı: 0
20 mesaj
Kayıt Tarihi:Kayıt: Eyl 2008

yardım yok mu arkadaşlar

Kapalı Hesap (79876)
15-10-2008, 20:55   |  #3  
Kapalı Hesap
Teşekkür Sayısı: 0
1,252 mesaj
Kayıt Tarihi:Kayıt: Tem 2008
cagataymy
scanf("%s",dizi);
scanf("%s",&dizi); olmalı unutmuşsun. Nasıl bir hata verdiğinide yazarsan. Birde atoi(); function u ne işe yarıyor çokartamadımda Cool.

Son Düzenleme: Kapalı Hesap (89055) ~ 15 Ekim 2008 20:55
cagataymy
17-10-2008, 15:19   |  #4  
OP Yeni Üye
Teşekkür Sayısı: 0
20 mesaj
Kayıt Tarihi:Kayıt: Eyl 2008

>>atoi fonksiyonu "123" diye bir string girdin diyelim bunu sayısal ifadeye çevirir ve onla matematiksel işlem yapmanı sağlar.Ama burda olmadı bir türlü.
<<scanf da bi problem yok stringleri okuturken & koymasakta oluyor...
hata vermemesi lazım ama karakteri sayıya çevirmiyor....

cagataymy
17-10-2008, 15:23   |  #5  
OP Yeni Üye
Teşekkür Sayısı: 0
20 mesaj
Kayıt Tarihi:Kayıt: Eyl 2008

can not convert "int" to "cons char *" in fo-unkcion main,,,,
type mismatch in parameter "_s" is call to 'atoi(const char *)'in function main,,,,
hataları veriyor

muh34
25-10-2010, 05:59   |  #6  
Yıllanmış Üye
Teşekkür Sayısı: 0
215 mesaj
Kayıt Tarihi:Kayıt: Eki 2010

Bakın atoi() fonksiyonunun prototipi -> int atoi(const char *); seklindedir.Dolayısıyla dizinin herhangi bir degeri degil,kendisini almalıdır.Ayrıca bir diziyi katar olarak kullanabilmek icin veri tipini 'char' seklinde deklare etmeniz gerekir.Bir katarı atoi() fonksiyonunu kullanarak 10'luk sistemde,yani decimal sistemde belirtmeniz icin dongu(loop) kullanmanıza gerek yoktur.atoi() fonksiyonunu bir kereye mahsus kullanmanız amacınıza ulasmaya yetecektir.Ote yandan bir sayının farklı taban sekillerinde goruntulemek,farklı algoritmik yaklasımlar ile mumkun olacaktır.Ornegin bir binary sistemde sayılar 2'nin bolumleri ile ifade edilir.O halde atoi() fonksiyonunun kullanımı ile ilgili nihayi kod asagıdaki gibi olmalıdır.
 
#include <stdio.h>
#include <stdlib.h>
int main()  {
char dizi[10];
printf("sayiyi giriniz");
scanf("%s",dizi);
int sonuc=atoi(dizi);
printf("Girilen Katar Sayisal Degere Donusturuldu:%d\n",sonuc);
system("pause");
return 0;
}
Başarılar