Jump to content

mia voitheia se c++


xaritos_
 Κοινοποίηση

Recommended Posts

Και με το παρακατω δε λυνεται;

 

#include <stdio.h>

int i, pinakas[15];

main()
{
printf("Dwse mou 15 arithmous: \n");
for (i=0; i<15; i++)	
scanf("%d",&pinakas[i]);
for (i=0; i<15; i++) 
	if (pinakas[i]%2==0) {
		printf("O prwtos artios arithmos einai o %d kai vrisketai sth thesh %d.\n", pinakas[i], i);
	break; }
	if (pinakas[i]%2!=0) 
		printf("Den exoun dothei perittoi arithmoi!\n");
}

Link to comment
Share on other sites

Αν μιλάμε για c, η ANSI c, δεν υποστηρίζει boolean τύπους. Αν πάλι μιλάμε για c++ όπως αναφέρθηκε, είναι βέβαιο ότι τα scanf και printf γίνονται δεκτά;; Από τον καθηγητή εννοώ... Όχι από τον compiler. Στη c++ συνήθως προτιμούμε streams.

 

 

Όσο για το πώς θα τερματίσει το πρόγραμμα, εγώ θα έκανα απλά ένα return μόλις έβρισκα τον πρώτο άρτιο. Όχι ότι τα άλλα δε θα δουλέψουν εξίσου καλά. Απλά εγώ το θεωρώ λίγο πιο καθαρό προγραμματιστικό στυλ αν το κάνεις με return.

Εγκαταλείψτε την ελπίδα για ένα καλύτερο παρελθόν!
Link to comment
Share on other sites

Αν μιλάμε για c, η ANSI c, δεν υποστηρίζει boolean τύπους. Αν πάλι μιλάμε για c++ όπως αναφέρθηκε, είναι βέβαιο ότι τα scanf και printf γίνονται δεκτά;; Από τον καθηγητή εννοώ... Όχι από τον compiler. Στη c++ συνήθως προτιμούμε streams.

 

 

Όσο για το πώς θα τερματίσει το πρόγραμμα, εγώ θα έκανα απλά ένα return μόλις έβρισκα τον πρώτο άρτιο. Όχι ότι τα άλλα δε θα δουλέψουν εξίσου καλά. Απλά εγώ το θεωρώ λίγο πιο καθαρό προγραμματιστικό στυλ αν το κάνεις με return.

Για C μιλάμε σίγουρα. Η C99 υποστηρίζει boolean (However, C99 does define a standard Boolean type, as long as you include <stdbool.h>). Πέρασε πάντως από τον compile και χωρίς το stdbool...

 

Σχετικά με το προγραμματιστικό έχεις δίκιο αλλα για το επίπεδο του μαθήματος/σχολής/φοιτητών αρκεί. Μην το ψάχνεις παρακάτω :p

 

Νομίζω πάντως πως η for μέσα σε for θα δουλέψει μεν, αλλά μου φαίνεται περιττό το να σκανάρει τόσες φορές τον πίνακα χωρίς λόγο. Προτιμότερο είναι 15x2 παρά 15x(1+2+3+4+5+6...15).

Link to comment
Share on other sites

shmera to mesimeri pou kseplokara vrika kai ego kai alli lisi kai pio sosti apo tin xthesini,to parakato:

include<stdio.h>

main()

{

int i,pin[15],s;

for(i=0;i<15;i++)

{

printf("\n dose ton[%d]o arithmos tou pin[%d]=",i+1,i);

scanf("%d",&pin);

}

i=0;

s=0;

while(i<15&&s==0)

{

if(pin%2==0){s=i;}

else{i++;}

}

if(s!=0)

{

printf("\n o artios arithmos brethike,einai o pin[%d]=%d",s,pin);}

else { printf("\n o artios arithmos den brethike pouthena");}

getchar();

getchar();

}

euxaristo gia to endiaferon pantos.

Link to comment
Share on other sites

Αν κατάλαβα σωστά απ' την εκφώνηση (1η δημοσίευση), σε νοιάζει να βρείς τον πρώτο άρτιο. Γιατί διατρέχεις ολόκληρο τον πίνακα;

Επίσης, θα μπορούσες να το υλοποιήσεις και με έναν βρόχο :)

Link to comment
Share on other sites

Αν κατάλαβα σωστά απ' την εκφώνηση (1η δημοσίευση), σε νοιάζει να βρείς τον πρώτο άρτιο. Γιατί διατρέχεις ολόκληρο τον πίνακα;

Επίσης, θα μπορούσες να το υλοποιήσεις και με έναν βρόχο :)

 

Όταν βρει τον πρώτο άρτιο το s αλλάζει τιμή και άρα το while τερματίζεται. Όχι ξεκάθαρο με την πρώτη ματιά, ε; Γι' αυτό πριν πρότεινα return στο σημείο εκείνο. Ή τουλάχιστον το s να έχει ένα πιο αντιπροσωπευτικό όνομα. (πχ. found)

 

Edit: Να και μια δική μου πρόταση...

 

#include <stdio.h>
int main(void)
{
int i, array[15];
for(i=0;i<15;i++)
{
	printf("Give a number for position #%d:   ", i+1);
	scanf("%d",&array[i]);
	printf("\n");
}

for(i=0; i<15; i++)
	if(array[i]%2==0) 
	{
		printf("An even number found at position #%d\n\n", i+1);
		return 0;
	}

printf("No even number found within the array!\n\n");
return 0;
}

Εγκαταλείψτε την ελπίδα για ένα καλύτερο παρελθόν!
Link to comment
Share on other sites

Και μια έκδοση Beta 2:

 

 

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>

void fillArray(int *array, int size)
{
   int i, j, length;
   char buffer[40];

   for(i=0; i<size; i++)
   {
       for(;;)
       {
           printf("Give an integer for position #%d:   ", i+1);
           scanf("%s",&buffer);
           length=strlen(buffer);
           for(j=0; j<length; j++) //checking that user has typed only digits.
           {
               if (!isdigit(buffer[j])) break;
           }
           if (j>=length) break; //input is accepted.
           printf("Integers should consist only of digits [0-9]!!\n"); //input is inappropriate
       }
       array[i]=atoi(buffer);        
       printf("\n");
   }
}

int findFirstEven(int *array, int size)
{
   int i;

   for(i=0; i<size; i++)
       if(array[i]%2==0) return i;
   printf("No even number found within the array!\n\n");
   return 0;
}


int main(void)
{
   int found, array[15];

   fillArray(array, 15);
   found=findFirstEven(array, 15);
   if(found)  printf("An even number found at position #%d\n\n", found);
   else printf("No even number found within the array!\n\n");
}

Εγκαταλείψτε την ελπίδα για ένα καλύτερο παρελθόν!
Link to comment
Share on other sites

epeidei vlepo endiaferon as thesoume kai ta eksis to idio me to proigoumeno programma apla tora na vriskei kai ton proto peritto.Se ena allo pinaka me50 arithmous na mas vriskei posoi artioi einai monadikoi kai na topothetountai se pinaka!!!!! as riksei o kathenas tin protasi tou
Link to comment
Share on other sites

Τώρα θες να ψαχτείς περισσότερο ή θες να σου λύσουμε και την επόμενη άσκηση; :rolleyes:

Σε κάθε περίπτωση καλύτερα να κάτσεις να το κάνεις μόνος σου για να προπονείσαι και λίγο ;)

Link to comment
Share on other sites

Όπως έχω ξαναγράψει σε παρόμοιες περιπτώσεις, εδώ είμαστε για να λύσουμε απορίες και πρόβληματα, όχι όμως και ολόκληρες ασκήσεις ή θέματα. Οι διευκρινήσεις που δόθηκαν είναι αρκετές, οπότε το παρόν topic κλειδώνεται.
Link to comment
Share on other sites

Επισκέπτης
This topic is now closed to further replies.
 Κοινοποίηση

×
×
  • Create New...